System.Net.Http与Microsoft.Net.Http的当前状态

时间:2016-08-18 10:53:38

标签: c# nuget httpclient base-class-library

我对HttpClient的包装感到困惑。之前它作为Microsoft.Http.Net NuGet包的一部分分发,而System.Net.Http被认为是遗留的。现在看起来恰恰相反:所有平台都有一个新的System.Net.Http包,Microsoft.Net.Http暂时没有更新,根据微软开发团队的人员将被弃用

然后问题:

  • 我们可以用(最新的)Microsoft.Net.Http替换System.Net.Http NuGet包的依赖项吗?
  • 旧的.NET 4.0平台是否仍然使用Microsoft.Net.Http? 那么非Windows平台(iOS,Android)呢?新的System.Net.Http支持他们,但我记得Microsoft.Net.Http我必须另外安装Microsoft.Bcl.BuildMicrosoft.Bcl才能让跨平台的内容工作。 System.Net.Http并不依赖于它们。可以跳过Bcl包吗?
  • System.Net.Http缺少一些Http扩展方法,如SupportsPreAuthenticate,并且尝试调用这些方法会导致运行时错误(缺少方法)。我们该怎么处理这个?

1 个答案:

答案 0 :(得分:9)

这已经很长时间了并且仍然令人困惑。我自己看过这样的消息,但是现在看来System.Net.Http是正确的选择,至少对于Windows平台上的.NET而言没有外部依赖。

对于.NET Core,我使用了Microsoft.Net.Http,但确实需要Microsoft.BCL。除非您遇到问题,否则我建议保留遗留系统,特别是因为这些命名空间似乎是移动目标。

如果这对您来说不够混淆,System.Net.Http链接的HttpClient Sample会使用Windows.Web.Http!该实现适用于Windows应用商店应用。

也许明年这一切都会再次改变。