?
什么是Windows Device Portal Wrapper?
顧名思義,WDP Wrapper是對Windows Device Portal REST APIs進行通用封裝而開發(fā)的C#客戶端SDK。這種官方標準化SDK的開源發(fā)布,極大地方便了C#開發(fā)者,也體現(xiàn)了Microsoft為開源生態(tài)而做出的努力。
WDP Wrapper支持.Net 4.5.2以上的平臺及UWP平臺,.Net 3.5等其他平臺暫不支持。如圖1所示,您可以通過Nuget在您的Visual Studio工程中引入WindowsDevicePortalWrapper,也可以在Github的release中下載最新的版本,在您的VS工程中添加引用。
WdpClient開發(fā)介紹
在WdpClient的VS工程中引入WDP Wrapper后,您可以在WdpClient的代碼中調(diào)用Wrapper的相關(guān)API。Device Portal Wrapper的基礎(chǔ)對象為DevicePortal,它提供了連接目標設(shè)備的服務,你可以創(chuàng)建DevicePortal實例以調(diào)用在目標設(shè)備上運行的Device Portal REST API。
1創(chuàng)建DevicePoral對象
DevicePortal對象通過DevicePortalConnection對象初始化,通過address、username、password參數(shù)來建立與目標設(shè)備的連接,其中address為完整的目標設(shè)備地址,如“https://192.168.1.23”; username和password為登陸您目標設(shè)備的Device Portal的用戶名密碼。具體創(chuàng)建DevicePortal實例的代碼如下:
2設(shè)置連接狀態(tài)回調(diào)函數(shù)
DevicePortal實例通過其內(nèi)置的ConnectionStatus來獲取連接狀態(tài)。ConnectionStatus是一個事件回調(diào)函數(shù)DeviceConnectionStatusEventHandler,其接收DevicePortal實例和DeviceConnectionStatusEventArgs作為參數(shù),在DeviceConnectionStatusEventArgs中將包含對連接狀態(tài)的反饋信息。ConnectionStatus需要在建立連接之前設(shè)置其回調(diào)函數(shù),設(shè)置樣例代碼如下:
3連接設(shè)備
如果需要允許非可信連接進行訪問,需要調(diào)用DevicePortal的GetRootDeviceCertifacateAsync方法,將acceptUntrustedCerts設(shè)置為true;若需要使用證書進行訪問,請設(shè)置證書。連接設(shè)備的調(diào)用代碼如下,請務必加上try catch。
設(shè)備連接成功后,您可以使用DevicePortal實例調(diào)用Wrapper中的API了,以下通過幾個示例來進行展示。
4 API樣例:關(guān)機和重啟
可以通過DevicePortal實例觸發(fā)設(shè)備的關(guān)機和重啟操作,具體調(diào)用代碼如下:
5 API樣例:獲取設(shè)備上已安裝的應用
通過DevicePortal實例,可以獲取設(shè)備上已安裝的應用,具體調(diào)用代碼如下:
6 API樣例:通過WebSocket訪問設(shè)備
DevicePortal的部分API通過WebSocket進行連接,如需要獲取系統(tǒng)狀態(tài)或進程信息,您可以使用相關(guān)接口接收設(shè)備推送的WebSocket數(shù)據(jù)。WebSocket使用一個回調(diào)函數(shù)來定義接收到設(shè)備返回數(shù)據(jù)后的相關(guān)操作,下面的代碼展示了如何打印出設(shè)備上內(nèi)存消耗最大的應用:
也可以使用其他語言,如Golang、Java等來實現(xiàn)不同的Wrapper。