从 Nuget.org 或我们自己的 Nuget 服务器中提取 NuGet?
Pull NuGet from Nuget.org or from our own Nuget Server?
我们是 运行 TeamCity 持续集成系统,它有自己的内置 NuGet 服务器。
我们有自己的专有 NuGet 包发布到那里。我们创建的其中一个 NuGet 包是一个包含我们所有第三方 DLL 的 NuGet。
其中一些第三方 DLL 可通过 https://www.nuget.org/ 获得。
在架构决策方面,什么是更好的解决方案?
把目前可以使用的第三方DLL全部去掉
我们自己的第三方 Nuget,因此我们现在从托管在 nuget.org 的 Nugets 中提取 DLL
构建我们的产品。
保留我们创建的当前第三方 NuGet,这意味着我们确切地知道我们的产品中正在运行哪些 DLL。
我们为我们的产品实施了第二个选项,但略有不同:我们使用的每个 third-party 库都有一个单独的 NuGet 包。
这样做的原因是:
- 我们可以独立的把一个third-party库的新版本放到我们公司的NuGet服务器上。因此,不同的产品可以提取不同的 third-party 库组合。
- 无需为 third-party 库的每次更改重新部署一个大包。这可以节省服务器上的磁盘 space,这可能会成为大量 third-party 库的问题。
我们不使用 nuget.org 的原因也是 two-fold:
- 首先是性能:通过以太网从本地服务器拉取比通过互联网拉取快得多。
- 其次(也是更重要的一点),它是安全的:我们永远无法控制谁在将什么包上传到 nuget.org。因此,有人可以交换带有恶意版本的包,而我们会将其部署到我们的产品中。
我们是 运行 TeamCity 持续集成系统,它有自己的内置 NuGet 服务器。
我们有自己的专有 NuGet 包发布到那里。我们创建的其中一个 NuGet 包是一个包含我们所有第三方 DLL 的 NuGet。
其中一些第三方 DLL 可通过 https://www.nuget.org/ 获得。
在架构决策方面,什么是更好的解决方案?
把目前可以使用的第三方DLL全部去掉 我们自己的第三方 Nuget,因此我们现在从托管在 nuget.org 的 Nugets 中提取 DLL 构建我们的产品。
保留我们创建的当前第三方 NuGet,这意味着我们确切地知道我们的产品中正在运行哪些 DLL。
我们为我们的产品实施了第二个选项,但略有不同:我们使用的每个 third-party 库都有一个单独的 NuGet 包。
这样做的原因是:
- 我们可以独立的把一个third-party库的新版本放到我们公司的NuGet服务器上。因此,不同的产品可以提取不同的 third-party 库组合。
- 无需为 third-party 库的每次更改重新部署一个大包。这可以节省服务器上的磁盘 space,这可能会成为大量 third-party 库的问题。
我们不使用 nuget.org 的原因也是 two-fold:
- 首先是性能:通过以太网从本地服务器拉取比通过互联网拉取快得多。
- 其次(也是更重要的一点),它是安全的:我们永远无法控制谁在将什么包上传到 nuget.org。因此,有人可以交换带有恶意版本的包,而我们会将其部署到我们的产品中。