NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

超媒体就像跳舞

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

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

关注

评论

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

通过ABAP代码判断当前系统类型,BYD还是S4 OP还是S4 Cloud

Jerry Wang

SAP abap S/4HANA SAP Business ByDesign

Golang Testing 概览 - 补充篇

hedzr

testing Go 语言 assertion

Pandas之:Pandas简洁教程

程序那些事

Python 大数据 数据分析 pandas 程序那些事

Go并发编程-channel多路复用

Rayjun

Go 语言 select

微博评论高性能高可用计算架构设计

Lane

2017-2020(4周年)读书年度总结及书单

punkboy

程序员 书单 书单推荐 推荐书单

不惧面试:HTTP协议(一)基础扫盲

悟空聊架构

面试 HTTP post GET 6月日更

公司战略:要不要多元化发展?

石云升

创业 职场经验 6月日更

【译】JavaScript 代码整洁之道-函数篇

KooFE

JavaScript 大前端 函数 6月日更 整洁代码

直呼内行!阿里大佬离职带出内网专属“高并发系统设计”学习笔记

Java 程序员 架构 面试

区块链+印章,区块链技术的长期潜力正在释放

CECBC

技术管理简单说

蛋先生DX

技术管理 6月日更

从天而降的AI“青云梯”,开发者们准备好了吗?

脑极体

【云原生AI】Fluid + JindoFS 助力微博海量小文件模型训练速度提升 18 倍

阿里巴巴云原生

高级软件工程师必备的五大技能

架构精进之路

6月日更 软素质

Golang Profiling: 关于 pprof

hedzr

Go 语言 profiling

Linux网络编程-UDP和TCP协议详解

Linux服务器开发

TCP 网络编程 udp 网络协议栈 Linux服务器开发

15:需求沟通的灵魂拷问:人与人之间的信任呢?

punkboy

需求管理 需求 需求落地 信任 信任机制

模块五 作业

夏日

架构实战营

MySQL基础之三:条件查询

打工人!

MySQL 6月日更

Kubernetes手记(2)- 核心组件/附件

雪雷

k8s 6月日更

Golang Testing 概览 - 深入篇

hedzr

testing Go 语言

膜拜!首次公布Java10W字面经,Github访问量破百万

Java 程序员 架构 面试

C/C++学习:C++并发与多线程

奔着腾讯去

c++ 并发 多线程并发 POSIX线程 C++11线程

区块链与物联网的强强联合将带来巨变

CECBC

(内含福利)不想成为咸鱼,我们怎样找到自己的未来之路呢?

刘华Kenneth

招聘 职场成长 云技术

16:阿里、京东、美团、电通等电商行业营销模型汇总

punkboy

营销 模型 市场营销 营销数字化 电商营销

宏碁亮相2021西洽会,以绿色智能“洽谈未来”

科技热闻

戏说代理模式

编程三昧

随笔 设计模式 开发 代理模式

你知道 Redis 可以实现延迟队列吗?

xcbeyond

队列 延迟队列 6月日更

17:为什么说海澜之家是“男人的货仓”和“服装的搬运工”?

punkboy

品牌 电商 电商平台 服装行业 男友力

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