5 .NET HTTP 库 - Microsoft.Net.Http 适合哪里?

Posted

技术标签:

【中文标题】5 .NET HTTP 库 - Microsoft.Net.Http 适合哪里?【英文标题】:5 .NET HTTP libraries - where does Microsoft.Net.Http fit in? 【发布时间】:2016-10-17 15:14:50 【问题描述】:

我知道以下 HTTP 库:

    HttpWebRequest 网络客户端 System.Net.Http.HttpClient Windows.Web.Http.HttpClient Microsoft.Net.Http

前 3 个很容易放置:WebClient vs HttpClient vs HttpWebRequest

第四个也没有那么复杂:Demystifying HttpClient APIs in the Universal Windows Platform

但是 Microsoft.Net.Http 适合在哪里呢?

【问题讨论】:

它是 Microsoft HTTP 客户端库的一部分,请看这里nuget.org/packages/Microsoft.Net.Http @Nkosi,这并没有真正告诉我它与其他 API 的关系。 【参考方案1】:

所以根据目前为止引用的所有反馈和文章:

    HttpWebRequest - 原始 HTTP API。提供低级控制。 WebClient - HttpWebRequest 之上的抽象层。使用更简单,性能稍慢。 System.Net.Http.HttpClient - HttpWebRequest 之上的抽象层,提供比前两个选项更多的功能。直到 4.0.0.0 版本,它只是用于完整的 .NET,因为 4.1.0 版本支持 .NET Core Windows.Web.Http.HttpClient - 来自多种语言(C#、VB、C++、javascript)的 HTTP API 的整合。主要用于多语言Windows Store App开发,只需要引用一个API。 Microsoft.Net.Http - 替换 System.Net.Http.HttpClient 2.0.2 或更早版本的 HTTP API。这用于支持较旧的 .NET 应用程序。

【讨论】:

HttpClient 不是 HttpWebRequest 的替代品,它使用 HttpWebRequest。它是 WebClient 的替代品。 WebClient 简单易用,仅用于下载。更难指定标头或发出 POST 请求。创建 HttpClient 是为了简化 REST 调用 @Panagiotis Kanavos 感谢您的更正,我已相应更新。【参考方案2】:

System.Net.Http vs Microsoft.Net.Http:取决于版本。旧的 System.Net.Http 包(2.0 包)是旧包,已弃用,取而代之的是 Microsoft.Http.Net

所以本质上 3 和 5 是相同的。它是异步 http 客户端,可让您发出异步 http 请求,与 WebClient 相比,它确实可以在多线程环境中工作。

【讨论】:

如果 Windows.Web.Http.HttpClient (#4) 整合了所有适用于 Windows 应用程序语言(C#、VB、C++、JavaScript)的 Http API 并且 #5 替换了 #3,那么 Windows.Web.Http .HttpClient 也应该更新。 . Windows.Web.Http.HttpClient 适用于 Windows 通用应用程序。最新版本的 System.Net.Http 专用于 .NET Core。旧版本的 System.Net.Http(用于 FULL .NET Framework)现在已弃用,您应该使用 Microsoft.Net.Http。

以上是关于5 .NET HTTP 库 - Microsoft.Net.Http 适合哪里?的主要内容,如果未能解决你的问题,请参考以下文章

VS在.NETFramework升级时遇到类库冲突如何解决

使用没有控件的 Microsoft .NET 图表控件库生成图像

Microsoft 防跨站点脚本库AntiXSS Library

带有 ASP.NET MVC 5 应用程序的 Microsoft 身份验证循环

microsoft net 如果卸载了 怎么办呢

Microsoft 防跨站点脚本库AntiXSS Library v4.2.1