System.Net.Http.HttpClient vs Windows.Web.Http.HttpClient - 主要区别是什么?

Las*_*sen 33 .net c# dotnet-httpclient windows-store-apps

在为Windows开发.NET 4.5桌面应用程序时,我习惯使用System.Net.Http.HttpClient后端Web API进行所有通信.我现在正在开发一个Windows应用商店应用程序并注意到它的存在Windows.Web.Http.HttpClient.我已经找到了两个客户之间的主要区别但没有运气的信息.

从MSDN我知道我应该开始Windows.Web.Http.HttpClient在我的Windows应用商店应用中使用,因为System.Net.Http.HttpClient可能会从API中删除:

注意 System.Net.Http和System.Net.Http.Headers命名空间可能在Windows的未来版本中不可用,以供Windows应用商店应用使用.从Windows 8.1和Windows Server 2012 R2开始,使用Windows.Web.Http命名空间中的Windows.Web.Http.HttpClient和相关的Windows.Web.Http.Headers和Windows.Web.Http.Filters命名空间代替Windows运行时应用程序.

但除了这些信息之外,我很难弄清楚主要区别是什么,使用的主要好处是Windows.Web.Http.HttpClient什么?它添加了什么,我们还没有进入System.Net.Http.HttpClient

非常感谢官方文档支持的答案.

kie*_*wic 39

Windows.Web.Http是一种WinRT API,支持所有WinRT编程语言:C#,VB,C++/CX和JavaScript.这使选项能够以您选择的语言编写相同的代码.

System.Net.Http是一个.NET API,它仅适用于C#和VB开发人员.

Windows.Web.Http的优点

  • WinRT API使用本机代码编写,可以提高性能.
  • Windows.Web.Http位于常见的Windows HTTP堆栈之上,并重用其他Windows组件已在使用的资源.System.Net.Http是HTTP协议的单独实现,其他Windows组件不经常使用.因此,在某些情况下,您可以通过选择Windows.Web.Http来节省资源.
  • Windows.Web.Http与WinRT的类型,如更好的集成IInputStream,IOutputStream以及IBuffer.避免转换.NET扩展System.IO.StreamIInputStreamIOutputStreamSystem.ArrayWindows.Storage.Streams.IBuffer可以提高性能和节省资源在某些情况下.
  • Windows.Web.Http具有新功能,例如HTTP/2支持.
  • Windows.Web.Http是基于COM的,可以被任何理解COM的编程语言使用.

System.Net.Http的优点

  • System.Net.Http从Windows 8或.NET 4.5开始可用,Windows.Web.Http仅在Windows 8.1和Windows Phone 8.1之后可用.
  • 使用System.Net.Http将ASP.NET或Xamarin(可移植类库)移植到WinRT代码是很简单的
  • Windows 8和8.1项目或桌面项目:†
    • 根据HttpClient(示例)隔离身份验证标头和凭据
    • 被隔绝的曲奇饼容器 HttpClient
    • 不缓存HTTP响应,因此后续请求永远不会来自缓存,这是服务器未设置正确Cache-Control标头的常见问题(示例)
    • 适用 System.Net.NetworkCredential

†对于Windows通用项目(UWP),System.Net.Http是Windows.Web.Http的一种包装,如所描述这里.

进一步阅读:在通用Windows平台中揭开HttpClient API的神秘面纱


Pat*_*man 14

没有太多可以找到它.我想到的一些事情:

  • 新API与某些低级Windows功能没有依赖关系,就像当前的API一样.
  • 新API能够更好地处理与HTTP协议相关的新方法,如WebSockets等.

一些有用的信息可以在这篇博文中找到,该博客也引用了这个Build视频.他们谈论更好的缓存控制,以及添加过滤器进行身份验证,轻松访问cookie,重新连接等的方法.

  • 这很有道理.谢谢你分享你的想法.我也看到了构建视频的部分内容,我不得不承认,我无法理解MS如何花时间大肆宣传这个新客户端,然后不提供它与现有`System.Net.Http.HttpClient的不同之处.以及如何使用这组新功能.但无论如何,再次感谢. (2认同)