【问题标题】:Pull NuGet from Nuget.org or from our own Nuget Server?从 Nuget.org 或我们自己的 Nuget 服务器中提取 NuGet?
【发布时间】:2018-08-02 20:34:12
【问题描述】:

我们正在运行一个 TeamCity 持续集成系统,它有自己的内置 NuGet 服务器。

我们将自己的专有 NuGet 包发布到那里。我们创建的其中一个 NuGet 包是包含我们所有第三方 DLL 的 NuGet。

其中一些第三方 DLL 可通过 https://www.nuget.org/ 获得。

在架构决策方面,什么是更好的解决方案?

  1. 取出当前可用的所有第三方 DLL 我们自己的第三方 Nuget,因此我们现在从 nuget.org 托管的 Nugets 中提取 DLL 构建我们的产品。

  2. 保留我们当前创建的第三方 NuGet,这意味着我们确切知道我们产品中的 DLL。

【问题讨论】:

    标签: architecture nuget nuget-server


    【解决方案1】:

    我们为我们的产品实现了第二个选项,但略有不同:我们使用的每个第三方库都有一个单独的 NuGet 包。

    原因如下:

    • 我们可以独立将新版本的第三方库放到我们公司的NuGet服务器上。因此,不同的产品可以拉取不同的第三方库组合。
    • 不需要为第三方库的每次更改重新部署一个大包。这样可以节省服务器上的磁盘空间,这可能会成为大量第三方库的问题。

    我们不使用 nuget.org 的原因也有两个:

    • 首先,它的性能:通过以太网从本地服务器拉取比通过互联网拉取要快得多。
    • 第二个(也是更重要的)安全性:我们永远无法控制谁将什么包上传到 nuget.org。因此,有人可以用恶意版本交换软件包,而我们会将其部署到我们的产品中。

    【讨论】:

    • 这也是我想到的原因,但奇怪的是,这里的所有(高级)架构师都主张将我们所有的第三方 DLL 从 Nuget.org 中提取出来。我认为将任何内容移到网络中会比从互联网 (nuget.org) 下载更安全、更快捷
    • (高级)建筑师的论点是什么?
    • NuGet.org 是安全的。
    • 我认为该讨论没有真正的答案。 this thread 中有一些有趣的想法。然而,对于本地服务器的另一个论点是您提供了一组预定义的版本。如果有人必须将第三方库添加到新项目中,则始终必须仔细查找整个产品中使用的版本。如果只有几个版本可用,我认为广泛混合版本的风险会更低。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 2015-12-29
    • 2016-02-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多