【AICon】AI 基础设施、LLM运维、大模型训练与推理,一场会议,全方位涵盖! >>> 了解详情
写点什么

超媒体就像跳舞

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

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

关注

评论

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

Zabbix 6.0 源码安装以及 HA 配置

耳东@Erdong

zabbix ha 7月月更 zabbix 6.0

云原生(六) | Docker篇之实战Dockerfile

Lansonli

Docker 云原生 7月月更

关于InnoDB表数据和索引数据的存储

程序员欣宸

MySQL innodb MySQL InnoDB 7月月更

Unity实战问题-WebGL问题集锦-上篇

芝麻粒儿

Unity 7月月更

uni-app进阶之自定义【day13】

恒山其若陋兮

7月月更

【Docker 那些事儿】容器网络(下篇)

Albert Edison

Docker Kubernetes 容器 云原生 7月月更

Spring cloud 之限流

Damon

7月月更

使用kitti数据集实现自动驾驶——发布照片、点云、IMU、GPS、显示2D和3D侦测框

秃头小苏

7月月更 kitti

QComboBox 样式表

小肉球

qt 7月月更

linux之realpath命令

入门小站

Linux

一款强大的mock数据生成工具

Xd

Python 迭代器介绍及其作用

宇宙之一粟

Python 迭代器 7月月更

分布式系统中数据存储方案实践

Java 架构

strlen()

謓泽

7月月更

presto+yanagishima环境安装

怀瑾握瑜的嘉与嘉

presto 7月月更

zookeeper-watcher的javaApi相关使用

zarmnosaj

7月月更

Dockerfile中的保留字指令讲解

宁在春

Docker Dockerfile 7月月更

C#入门系列(二十三) -- 分部类和抽象类

陈言必行

7月月更

「分享」从Mybatis源码中,学习到的10种设计模式

小傅哥

设计模式 小傅哥 mybatis 大厂面试 面试问题

在线摇骰子色子工具

入门小站

工具

Block在开发中的实践应用

NewBoy

ios 前端 移动端 iOS 知识体系 7月月更

NFT市场格局仍未变化,Okaleido能否掀起新一轮波澜?

股市老人

3大类15小类前端代码规范,让团队代码统一规范起来!

南极一块修炼千年的大冰块

7月月更

Qt | 控件之QComboBox

YOLO.

qt 7月月更

python文件操作知多少

迷彩

Python基础 文件操作 7月月更

在线SQL转文本工具

入门小站

工具

鲲鹏代码迁移工具基础知识

乌龟哥哥

7月月更

Okaleido或杀出NFT重围,你看好它吗?

EOSdreamer111

认识区块链和比特币

沃德

程序员 7月月更

Android gradle常用

沃德

android Gradle 7月月更

王者荣耀商城异地多活架构设计

地下地上

架构实战营

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