无标题文章

PlugFest

plugfests

Sapporo(2015-10)

address

This first WoT PlugFest elaborated, based on a JSON-LD thing description, server and client role of "thing". Protocols such as CoAP, HTTP and WebSocket were combined with JSON and EXI encodings.

Goals

Interoperable(互通) applications by means of a thing description only

Outcome

Thing description registry and discovery is needed

Nice(2016-01)

address

Goals

Based on the previous PlugFest in Sapporo four advances will be proposed.

Security: using new security mechanisms that emerged for protecting new styles of Web applications (Web/REST APIs, browser-based/mobile apps) in the things space

APIs: generic APIs to program behavior for a thing or interact with a thing

Thing registries: practical registration and discovery of a thing

HATEOAS: application of REST-based hypermedia controls in the thing world

Outcome

Registry & Discovery

As a finding of the Sapporo plugfest we concluded that it would be very helpful to provide a mean of registering things. Moreover, finding an appropriate counterpart(配对) is even more important.

Hence we plan to work on such a registration authority and define ways to discover matching things.

Scripting API

In the area of data exchange between things we so far agreed on using certain protocols (CoAP, HTTP, Websocket) and encodings (JSON, EXI). The proposal for this plugfest is to go beyond that level and work on an actual API. On this basis, we can elaborate(详细描述) exposing and accessing things by such an abstraction layer.

The idea is to agree on an abstract interface definition which than can be mapped to various programming languages. For this purpose, we plan to use WebIDL(Interface Definition Language,接口定义语言) for defining the abstract WoT API (maybe along with the JavaScript mapping) to enable API-based communication.

HATEOAS

This aspect offers the possibility to bridge W3C efforts with IRTF(Internet Research Task Force,互联网研究专门工作组) RG and the plugREST initiative.

REST架构

理解REST架构风格

REST 是 Representational state transfer 的缩写,翻译过来的意思是表达性状态转换。REST 是一种架构风格,它包含了一个分布式超文本系统中对于组件、连接器和数据的约束。REST 是作为互联网自身架构的抽象而出现的,其关键在于所定义的架构上的各种约束。只有满足这些约束,才能称之为符合 REST 架构风格。REST 的约束包括:

客户端-服务器结构。通过一个统一的接口来分开客户端和服务器,使得两者可以独立开发和演化。客户端的实现可以简化,而服务器可以更容易的满足可伸缩性的要求。

无状态。在不同的客户端请求之间,服务器并不保存客户端相关的上下文状态信息。任何客户端发出的每个请求都包含了服务器处理该请求所需的全部信息。

可缓存。客户端可以缓存服务器返回的响应结果。服务器可以定义响应结果的缓存设置。

分层的系统。在分层的系统中,可能有中间服务器来处理安全策略和缓存等相关问题,以提高系统的可伸缩性。客户端并不需要了解中间的这些层次的细节。

按需代码(可选)。服务器可以通过传输可执行代码的方式来扩展或自定义客户端的行为。这是一个可选的约束。

统一接口。该约束是 REST 服务的基础,是客户端和服务器之间的桥梁。该约束又包含下面 4 个子约束。

【资源标识符】。每个资源都有各自的标识符。客户端在请求时需要指定该标识符。在 REST 服务中,该标识符通常是 URI。客户端所获取的是资源的表达(representation),通常使用 XML 或 JSON 格式。

【通过资源的表达来操纵资源】。客户端根据所得到的资源的表达中包含的信息来了解如何操纵资源,比如对资源进行修改或删除。

【自描述的消息】。每条消息都包含足够的信息来描述如何处理该消息。

【超媒体作为应用状态的引擎(HATEOAS)】。客户端通过服务器提供的超媒体内容中动态提供的动作来进行状态转换。

在了解 REST 的这些约束之后,就可以对“表达性状态转换”的含义有更加清晰的了解。“表达性”的含义是指对于资源的操纵都是通过服务器提供的资源的表达来进行的。客户端在根据资源的标识符获取到资源的表达之后,从资源的表达中可以发现其可以使用的动作。使用这些动作会发出新的请求,从而触发状态转换。

