10 月 23 - 25 日,QCon 上海站即将召开,现在购票,享9折优惠 了解详情
写点什么

超媒体就像跳舞

  • 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:091837
用户头像

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

关注

评论

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

Facebook开源的数据Mock:Memisis详解

陈磊@Criss

6种快速统计代码执行时间的方法

Bruce Duan

java统计时间 currentTimeMillis nanoTime StopWatch

非科班学习编程一定得知道这几个网站!

我是程序员小贱

一文了解对称加密与非对称加密

我是程序员小贱

安全

2.3.1 理解动态代理 -《SSM深入解析与项目实战》

谙忆

Serverless:为我们到底带来了什么

刘宇

Serverless 云原生

从实际案例讲 Deno 的应用场景

keelii

Java typescript deno

Swagger 这一个文章就够了

陈磊@Criss

重磅消息,我国数字人民币将在京津冀等具备条件地区试点

CECBC

数字货币 货币

微服务框架-模块需求篇

superman

从北京降雨的复盘中,我发现了企业SD-WAN网络的秘密

脑极体

Flink 中的应用部署:当前状态与新应用模式

Apache Flink

flink

Junit执行单元测试用例成功,mvn test却失败的问题和解决方法

陈磊@Criss

用Ant实现Java项目的自动构建和部署

陈磊@Criss

LeetCode题解:88. 合并两个有序数组,splice合并数组+sort排序,JavaScript,详细注释

Lee Chen

大前端 LeetCode

微服务框架 - 模块功能设计篇

superman

Windows AD 保姆级配置NTP服务器教程

BigYoung

时间 AD ntp Windows Server 2012 R2

源码分析 | 咋嘞?你的IDEA过期了吧!加个Jar包就破解了,为什么?

小傅哥

Java 字节码插桩 asm bytebuddy

Vue项目起步

JackWangGeek

Vue

实用心理学—没用你打我!

代码制造者

职场 职场搞笑 信息技术 人工

NetPerf揭示容器间是高速路还是林荫小路

陈磊@Criss

【写作群星榜】8.1~8.14 写作平台优秀作者 & 文章排名

InfoQ写作社区官方

写作平台 排行榜 热门活动

为什么会是Docker?

架构精进之路

Docker

2.3.2 JDK动态代理 -《SSM深入解析与项目实战》

谙忆

中本聪原始比特币论文解读:点对点的电子现金系统

韩超

比特币 区块链

手撕二分查找及其变种,就是干!

我是程序员小贱

[修复 Webpack 官方 Bug] 提取CSS时的依赖图修正

分一

大前端 webpack 编译优化 源码刨析

Django的Models更新时,不触发Signals解决办法

BigYoung

django singals 信号机制 update 更新

图解23种设计模式——前方高能,前端切图仔请务必抓好方向盘

执鸢者

typescript 大前端 设计模式

芯片破壁者(十二.下):青瓦台魔咒与半导体“死亡谷”

脑极体

微博基于 Flink 的机器学习实践

Apache Flink

flink

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