建模角度的物联网系统
从计算机科学的角度,任何物联网应用都可以建模来定义系统。互联网已经非常成熟了。那么物联网和互联网的差异呢?互联网在1.0主要是网站编辑时代,主要是内容数据、用户;而互联网2.0依然是内容和数据,但是用户也是数据来源,贡献了社交数据、视频、音频和各类数据。
Web 1.0: html = f(user, data)
Web 2.0:
html = f(user, data)
data = f2(user)
而物联网则增加了设备和设备数据,而且设备与用户之间的关系与业务流程有密切关联。这就增加了系统的复杂度。
IoT + Mobile Web
html5 = f(user, data1, data2)
data1 = f2(user)
data2 = f3(device)
IoT建模与FAB的RBAC
devices <-- accesses
users <--accesses
users <-- messages
webapis <-- devices
devices <-- events
devices <-- streams
devices <-- commands
firmware <-- devices
以上表格的箭头是外键的指向。
设备与用户之间存在多对多关系,需要中间关联表通过外键建模。而每个设备对应于自己的WebAPI的ID/Key抽象化。
每个设备有自己的事件、控制、下发命令。
每批设备有自己的固件。
各种资源都可以通过单个/批量CURD将API暴露给移动APP和Web前端。这样都构成了一个通用的物联网应用建模。我们对比许多成熟应用,来适配一下:
- 资产管理,一台设备可以在多个用户间分时共享,但同一时间,除了用户本人,还有管理层可以查看设备数据(比如父母、教师和车队管理员);
- 门禁控制,一台设备可以支持多个用户同时使用,而且有多个用户(业主、房客、管理员)可以查看设备数据。
- 医疗设备,一台设备可以分时共享,但是同一时间只有单人使用,主要提供给各个科室的医师和关联家属分享数据。
- 视频与安防,一台设备监控一部分区域,授权的用户可以查看关联视频。
- WiFi探针/ESL标签,这些和最终用户没有交互的数据采集和推送设备,只是在管理侧提供CRUD权限。
所有这些,设备端都是以API形式提供,而复杂的往往却还是业务流程和权限管理。而FAB恰恰是继承了RBAC和企业级安全在内的,除了基础设计,还支持LDAP等企业常见的认证和授权管理。