本节书摘来自华章社区《低功耗蓝牙开发权威指南》一书中的第2章,第2.8节模块化架构,作者 (英)robin heydon,更多章节内容可以访问云栖社区“华章社区”公众号查看
2.8 模块化架构
一个常被忽视的基本概念是面向未来的架构。大多数无线标准往往是在匆忙间完成的制定工作,只想让技术尽快脱颖而出,并不太关注该技术在未来10年或20年的时间里将如何运作。在“时间就是市场”的压力下产生的很多糟糕的结构设计无疑会对平台的长期可用性带来负面的影响。为了解决该问题,蓝牙技术联盟建立了一个特别架构工作组,专门研究基于通用属性规范的架构,以确保该技术不会很快过时。
该工作组的主要成果是基于通用属性规范的模块化的服务架构,允许设备以标准的方式将原子的、可封装的行为比特装进单个服务并将其公开。(此处,原子指的是只做一件事情,可封装指的是能够从其他功能剥离并自我封装。)服务可以引用其他的服务,比如有温度传感器的电池可以引用温度服务;相同的温度服务可被重复使用,比如家庭温度计、冷藏室的温度传感器、汽车发动机的冷却液温度传感器等。
在此架构中,一个有趣的副作用在于设备上公开的服务不必与某个给定的规范直接相关。规范要求设备提供一组给定的服务,但也仅仅需要一个链接而已。这意味着如果可以利用设备上的不同服务创建新的规范,则利用已有服务将其组合,就可以形成多个新的规范。事实就是如此,虽然只有在设备上设计和实现服务之后才会编写规范。
上述高度灵活的模块化架构有利于随着时间的推移逐步建立生态系统。例如,家庭可以首先部署智能电表,提供当前或者未来的价格信息和使用信息。随后可以部署智能家电,使其支持远程开关,并采用网关模式在离家时实现自由控制。之后,部署的能源管理器可以利用智能电表的信息,“聪明”地调度各种智能家电,为屋子的主人节省用电开销。