[转*译]Networking API Improvements in Windows 10

在当今,以云优先,移动优先技术为宗旨的时代下,大多数Apps都至少有一些与web服务或网络上其他设备的集成。这些包括应用程序,它获取天气在线内容,新闻或体育比赛的分数,媒体或下载的播客,甚至对等网络游戏、聊天或VoIP应用。这些应用程序通过使用各种各样的网络API来共同构建通用应用程序平台。

在windows 10中,我们的网络团队投入了大量努力改善开发人员在使用这些网络API时在功能和灵活性方面的运行速度和内存性能。在这篇博客文章,我们将讨论一些关键我们在这方面取得改进,并向你说明该如何在您自己的应用程序中利用这些新的特性。

通用应用程序平台下的网络API:

通用Windows平台(UWP)包含一组大型的网络api,主要是针对不同的方案,包括从查询设备的连接状态和连接到对等设备,与REST的web服务通信并在后台下载大型媒体文件。在这篇博客文章,我们将重点放在以下的网络api的子集:

  1. Windows.Networking.Sockets – 通常用在P2P聊天、VoIP、VPN应用程序
  2. System.Net.Sockets – .NET版本的网络套接字API,主要用于跨平台的库和应用程序
  3. WinSock –  广泛用于跨平台的库,如OpenSSL或者多人游戏库
  4. Windows.Web.Http and System.Net.Http – 用于与REST web服务进行通信
  5. Windows.Networking.BackgroundTransfer – 用于上载或下载数据,即使应用程序没有在前台
  6. Windows.Data.Json – 用于序列化/反序列化JSON内容由web服务提供服务

这些API在最底层着代表不同的网络套接字层,HTTP构建在它之上。最后,后台传输和JSON,它为构建在HTTP之上添加了更多的价值。

网络API在Windows10中的新特性:

在windows 10中,上述的API已经加强了更高的性能,为开发人员提供了更大的灵活性。我们在BUILD 2015视频中详细讨论所有这些改进为。

  1. Socket Broker:允许应用程序侦听套接字,即使是当应用程序在后台运行的情况下;
  2. Batched Sends:在套接字API实现的一种新的优化,可以以高达4x的速度发送数据;
  3. HTTP/2:新版的HTTP API支持新的,更快UWP应用程序的HTTP协议的版本。这使得REST web服务下载和上传高达3x的速度;
  4. 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):

 1 IJsonValue myJsonValue = jsonObject.GetNamedValue(key);
 2
 3 if (myJsonValue.ValueType == JsonValueType.Null)
 4 {
 5 Phone = null;
 6 }
 7 else
 8 {
 9 var myValue = myJsonValue.GetString();
10 }

新的枚举类型值JsonValueType.Null 允许开发者通过以同样的编程方式使用整型、字符串和布尔类型的值来处理null。

JSON在Visual Studio中丰富的调试体验:

接下来我们需要介绍的是 Windows.Data.Json 在Visual Studio中丰富的调试体验。在Windows8.1中,开发者通过逐句调试只能看到一个JsonObject或JsonArray实例的类型,而不是它的全部内容。这使得开发人员更难调试分析逻辑,并确保其是否被正确填充。伴随着Windows10,你现在可以检查内部的JsonObject和JsonArray类型的内容。下面是一个示例与JsonArray对象:

改进的SD卡支持后台传输:

在Windows8.1中,Windows.Networking.BackgroundTransfer API支持将数据下载到可移动存储设备中(如SD卡),实际上是将数据下载为内部临时缓存,然后再将数据移到指定的位置,这样导致的后果是可以下载的文件的大小限制了可用的内存量。

在Windows10中,

旧有的实现方式被改为检查下载是发生在不同的驱动器而不是在安装程序中,并将使用该临时缓存的位置。这将解决不能下载大文件在SD卡上的问题(要下载的数据远远大于应用程序的内存存储)。

与此相关的文章链接:

  1. .NET Networking APIs for UWP – http://aka.ms/dotnetuwp
  2. Windows.Devices.AllJoyn – https://channel9.msdn.com/Events/Build/2015/2-623
  3. Wi-Fi and Network Connectivity APIs – https://channel9.msdn.com/Events/Build/2015/2-86
  4. Wi-Fi Direct APIs – https://channel9.msdn.com/Events/Build/2015/3-98
  5. Hotspot 2.0 API – https://channel9.msdn.com/Events/Build/2015/2-80
  6. Bluetooth apps – https://channel9.msdn.com/Events/Build/2015/3-739
  7. IoT & Azure integration – https://channel9.msdn.com/Events/Build/2015/2-67

