[转*译]Networking API Improvements in Windows 10
在当今,以云优先,移动优先技术为宗旨的时代下,大多数Apps都至少有一些与web服务或网络上其他设备的集成。这些包括应用程序,它获取天气在线内容,新闻或体育比赛的分数,媒体或下载的播客,甚至对等网络游戏、聊天或VoIP应用。这些应用程序通过使用各种各样的网络API来共同构建通用应用程序平台。
在windows 10中,我们的网络团队投入了大量努力改善开发人员在使用这些网络API时在功能和灵活性方面的运行速度和内存性能。在这篇博客文章,我们将讨论一些关键我们在这方面取得改进,并向你说明该如何在您自己的应用程序中利用这些新的特性。
通用应用程序平台下的网络API:
通用Windows平台(UWP)包含一组大型的网络api,主要是针对不同的方案,包括从查询设备的连接状态和连接到对等设备,与REST的web服务通信并在后台下载大型媒体文件。在这篇博客文章,我们将重点放在以下的网络api的子集:
Windows.Networking.Sockets – 通常用在P2P聊天、VoIP、VPN应用程序
System.Net.Sockets – .NET版本的网络套接字API,主要用于跨平台的库和应用程序
WinSock – 广泛用于跨平台的库,如OpenSSL或者多人游戏库
Windows.Web.Http and System.Net.Http – 用于与REST web服务进行通信
Windows.Networking.BackgroundTransfer – 用于上载或下载数据,即使应用程序没有在前台
Windows.Data.Json – 用于序列化/反序列化JSON内容由web服务提供服务
这些API在最底层着代表不同的网络套接字层,HTTP构建在它之上。最后,后台传输和JSON,它为构建在HTTP之上添加了更多的价值。
网络API在Windows10中的新特性:
在windows 10中,上述的API已经加强了更高的性能,为开发人员提供了更大的灵活性。我们在BUILD 2015视频中详细讨论所有这些改进为。
Socket Broker:允许应用程序侦听套接字,即使是当应用程序在后台运行的情况下;
Batched Sends:在套接字API实现的一种新的优化,可以以高达4x的速度发送数据;
HTTP/2:新版的HTTP API支持新的,更快UWP应用程序的HTTP协议的版本。这使得REST web服务下载和上传高达3x的速度;
Post-processing in Background Transfer:UWP应用程序现在可以处理后台任务中的下载/上传,即使是在应用程序下次启动。
由于时间限制,我们不能涵盖所有新功能的视频中,我们添加到windows 10。这里还有更多:
System.Net.Sockets 和 Winsock for UWP Apps:
针对UWP应用程序开发者来说,Windows10、System.Net.Sockets和Winsock已经添加到API中,在Windows应用商店中的应用程序(它们也同样适用于Windows Phone Silverlight apps),这些API使用频率是很高的。在Visual Studio2014中WinSock也同样支持Windows8.1。
在当前UWP中的Winsock和System.Net.Sockets是基于Phone 8.1 Silverlight,并且继续支持大多数的类型,属性和方法(一些被认为过时的API已经被移除了。)。
客户端证书支持流式套接字类:
Windows.Networking.StreamSocket类支持通过使用using SSL/TLS进行服务器与应用程序将的认证交互。在某种情况下,这个应用程序还需要通过使用TLS客户端证书向服务器验证自身。 在Windows10开始时,你可以在流式套接字中提供一个客户端证书,控制对象(它必须在TLS进行握手协议之前启动)。如果服务器端请求了一个客户端的证书,Windows将通过提高证书来进行相应。
这里是一个代码片段显示如何实现这种情况:
1 var socket = new StreamSocket(); 2 Windows.Security.Cryptography.Certificates.Certificate 3 certificate = await GetClientCert(); 4 socket.Control.ClientCertificate = certificate; 5 await socket.ConnectAsync(destination, 6 SocketProtectionLevel.Tls12);
JSON在处理null值有了更好的调试体验:
一个关键的开发者要求我们对Windows 8.1中的Windows.Data.Json API针对null提高更好的处理方法。伴随着Windows10,我们已经添加了新的更加直观的API去序列化和反序列化null值与JSON字符串。下面是一个在Windows 10中UWP应用程序如何处理JSON字符串中的null值的示例:
对象序列化为JSON(Stringify):
1 jsonObject[key] = JsonValue.CreateNullValue(); 2 var outputString = jsonObject.Stringify();
反序列化JSON字符串(Parse):
温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/69892.html