Architecture 从NuGet.org或我们自己的NuGet服务器获取NuGet?

Architecture 从NuGet.org或我们自己的NuGet服务器获取NuGet?,architecture,nuget,nuget-server,Architecture,Nuget,Nuget Server,我们正在运行一个TeamCity持续集成系统,该系统有自己的内置NuGet服务器 我们有自己的专有NuGet软件包发布到那里。我们创建的其中一个NuGet包是一个包含所有第三方DLL的NuGet 其中一些第三方DLL可通过以下方式获得: 在架构决策方面,有什么更好的解决方案? 从中取出当前可用的所有第三方DLL 我们自己的第三方Nuget,因此我们现在在 我们产品的制造 保留我们当前创建的第三方NuGet,这意味着我们确切地知道我们的产品中有哪些DLL 我们为我们的产品实现了第二个选项,但略有不

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

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

其中一些第三方DLL可通过以下方式获得:

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

  • 从中取出当前可用的所有第三方DLL 我们自己的第三方Nuget,因此我们现在在 我们产品的制造

  • 保留我们当前创建的第三方NuGet,这意味着我们确切地知道我们的产品中有哪些DLL


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

    原因如下:

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

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

    这也是我想到的原因,但让我感到奇怪的是,这里所有的(高级)架构师都主张将我们所有的第三方DLL从Nuget.org中移除。我认为在网络中移动任何东西都比从互联网上下载(nuget.org)更安全、更快(高级)架构师的观点是什么?nuget.org是安全的。我认为这一讨论没有真正的答案。书中有一些有趣的想法。然而,对于本地服务器,另一个理由是您提供了一组预定义的版本。如果有人必须向新项目中添加第三方库,则必须始终仔细查找整个产品中使用的版本。如果只有很少的版本可用,那么在我的竞争中,广泛混合版本的风险更低。