2.2 OCF技术简介
本节主要介绍OCF系统的架构、OCF框架功能和OCF角色的示例场景。
1. OCF的系统架构
OCF的宗旨:定义一个通用的通信框架,实现不同操作系统、不同设备之间的互联互通。它包含的核心功能主要有标识和寻址、设备和资源发现、资源模型、CRUDN(Create/Retrieve/Update/Delete/Notify,创建/检索/更新/删除/通知)操作、报文传输、设备管理和安全等。
OCF采用资源表示方法,运用RESTful的操作接口来使用资源,所有OCF设备由包含的资源及相应的URI表示。每个提供资源表示的OCF设备都能充当服务器端的角色。相应地,主动发起资源操作请求的设备充当客户端的角色。资源操作包括创建、检索、更新、删除和通知。
OCF的系统架构实现了物联网的物理设备或应用之间基于资源的交互。OCF的系统架构充分利用现存的行业标准和技术,并且提供了建立连接(无线或有线)的解决办法,为各种场景、操作系统提供管理设备之间的信息流动。
OCF的系统架构提供了如下可能:多个细分市场(消费者、企业、工业、汽车和医疗等)的通信和互操作框架、操作系统、平台、通信方式、传输和使用情况;一种描述环境促成信息和语义互操作的通用、一致的模型;用于发现和连接的通用通信协议;通用的安全和鉴定机制;创新和产品差异化的机会;表明不同设备能力可拓展的解决方案,适用于智能设备、最小连接以及可穿戴设备。
OCF的系统架构基于面向资源的设计原则,在OCF的系统架构中物理世界的实体,如温度传感器、电灯或电器被呈现为资源。和一个实体的相互作用是通过其资源表示实现的,使用遵循表述性状态转移架构风格的操作,如RESTful交互。OCF的系统架构定义了OCF框架整体结构为一个信息系统以及构成OCF的实体间的交互;实体呈现为OCF资源,携带着它们独特的标识符以及支持OCF资源的RESTful操作接口。
每个RESTful操作都有一个操作的发起者(客户端)以及一个操作的应答者(服务器端)。在OCF框架中,客户端和服务器端概念是由OCF角色实现的。任何OCF设备都可以作为OCF客户端或服务器端,在OCF设备上初始化RESTful操作。同样,任何将实体呈现为OCF资源的OCF设备,也可以作为OCF服务器端使用。遵循REST架构风格,每个在OCF的RESTful操作中,包括所有能够理解交互内容的必要信息,并且用一小部分通用操作就可以驱动,如CRUDN操作,这些也包括了对OCF资源的表示。图2-2描述了OCF的系统架构。
图2-2 OCF的系统架构
架构概念分为三个主要方面:资源模型、RESTful操作和抽象化。
资源模型:提供了逻辑模型所需的抽象和概念,并在逻辑上操作其应用程序及环境。资源模型和应用领域无关,如智能家居、工业或汽车。资源模型定义了抽象化实体的OCF资源,且OCF资源表示映射为实体的状态。其他模型概念可以用来模拟行为模型等。
RESTful操作:一般的操作被定义为用RESTful范例来模拟协议以及OCF资源的交互。具体的通信或信息传递是协议抽象的一部分,并且OCF资源和特定协议的映射将在本书中讲述。
抽象化:在资源模型中的抽象和RESTful操作被抽象原语映射到具体元素。实体处理程序用于映射到OCF资源以及连接抽象原语,这些抽象原语用来映射逻辑RESTful操作到数据连接协议或技术,实体处理程序也会被映射到不是本地OCF支持的实体。
OCF功能结构如图2-3所示,分为L2连接层、网络层、传输层、OCF框架层和应用配置层。
图2-3 OCF功能结构
L2连接层:建立物理层和数据链路层连接(如WiFi、蓝牙)。
网络层:提供OCF设备所需要的数据交换网络功能(如互联网)。
传输层:提供端到端的传输路径,如TCP、UDP及新的IETF传输协议。
OCF框架层:提供IP寻址、资源发现、资源操作、设备管理和安全管理等核心功能。
应用配置层:提供对应于某一领域的数据模型及功能,如智能家居和车联网等。
当两个OCF设备互相交流时,一个OCF设备的每个功能模块和另一个OCF设备的对应模块以图2-4所示的方式进行交互。
图2-4 OCF交流分层模型
2. OCF框架层功能
OCF框架层由提供OCF操作核心的功能组成,主要包括如下几点。
(1)IP寻址:定义标识符和寻址能力。
(2)资源发现:定义发现可用的OCF设备和OCF资源的过程。
(3)资源模型:根据资源表示实体的能力,并且定义操作资源的机制。
(4)资源操作:提供用于OCF客户端和OCF服务器端之间互动的通用方案。消息是提供RESTful操作的具体消息传递协议,如CRUDN操作、CoAP消息和传递协议。
(5)设备管理:指明管理OCF设备能力的原则,并且包括设备配置、初始化以及设备监测与诊断。
(6)安全管理:包括对实体的安全访问所需的身份验证、授权和访问控制机制。
3. OCF角色的示例场景
OCF的交互定义于逻辑实体之间,该逻辑实体被称为OCF角色。OCF定义了三种角色:OCF客户端、OCF服务器端和OCF中介。
图2-5说明了在一个场景中OCF角色的例子,该场景是一个智能手机给恒温器发请求消息,原始消息通过HTTP发送,但是在传输中被网关转换为CoAP请求消息,然后再传递给恒温器。在这个例子中,智能手机承担了OCF客户端的角色,网关承担了OCF中介角色,恒温器承担了OCF服务器端的角色。
如果连接非OCF生态系统,如图2-6所示,监测心率传感器(心率监测仪)的腕表设备,该传感器由非OCF的协议实现。提供了一个详细的逻辑观点。
图2-5 OCF角色示意
图2-6 OCF结构细节
OCF结构细节可以通过许多方法实现,例如使用带有实体处理器的OCF服务器端,该处理器直接连接非OCF设备,如图2-7所示。
图2-7 连接非OCF系统的OCF服务器端
启动时,OCF服务器端运行实体处理器来发现非OCF系统(例如心率传感器设备),并且为每个发现的设备或功能创建资源。实体处理器给每个发现的设备或功能创建资源,并且将其OCF资源绑定,通过OCF服务器端,使得这些资源可被发现。
一旦资源被创建并且可发现,之后显示设备可以发现这些资源,并且使用规范中描述的机制去操作它们。对OCF服务器端资源的请求会被实体处理器翻译,并且通过非OCF设备支持的协议传递给非OCF设备,非OCF设备返回的信息会被映射成该资源相应的应答。