GMTC北京站本周日开幕,58个议题全部上线,点击查看 了解详情
写点什么

REST 和物联网

2013 年 10 月 16 日

距人们第一次谈论无所不在的计算或者说物联网 已经有十多年了 (前面那个都快三十年了)。那时候还只是个梦想。而如今已经成了现实,我们很多人身边都无时无刻地包围着几个“能接入互联网的”设备。最近有很多标准化组织(比如 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 )关注我们,并与我们的编辑和其他读者朋友交流。

2013 年 10 月 16 日 05:462264
用户头像

发布了 45 篇内容, 共 22.7 次阅读, 收获喜欢 4 次。

关注

评论

发布
暂无评论
发现更多内容

实战案例丨使用云连接CC和数据复制服务DRS实现跨区域RDS迁移和数据同步

华为云开发者社区

迁移 灾备 数据复制 云连接 数据同步

LR.JAVA平台商业可视化大屏(BI)设计演示

力软.net/java开发平台

软件开发 BI 数据可视化 Java 分布式

手机没网了,却还能支付,这是什么原理?

楼下小黑哥

支付宝 微信支付 支付

vivo商城前端架构升级-总览篇

vivo互联网技术

node.js Vue 前端 架构设计

JDK8 Unsafe.java 源码

Darren

源码 并发 CAS 代码注释 unsafe

JVM中unsafe.cpp源码

Darren

c++ 源码 JVM unsafe

架构师训练营 - 命题作业 第 12周

铁血杰克

极客大学

Java中强、软、弱、虚四种引用详解

古月木易

Java

Java中强、软、弱、虚四种引用详解

奈学教育

Java

usdt支付跑分系统开发|区块链跨境入金系统搭建

WX13823153201

CPU中的程序是怎么运行起来的(预告篇)

良知犹存

cpu

拥抱K8S系列-01-CentOS7安装docker

张无忌

Docker centos 运维

Docker 网络模式详解及容器间网络通信

哈喽沃德先生

Docker 容器 微服务 容器技术 容器化

【API进阶之路】破圈,用一个API代替10人内容团队

华为云开发者社区

内容 编辑 API 华为云 文本摘要

usdt承兑支付系统开发|usdt跑分系统搭建

WX13823153201

USDT承兑支付系统开发

数字货币交易所系统搭建源码|交易所开发公司

WX13823153201

数字货币交易所系统搭建

高效程序员的45个习惯:敏捷开发修炼之道(7)

石云升

敏捷开发 晨会

架构设计复杂度来源

escray

学习 从零开始学架构 架构师预科班

Mybatis进阶之基础CRUD

不才陈某

mybatis springboot

架构师训练营第 12 周作业

在野

拥抱K8S系列-02-服务器部署应用和docker部署应用区别(nginx篇)

张无忌

nginx Docker 运维

Java创建对象的方法有哪些?

奈学教育

Java

【运维探讨】RPA落地实践,提升IT运维工作效能!

嘉为蓝鲸

RPA 运维自动化 标准化 系统运维 流程

面经手册 · 第9篇《队列是什么?什么是双端队列、延迟对列、阻塞队列,全是知识盲区!》

小傅哥

数据结构 小傅哥 队列 ArrayDeque

区块链钱包开发方案|多币种钱包搭建app

WX13823153201

区块链钱包开发

2019年我最喜欢的三款数码产品。

徐说科技

手机 苹果

ArCall远比你想象的要强大的多

anyRTC开发者

WebRTC 在线教育 直播 RTC 安卓

java安全编码指南之:Mutability可变性

程序那些事

Java java安全编码 编码指南 可变性

Java创建对象的方法有哪些?

古月木易

Java

一条龙!CI / CD 、打造小团队前端工程化服务

久违

Vue 前端 jenkins React 前端工程化

分析HiveQL 生成的MapReduce执行程序

任小龙

REST 和物联网-InfoQ