HATEOAS约束

HATEOAS(Hypermedia as the engine of application state)是 REST 架构风格中最复杂的约束,也是构建成熟 REST 服务的核心。它的重要性在于打破了客户端和服务器之间严格的契约,使得客户端可以更加智能和自适应,而 REST 服务本身的演化和更新也变得更加容易。

在介绍 HATEOAS 之前,先介绍一下 Richardson 提出的 REST 成熟度模型。该模型把 REST 服务按照成熟度划分成 4 个层次:

第一个层次(Level 0)SOAP、XML-RPM都属于这一级别,仅是来回传送"Plain Old XML"(POX)。即使没有显式调用RPC接口(SOAP、XML-RPM),通常会调用服务器端的一个处理过程。一个接口会有一个端点,文档的内容会被解析用还判断所要调用的处理过程及其参数。这种做法相当于把 HTTP 这个应用层协议降级为传输层协议用。HTTP 头和有效载荷是完全隔离的,HTTP 头只用于保证传输,不涉及业务逻辑;有效载荷包含全部业务逻辑,因此 API 可以无视 HTTP 头中的任何信息。

第二个层次(Level 1)的 Web 服务引入了资源的概念。每个资源有对应的标识符和表达。

这些资源仍是被"GETful"接口操作而不是HTTP动词,但服务基本上提供和操作资源。例如:

GET http://example.com/app/createUser
GET http://example.com/app/getUser?id=123
GET http://example.com/app/changeUser?id=123&field=value
GET http://example.com/app/deleteUser?id=123

第三个层次(Level 2)的 Web 服务根据语义使用HTTP动词,使用不同的 HTTP 方法来进行不同的操作,并且使用 HTTP 状态码来表示不同的结果。

GET用于查询资源;
HEAD用于查询资源是否存在;
POST创建新资源;
PUT更新已存在的资源;
PATCH部分更新已存在的资源;
DELETE删除已存在的资源。

第四个层次(Level 3)的 Web 服务使用 HATEOAS。在资源的表达中包含了链接信息。客户端可以根据链接来发现可以执行的动作。

对于不使用 HATEOAS 的 REST 服务,客户端和服务器的实现之间是紧密耦合的。客户端需要根据服务器提供的相关文档来了解所暴露的资源和对应的操作。当服务器发生了变化时,如修改了资源的 URI,客户端也需要进行相应的修改。而使用 HATEOAS 的 REST 服务中,客户端可以通过服务器提供的资源的表达来智能地发现可以执行的操作。当服务器发生了变化时,客户端并不需要做出修改,因为资源的 URI 和其他信息都是动态发现的。

Montreal(2016-04)

address

Goals

Compared to previous PlugFests we do not plan to introduce new technologies nor additional parts. Instead we focus on a broader support of the same features by different implementations(对同一功能支持不同实现).

Moreover, we especially encourage real-world scenarios in the following two areas:

Thing-to-thing communication and interactions

Scripting API

Former PlugFest participants are well aware of the available thing acting and sensing capabilities(感知能力). That said, we would like to stimulate new scenarios based on what we have seen so far (e.g., discover thing properties and combine(组合) them with other thing actions and/or events). Feel free to come up with rather sophisticated real-world use-cases. Please also make use of the discovery to improve PlugFest preperation and enable onsite combination of things.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,585评论 18 139
  • 特别帅气的昵称lyz阅读 194评论 0 0
  • 如果感情可以很纯粹 那我是否还如今日这般怀念 天上的云变幻 地上的路蔓延 心介乎于其间 不知所来 不得所终 飘忽于...
    最是无情风月阅读 159评论 0 1
  • 大学校园来来往往的人群里,成双成对的不在少数。也并不都是郎才女貌,闺蜜问我,为什么我失恋这么久了还没有新一段感情的...
    9b010ba68ed6阅读 256评论 0 1
  • 太累,貌似九点多躺下就睡着了,一下睡到了十二点半。 今儿练了吉他,跑了步,去看了看爷爷奶奶,在姐姐家。大娘在叠金元...
    _种瓜得豆__阅读 233评论 0 0