注:转向原文

  由于部分翻译并没有完全按照原文翻译的,所有可能与原文有所不同,还请各位博友批评和指正!!

时间: 2024-08-10 11:10:09

[转*译]Networking API Improvements in Windows 10的相关文章

Windows 10 的音频和 MIDI API将统一

微软一统 Windows 10 的音频和 MIDI API 微软在夏季NAMM上的A3E大会上做了主题演讲,他们对Windows 10的音频和MIDI API都做了新的规划,开发者针对Windows 10开发的应用在手机.平板.桌面电脑.Raspberry Pi 2上也可以运行. 微软之前在音频方面一直是很低调,或者说没怎么关心过音频开发者们,这次Windows 10突然高调起来,在Windows 10里有很多针对音频和MIDI方面的改进: MIDI API:所有Windows 10设备都支持,

What is the purpose for IT Pro in Windows 10 Creators Update

Windows 10, version 1703-also known as the Windows 10 Creators Update-is designed for today's modern IT environment with new features to help IT pros more easily manage, and better protect, the devices and data in their organizations. It also provide

背水一战 Windows 10 (120) - 后台任务: 后台上传任务

[源码下载] 作者:webabcd 介绍背水一战 Windows 10 之 后台任务 后台上传任务 示例演示 uwp 的后台上传任务BackgroundTask/TransferModel.cs /* * 扩展了 DownloadOperation 和 UploadOperation,用于 MVVM 绑定数据 */ using System; using System.ComponentModel; using Windows.Networking.BackgroundTransfer; nam

用Node.js开发Windows 10物联网应用

(此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 未来10年内,物联网将会如移动互联网这样深入到我们生活的各方各面.所以微软现在对物联网进行了大量的投资,比如Windows 10就有一个单独的IoT版本.而今天推荐的文章是告诉大家如何把Node.js开发带到Windows 10 IoT中. 在月初Build大会上,微软发布了Windows 10 IoT Core Insider Preview,这个版本可以安装到树莓派2(Raspberry Pi

背水一战 Windows 10 (64) - 控件(WebView): 加载指定 HttpMethod 的请求, 自定义请求的 http header, app 与 js 的交互

[源码下载] 作者:webabcd 介绍背水一战 Windows 10 之 控件(WebView) 加载指定 HttpMethod 的请求 自定义请求的 http header app 与 js 的交互 示例1.演示 WebView 如何加载指定 HttpMethod 的请求以及如何自定义请求的 http headerWebApi/Controllers/WebViewPostController.cs /* * 用于 WebView 演示“如何加载指定 HttpMethod 的请求,以及如何自

windows 10无法安装virtualbox的解决方法

最近把系统升级到windows 10 (10061)发现在安装OracleVM VirtualBox(VirtualBox-4.3.26-98988-Win)快要安装完成的时候,奇迹般的错误出现了,安装进度自动回滚! 点击"finish"后安装以失败告终! 试了好多方法,结果都没有安装成功! 功夫不负有心人,最后终于找到了临时解决方法,下面和网友分享一下,虽然此方法算不上完美,但是至少能够解决一时之忧! 在选择安装路径和功能的时候,把虚拟的"VirtualBox Bridge

玩转 Windows 10 中的 Linux 子系统(SSH服务)

在今年的 Build 2016 上,微软向全世界介绍了他们还处于 Beta 阶段的 Windows 下的 Linux 子系统Windows Subsystem for Linux(WSL),它可以让开发者们在 Windows 10 下通过 Bash shell 运行原生的 Ubuntu 用户态二进制程序.如果你参与了 Windows Insider 计划,你就可以在最新的 Windows 10 年度升级版的 Insider 构建版中体验这个功能了.Web 开发人员们不用再苦恼所用的 Window

【Windows 10 应用开发】输入模拟

---恢复内容开始--- Input Injection 直译为:输入注入.通俗的译法为:模拟输入.此注入行为可以模拟以下几种输入行为: 1.键盘按键. 2.鼠标. 3.触控. 4.书写笔输入. 5.快捷键.这个有限制,仅限于如按 Win 键.后退键. 支持输入行为注入的API都在 Windows.UI.Input.Preview.Injection 命名空间下,命名空间带有 [Preview]字样,估计这个功能还在试运行阶段. 这个所谓的注入功能,简单地说就是可以在UWP应用中模拟键盘输入.鼠

UWP深入学习五:Build better apps: Windows 10 by 10 development series

Promotion in the Windows Store  In this article, I walk through how to Give your Store listing a makeover, Start measuring your success(using the Visual Studio Application Insights SDK in your app), and Start promoting your APP. Live Tiles and Notifi