gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-29 04:09:24 31 4
gpt4 key购买 nike

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

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

Note The System.Net.Http and System.Net.Http.Headers namespace might not be available in future versions of Windows for use by Windows Store apps. Starting with Windows 8.1 and Windows Server 2012 R2, use Windows.Web.Http.HttpClient in the Windows.Web.Http namespace and the related Windows.Web.Http.Headers and Windows.Web.Http.Filters namespaces instead for Windows Runtime apps.

但除了这些信息之外,我很难弄清楚使用 Windows.Web.Http.HttpClient 的主要区别是什么以及主要好处是什么?它添加了哪些我们尚未在 System.Net.Http.HttpClient 中获取的内容?

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

最佳答案

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

System.Net.Http 是一个 .NET API,仅供 C# 和 VB 开发人员使用。

Windows.Web.Http的优势

  • WinRT API 是用 native 代码编写的,可转化为更好的性能。
  • Windows.Web.Http 位于通用 Windows HTTP 堆栈之上,并重用已被其他 Windows 组件使用的资源。 System.Net.Http 是 HTTP 协议(protocol)的单独实现,其他 Windows 组件不经常使用它。因此,在某些情况下,您可以通过选择 Windows.Web.Http 来节省资源。
  • Windows.Web.Http 与 IInputStreamIOutputStreamIBuffer 等 WinRT 类型有更好的集成。避免将 System.IO.Stream 转换为 IInputStreamIOutputStream 和将 System.Array 转换为 Windows.Storage.Streams.IBuffer 在某些情况下可以提高性能并节省资源。
  • Windows.Web.Http 具有新功能,例如HTTP/2 support .
  • 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 的 WinRT 代码移植到 ASP.NET 或 Xamarin(可移植类库)
  • Windows 8 和 8.1 项目或桌面项目:†
    • 每个 HttpClient ( example ) 都隔离身份验证 header 和凭据
    • 每个 HttpClient 隔离的 Cookie 容器
    • 不缓存 HTTP 响应,因此后续请求永远不会来自缓存,这是未设置正确 Cache-Control header (example) 的服务器的常见问题
    • 使用 System.Net.NetworkCredential

† 对于 Windows 通用项目 (UWP),System.Net.Http 是 Windows.Web.Http 之上的包装器,如 here 所述.

进一步阅读:Demystifying HttpClient APIs in the Universal Windows Platform

关于c# - System.Net.Http.HttpClient 与 Windows.Web.Http.HttpClient - 主要区别是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31291008/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com