本月初,微軟為Azure IoT Gateway SDK 提供了 對(duì)自家無(wú)服務(wù)器事件驅(qū)動(dòng)的平臺(tái)Azure Functions的支持,這一支持為在Azure基礎(chǔ)上構(gòu)建物聯(lián)網(wǎng)解決方案的開(kāi)發(fā)者提供了基于云的擴(kuò)展能力。
Azure IoT Gateway SDK最早以Beta測(cè)試版的形式在今年四月的 Hannover Messe活動(dòng)中發(fā)布。使用ANSI C編寫(xiě)的Azure IoT Gateway SDK是一種跨平臺(tái)框架,可在IoT網(wǎng)關(guān)層面提供擴(kuò)展性。這樣的擴(kuò)展能力使得各類設(shè)備,包括非TCP/IP設(shè)備可以使用包含Node、Java、C#在內(nèi)的多種高級(jí)語(yǔ)言與云平臺(tái)通信。隨后該網(wǎng)關(guān)可與微軟的Azure IoT Hub通信,借此在設(shè)備和微軟云之間實(shí)現(xiàn)雙向通信。
Azure Functions是微軟進(jìn)入無(wú)服務(wù)器領(lǐng)域的一個(gè)舉措。微軟首席產(chǎn)品組項(xiàng)目經(jīng)理Nir Mashkowski 稱 Azure Functions是一種“事件驅(qū)動(dòng)的按需計(jì)算體驗(yàn),可對(duì)現(xiàn)有Azure應(yīng)用程序平臺(tái)進(jìn)行擴(kuò)展,實(shí)現(xiàn)了借助在Azure、第三方服務(wù),以及企業(yè)本地系統(tǒng)中發(fā)生的事件觸發(fā)代碼運(yùn)行的能力。”開(kāi)發(fā)者可以使用包括JavaScript、C#、Python,以及PHP在內(nèi)的多種語(yǔ)言編寫(xiě)這種函數(shù),這些函數(shù)可以暴露HTTP端點(diǎn)或用戶定義的觸發(fā)器,例如Blob存儲(chǔ)、事件中心,或WebHook。
通過(guò)讓Azure IoT Gateway SDK支持Azure Functions,微軟為構(gòu)建物聯(lián)網(wǎng)應(yīng)用程序的開(kāi)發(fā)者提供了全新的能力,并為云端邏輯的執(zhí)行提供了一個(gè)中央位置,開(kāi)發(fā)者無(wú)需在自己的所有設(shè)備上運(yùn)行并部署代碼。Azure IoT合作伙伴總監(jiān)Sam George 介紹了 一種從Azure IoT Gateway SDK調(diào)用Azure Functions的使用場(chǎng)景:“如果現(xiàn)場(chǎng)的網(wǎng)關(guān)環(huán)境出錯(cuò)了,例如本地設(shè)備無(wú)法連接或行為異常,而你想將診斷信息上傳至Azure IoT解決方案以便讓運(yùn)維人員進(jìn)行檢查,新增的Functions集成讓這一過(guò)程變得更簡(jiǎn)單。只須創(chuàng)建獲取這些數(shù)據(jù)的Azure Function,存儲(chǔ)信息并通知運(yùn)維人員即可 – 以后遇到問(wèn)題只要從運(yùn)行Azure IoT Gateway SDK的網(wǎng)關(guān)直接調(diào)用就行了。”
IoT網(wǎng)關(guān)內(nèi)部的通信是通過(guò)模塊實(shí)現(xiàn)的。因此只須從網(wǎng)關(guān)中的模塊調(diào)用,即可執(zhí)行Azure Function。模塊相互之間可以通過(guò)使用pub/sub或其他消息模式借助消息總線交換消息,進(jìn)而實(shí)現(xiàn)數(shù)據(jù)的交換。模塊還可用于協(xié)議中介(Protocol mediation)、消息格式轉(zhuǎn)換、篩選和云通信。微軟還在Azure IoT Gateway SDK中提供了一些預(yù)置模塊,同時(shí)提供了相關(guān)接口,開(kāi)發(fā)者可以借此創(chuàng)建自己的模塊。
