【问题标题】:Should I use the System.Net.Http Nuget Package?我应该使用 System.Net.Http Nuget 包吗?
【发布时间】:2018-07-05 14:01:41
【问题描述】:

.NET Framework 4.6.2 似乎内置了 System.Net.Http 程序集/命名空间。还有一个同名的 Nuget 包可以安装。

作为一般原则,Nuget 包是否可以替换(例如更新)已安装框架中包含的程序集?

具体来说,我应该使用Nuget版本还是System.Net.Http的框架版本?

【问题讨论】:

  • “作为一般原则,Nuget 包可以替换(例如更新)已安装框架中包含的程序集吗?”当然,是的。除非您有充分的理由,否则您应该坚持使用已安装的版本。 NuGet 版本在那里,因为其他包需要它。仅当您确实需要其他软件包时,才应包括该软件包。举个例子来讨论太宽泛了,但是你可以在互联网上看到大量与这个包相关的错误,这些错误显示了微软的糟糕设计,事与愿违。
  • 作为一般原则,在 StackOverflow 上寻求书籍、软件库或其他非现场资源的推荐被认为是题外话。此外,由于您只能标记一个已接受的答案,因此您不应在一个 SO 问题中问两个问题...

标签: c# .net nuget httpclient


【解决方案1】:

通常,您可以将框架库替换为 NuGet 中的一个。如果您有特定的理由,我建议您这样做。例如,如果您需要错误修复、新 API 或利用性能改进。

具体来说,使用 System.Net.Http 取决于您的场景。如果您每分钟进行 1000 个 http 调用,请使用 NuGet 中的最新调用。如果您每小时打 2 个电话并且没有遇到任何问题,请坚持使用框架版本。这两个数字之间,取决于。

【讨论】:

    【解决方案2】:

    可能不会,尽可能使用框架内置版本,如下所示:

    <Reference Include="System.Net.Http" />
    

    如果您依赖的其他东西(例如:另一个 NuGet 包)需要 NuGet 版本,那么它将自动被拉入,并且上述参考将使用可用的任何一个。

    正如the .NET team所说:

    在大多数情况下,我们不建议人们再使用单独的 System.Net.Http NuGet 包。

    引入了System.Net.Http NuGet 包以提供对框架内置版本的快速跟踪/OOB 更新,特别是性能改进。虽然这些改进通常会在新的 .NET Framework 版本中进行,但这里的想法是开发人员可以使用 NuGet 包来获得更新的好处,而无需重新定位到更新的框架。

    事实证明,由于各种原因,这是一项极其复杂的工作,特别是因为 .NET Framework 本身的其他部分使用了System.Net.Http。当集成到下游应用程序和实际生产工作负载中时,这会导致问题。展望未来,.NET 团队决定不再发布任何类似的 OOB 包,尽管它们仍然支持和更新现有的包。

    进一步阅读:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-17
      • 2012-05-28
      • 1970-01-01
      • 2016-07-26
      • 2015-10-08
      • 2011-05-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多