REST 和物联网

阅读数:1925 2013 年 10 月 16 日

话题:REST语言 & 开发架构

距人们第一次谈论无所不在的计算或者说物联网 已经有十多年了 (前面那个都快三十年了)。那时候还只是个梦想。而如今已经成了现实,我们很多人身边都无时无刻地包围着几个“能接入互联网的”设备。最近有很多标准化组织(比如 IETF)围绕物联网(IoT)的方方面面做了很多工作,包括简明的二进制对象表示 (CBOR) 协议(如何把尽可能多的数据塞进一个很小的消息交换中)。

简明的二进制对象表示 (CBOR) 是一种数据格式,它的设计目标包括极其微小的编码大小的可能性、相当小的消息大小,以及无需版本协商的可扩展性。这些设计目标使得它跟之前那些 ASN.1 和 MessagePack 之类的二进制串行化协议有所不同。

但把 REST 应用到这个领域中只是迟早问题。按 IETF 给受限的 RESTful 环境 (CoRE) 工作组的定位,他们要:

[...] 为运行在受限 IP 网络中面向资源的程序提供一个框架。受限 IP 网络中的包大小有限,可能出现比较严重的丢包现象,而且有相当数量的设备可能会随时断电,但会周期性地短暂“唤醒”。

作为这个为在受限设备上构建应用程序的框架的一部分,工作组还将为在这些设备上处理资源定义受限的应用程序协议:

工作组会定义一个从 CoAP 到 HTTP REST API 的映射;这一映射将不会依赖任何特定的应用。值得一提的是代理不一定必须出现在受限网络和通用网络两者的边界上,而是能部署在非受限网络的各种位置上。

该工作组已经定义了该协议必须支持的几项内容,包括:

  • 创建、读取、更新和删除设备上资源的能力。
  • 向一组设备发送非可靠多播消息的能力。
  • 必须运行在 UDP 上,对 TCP 有一些可选(及有限)的支持。
  • 基于 HTTP REST 的 API 的规范,以及与设备通讯的转换。

因为该工作组只是刚开始,所以还有很多未知的领域,比如安全。然而现在已经有一个支持 CoAP 的 Java 项目jCoAP了。

原文英文链接:REST and the Internet of Things


感谢侯伯薇对本文的审校。

给 InfoQ 中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ)或者腾讯微博(@InfoQ)关注我们,并与我们的编辑和其他读者朋友交流。