目前提出的物联网应用系统构建方法不少是基于面向服务的体系结构(SOA),原理是将物端资源与云端资源提供的感知、执行与数据处理等能力分别抽象为实体服务和云服务.物联网服务中间件是在实体服务和云服务之上用于支撑物联网任务编程、发现满足任务需求的服务集以及实现各类服务之间互联与互操作的基础结构软件.由于实体服务的异构性、大规模性、动态可用性、情境感知性、时空相关性、资源受限性和执行冲突性,目前构建物联网服务中间件仍面临挑战.该文首先给出了物联网服务中间件的功能模型,并以此为参考,结合实体服务的特性,具体指出了设计与实现物联网服务中间件各功能模块所面临的挑战;接着系统地总结了物联网服务中间件各功能模块的实现方法;然后根据服务描述、服务注册管理、服务发现以及服务组合与任务编程接口的研究进展,对目前已经提出的物联网服务中间件的功能属性进行了分类比较;最后,展望了物联网服务中间件的发展趋势,并指出了未来还需进一步改进和完善的功能.
Most currently proposed methods of constructing Internet of Things(IoT)software systems are based on Service Oriented Architecture(SOA),by abstracting both physical objects and cloud platforms as resources to provide services.Services provided by physical objects and cloud platforms are referred to as entity services and cloud services respectively.Service middleware for IoT,which lies over entity service and cloud service,provides infrastructure software for IoT task programming,discovering required services,supporting interconnection and interoperation among diverse services.However,developers are confronted with many challenges to build service middleware for IoT,because of the unique characteristics of entity services,namely heterogeneity,large scale,dynamic availability,context awareness,spatial-temporal correlation,resource limitation,and actuating conflict.In this paper,we first present the functional model of service middleware for IoT,and outline challenges to design and implement various function module of service middleware for IoT when taking the characteristics of entity services into consideration.Confronted with these challenges,we present a comprehensive review of implementation methods of each module of service middleware for IoT.Then we make a comparison study on the functionalproperty of the currently proposed service middlewares for IoT by analyzing their different mechanisms adopted to realize service description,service registration,service discovery,service composition and task programming interface.Finally,we look forward into the future developing trend of middleware for IoT,and point out future work to be done to improve its functionality.