System.Net.Http.HttpClient vs Windows.Web.Http.HttpClient – 主要区别是什么?
在为Windows开发.NET 4.5桌面应用程序时,我已经习惯使用System.Net.Http.HttpClient
进行与后端Web API的所有通信。 我现在正在开发一个Windowsapp store应用,并注意到Windows.Web.Http.HttpClient
的存在。 我已经找到了两个客户之间的主要区别但没有运气的信息。
从MSDN我知道我应该开始在我的Windowsapp store应用中使用Windows.Web.Http.HttpClient
,因为可能会从API中删除System.Net.Http.HttpClient
:
注意 System.Net.Http和System.Net.Http.Headers命名空间可能在Windows的未来版本中不可用,以供Windowsapp store应用使用。 从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
?
非常感谢官方文档支持的答案。
没有太多可以找到它。 我想到的一些事情:
- 新API与某些低级Windowsfunction没有依赖关系,就像当前的API一样。
- 新API能够更好地处理与HTTP协议相关的新方法,如WebSockets等。
一些有用的信息可以在这篇博文中找到, 该post也引用了这个Buildvideo 。 他们谈论更好的缓存控制,以及添加filter进行身份validation,轻松访问cookie,重新连接等的方法。
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
。 避免将System.IO.Stream
转换为IInputStream
或IOutputStream
以及System.Array
转换为Windows.Storage.Streams.IBuffer
的.NET扩展可以在某些情况下提高性能并节省资源。 - Windows.Web.Http具有新function,例如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
隔离身份validation标头和凭据( 示例 ) - 每个
HttpClient
隔绝的曲奇饼容器 - 不缓存HTTP响应,因此后续请求永远不会来自缓存,这是服务器没有设置正确的
Cache-Control
标头的常见问题( 示例 ) - 适用于
System.Net.NetworkCredential
- 根据
†对于Windows Universal Projects(UWP),System.Net.Http是Windows.Web.Http之上的包装器,如此处所述。
进一步阅读: 揭开通用Windows平台中的HttpClient API的神秘面纱