什么是Windows Device Portal Wrapper?
顾名思义,WDP Wrapper是对Windows Device Portal REST APIs进行通用封装而开发的C#客户端SDK。这种官方标准化SDK的开源发布,极大地方便了C#开发者,也体现了Microsoft为开源生态而做出的努力。
WDP Wrapper支持.Net 4.5.2以上的平台及UWP平台,.Net 3.5等其他平台暂不支持。如图1所示,您可以通过Nuget在您的Visual Studio工程中引入WindowsDevicePortalWrapper,也可以在Github的release中下载最新的版本,在您的VS工程中添加引用。
WdpClient开发介绍
在WdpClient的VS工程中引入WDP Wrapper后,您可以在WdpClient的代码中调用Wrapper的相关API。Device Portal Wrapper的基础对象为DevicePortal,它提供了连接目标设备的服务,你可以创建DevicePortal实例以调用在目标设备上运行的Device Portal REST API。
1创建DevicePoral对象
DevicePortal对象通过DevicePortalConnection对象初始化,通过address、username、password参数来建立与目标设备的连接,其中address为完整的目标设备地址,如“https://192.168.1.23”; username和password为登陆您目标设备的Device Portal的用户名密码。具体创建DevicePortal实例的代码如下:
2设置连接状态回调函数
DevicePortal实例通过其内置的ConnectionStatus来获取连接状态。ConnectionStatus是一个事件回调函数DeviceConnectionStatusEventHandler,其接收DevicePortal实例和DeviceConnectionStatusEventArgs作为参数,在DeviceConnectionStatusEventArgs中将包含对连接状态的反馈信息。ConnectionStatus需要在建立连接之前设置其回调函数,设置样例代码如下:
3连接设备
如果需要允许非可信连接进行访问,需要调用DevicePortal的GetRootDeviceCertifacateAsync方法,将acceptUntrustedCerts设置为true;若需要使用证书进行访问,请设置证书。连接设备的调用代码如下,请务必加上try catch。
设备连接成功后,您可以使用DevicePortal实例调用Wrapper中的API了,以下通过几个示例来进行展示。
4 API样例:关机和重启
可以通过DevicePortal实例触发设备的关机和重启操作,具体调用代码如下:
5 API样例:获取设备上已安装的应用
通过DevicePortal实例,可以获取设备上已安装的应用,具体调用代码如下:
6 API样例:通过WebSocket访问设备
DevicePortal的部分API通过WebSocket进行连接,如需要获取系统状态或进程信息,您可以使用相关接口接收设备推送的WebSocket数据。WebSocket使用一个回调函数来定义接收到设备返回数据后的相关操作,下面的代码展示了如何打印出设备上内存消耗最大的应用:
也可以使用其他语言,如Golang、Java等来实现不同的Wrapper。