本月初,微软为Azure IoT Gateway SDK 提供了 对自家无服务器事件驱动的平台Azure Functions的支持,这一支持为在Azure基础上构建物联网解决方案的开发者提供了基于云的扩展能力。
Azure IoT Gateway SDK最早以Beta测试版的形式在今年四月的 Hannover Messe活动中发布。使用ANSI C编写的Azure IoT Gateway SDK是一种跨平台框架,可在IoT网关层面提供扩展性。这样的扩展能力使得各类设备,包括非TCP/IP设备可以使用包含Node、Java、C#在内的多种高级语言与云平台通信。随后该网关可与微软的Azure IoT Hub通信,借此在设备和微软云之间实现双向通信。
Azure Functions是微软进入无服务器领域的一个举措。微软首席产品组项目经理Nir Mashkowski 称 Azure Functions是一种“事件驱动的按需计算体验,可对现有Azure应用程序平台进行扩展,实现了借助在Azure、第三方服务,以及企业本地系统中发生的事件触发代码运行的能力。”开发者可以使用包括JavaScript、C#、Python,以及PHP在内的多种语言编写这种函数,这些函数可以暴露HTTP端点或用户定义的触发器,例如Blob存储、事件中心,或WebHook。
通过让Azure IoT Gateway SDK支持Azure Functions,微软为构建物联网应用程序的开发者提供了全新的能力,并为云端逻辑的执行提供了一个中央位置,开发者无需在自己的所有设备上运行并部署代码。Azure IoT合作伙伴总监Sam George 介绍了 一种从Azure IoT Gateway SDK调用Azure Functions的使用场景:“如果现场的网关环境出错了,例如本地设备无法连接或行为异常,而你想将诊断信息上传至Azure IoT解决方案以便让运维人员进行检查,新增的Functions集成让这一过程变得更简单。只须创建获取这些数据的Azure Function,存储信息并通知运维人员即可 – 以后遇到问题只要从运行Azure IoT Gateway SDK的网关直接调用就行了。”
IoT网关内部的通信是通过模块实现的。因此只须从网关中的模块调用,即可执行Azure Function。模块相互之间可以通过使用pub/sub或其他消息模式借助消息总线交换消息,进而实现数据的交换。模块还可用于协议中介(Protocol mediation)、消息格式转换、筛选和云通信。微软还在Azure IoT Gateway SDK中提供了一些预置模块,同时提供了相关接口,开发者可以借此创建自己的模块。