写点什么

超媒体就像跳舞

  • 2014-08-01
  • 本文字数:819 字

    阅读完需:约 3 分钟

为了充分发挥超媒体驱动系统的优势,客户端必须服从服务端的领导,并由服务端来驱动客户端的状态。 Darrel Miller 写了一篇博文,并拿跳舞来与超媒体API 做了一次类比。俗话说得好,探戈需要两个人来跳(it takes two to tango)。

Darrel 描述了如何能快速地让两个人合作起舞,最常见的方式便是让两个人一起针对同一首特定的曲子学习同一套精心设计好的舞步序列。基本上通过这种方式,可以让他们在互相协同的情况下各自完成好自己的舞步。但是这种方式的缺点也显而易见,他们只懂一首曲子且与同一个搭档合作时的舞步。一旦发生变化,就会出现问题。一旦换了新的曲子或换了新的搭档,他们在舞技上的不足就会显现出来。

同样地,当我们消费某个 HTTP API 的时候,应用就好比是一支精心设计的舞蹈。客户端和服务端都知道流程该如何进行。当客户端发起某个 HTTP 请求的时候,它知道服务端会如何做出响应。Darrel 指出这就是我们这二十年来如何构建分布式应用的方式。我们首先对服务端暴露的 API 进行学习,然后将某种复杂的交互模式灌输给我们的客户端,从而去达到消费 API 的目的。

为了真正理解如何跳舞,Darrel 指出必须在播放任何音乐的情况下都能跳舞,而这一切只需要学习一套基本的舞蹈原语就可以完成。当一对夫妇跳舞的时候,一个领舞而另一个跟随引导也是非常重要的。一个起好选择舞蹈原语序列的领导作用,并使用手势和体位来与他的舞伴交流后续的舞步。这中间没有事先确定且尽心设计的序列动作,唯一的约束就是舞蹈的风格。

相应地,对于某个实现了相同原则的 HTTP API,客户端无须再保持对状态的跟踪,它只需要通过理解接收到的消息并信任服务端所给出的必要引导,从而可以简单地跟随服务端的领导。没有影响到资源的那些新的或变化的业务需求将不会对客户端造成影响。根据 Darrel 的判断,当你的 API 具有很多不同客户端的时候,这将是一个非常关键的优势。

Darrel 还在他的 Github 仓库上发布了一个完整的 WPF 示例。

查看英文原文: Hypermedia is like Dancing

2014-08-01 00:091463
用户头像

发布了 52 篇内容, 共 22.4 次阅读, 收获喜欢 5 次。

关注

评论

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

食堂就餐卡系统设计

hellohuan

架构 极客大学架构师训练营

设计模式之单件模式

公众号:程序猿成神之路

Java 设计模式

我们需要干货吗?

Neco.W

能力提升 经验分享 干货

程序员为什么技术这么厉害,赚得钱却不多?

金刚小书童

程序员 职业规划 技术管理

从软件架构说起

傻傻的帅

架构 架构要素 架构设计原则

架构师训练营第1周作业一:食堂就餐卡系统设计

sunpengjian

架构师训练营-作业2-学习总结

狂奔嘀兔纸

极客大学架构师训练营

极客时间 - 架构师训练营 - week1 - 食堂就餐卡系统设计

毛聪

极客时间 极客大学架构师训练营 食堂就餐卡系统设计

ZooKeeper核心原理及应用场景

奈学教育

zookeeper

ZooKeeper核心原理及应用场景

古月木易

架构师训练营-第一周学习总结

hellohuan

极客大学架构师训练营

【话题讨论】「世界上最好的语言」?25周岁的 PHP “配” “不配”

InfoQ写作社区官方

php 写作平台 PHP25周年 热门活动

架构师训练营第1周作业二:学习总结

sunpengjian

第一周课后作业——食堂就餐卡系统概要设计

jiangnanage

产品路线图–您的产品战略路径指南

涛哥 数字产品和业务架构

敏捷 产品经理

谈谈阿里云发布新一代容器、Serverless 等云原生产品

关贺宇

阿里云 容器 云原生 中间件

食堂就餐卡系统架构设计

任小龙

食堂就餐卡系统架构设计文档

hifly

极客大学架构师训练营 UML 架构文档 部署图 时序图

Week01 学习笔记

任小龙

极客大学架构师训练营第一周学习总结

竹森先生

学习 架构设计 极客大学架构师训练营

IT自由职业者是怎么样的感受和体验

古月木易

IT职场

架构师训练营-第一周-食堂就餐卡系统设计

Anrika

架构师 极客大学架构师训练营

架构师训练营第一周-食堂就餐卡系统设计

王铭铭

干货|微服务线上生命周期管理

博文视点Broadview

容器 微服务 架构师

《Web全栈实用编程》一书征集意见

老魚

程序员 大前端 Web 后端 全栈

区块链技术如何应用于版权保护?

CECBC

区块链技术 维权 著作权 版权保护 侵权

基于UML的食堂就餐卡系统设计

王海

极客大学架构师训练营

架构训练营第一周学习总结

陈靓-哲露

ChaosBlade:从零开始的混沌工程(二)

郭旭东

云原生 混沌工程

架构师训练营第1周_学习总结

方舟勇士

课程总结

week1-食堂就餐卡系统设计

不在调上

超媒体就像跳舞_REST_Jan Stenberg_InfoQ精选文章