你的位置:首页 > 软件开发 > ASP.net > 详解 UWP 中的两种 HttpClient API

详解 UWP 中的两种 HttpClient API

发布时间:2015-12-03 18:00:10
摘要: 本文为个人博客备份文章,原文地址:http://validvoid.net/demystifying-httpclient-apis-in-the-uwp/本文编译自微软 Building Apps for Windows 博客,原文地址:Demystifying Htt ...

详解 UWP 中的两种 HttpClient API

摘要: 本文为个人博客备份文章,原文地址:http://validvoid.net/demystifying-httpclient-apis-in-the-uwp/

本文编译自微软 Building Apps for Windows 博客,原文地址:Demystifying HttpClient APIs in the Universal Windows Platform。本文原文由 Windows 网络 API 组的 Program Manager Sidharth Nabar 撰写。


 

UWP (通用 Windows 平台) 应用开发者在构建通过 HTTP 与 Web 服务或服务器断点交互的应用时,有多种 API 可以选择。要在一个托管 UWP 应用中实现 HTTP 客户端角色,最常用也是推荐的两种 API 即 System.Net.Http.HttpClient 和Windows.Web.Http.HttpClient。 相对于 WebClient 以及 HttpWebRequest 等老旧过时的 API,应当优先选择上述两种 API(尽管出于向后兼容的考虑, HttpWebRequest 的一个小子集在 UWP 中仍然可用)。

很多开发对于 UWP 中的上述两个 API 有着功能异同、如何选择等疑问。本文旨在解答这些疑问并阐明两个 API 各自的用途。

概述

System.Net.Http.HttpClient 这一 API 在 .NET 4.5 中被首次引入,同时也有一个变体以 NuGet 包的形式为 .NET 4.0 以及 Windows Phone 8 Silverlight 应用提供支持。该 API 的目的在于提供一种比老旧的 HttpWebRequest API 更为简单明了的抽象层,以及更为弹性灵活的 HTTP 客户端角色的实现方法。例如,开发者可以通过其提供的链式自定义 handler,拦截每个请求或响应并实现自定义逻辑。直到 Windows 8.1 位置,该 API 的底层都是由纯 .NET 实现的。在 Windows 10 中,该 API 的 UWP 实现已经改为基于 Windows.Web.Http 和 WinINet HTTP 协议栈实现了。

另一方面,Windows.Web.Http.HttpClient API 则在 Windows 8.1 被引入,并同时可用于 Windows Phone 8.1。创建这一 API 的最大动因在于整合各种 Windows 应用开发语言可用的 HTTP API,使一种 API 能够提供这些语言各自 API 的全部特性。其中大部分基础 API 的设计均来源于 System.Net.Http,而其实现则是基于WinINet HTTP 协议栈。

在 Windows 商店应用中使用上述两种 API时,操作系统版本以及编程语言的支持情况如下:

API操作系统版本支持语言
System.Net.Http.HttpClientWindows, Windows Phone 8 以上仅限 .NET 语言
Windows.Web.Http.HttpClientWindows, Windows Phone 8.1 以上所有 Windows 商店应用语言

如何选择?

两种 API 在 UWP 中均可用,因而 HTTP 开发者面临的最大问题就是该在应用中选择二者中的哪一种。选择结果要依一些具体因素而定。

  1. 你是否需要整合原生 UI 以收集用户凭据、控制 HTTP 患侧读写行为或传递指定 SSL 客户端证书用于验证? 

    原标题:详解 UWP 中的两种 HttpClient API

    关键词:ie

ie
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。