9 月 13 日,2025 Inclusion・外滩大会「开源嘉年华」正在限量报名中! 了解详情
写点什么

使用架构决策框架公平地比较 REST 和 WS-*:争论可以停止了吗?

  • 2008-05-11
  • 本文字数:1763 字

    阅读完需:约 6 分钟

去年,Olaf Zimmermann 及其 IBM 研究院同事开发了一个能促进企业应用开发的架构决策框架

在实践过程中,捕获架构决策对架构师来说依旧是一个挑战。已知的决策捕获抑制剂包括:项目发起人没兴趣、缺少时间和工具支持不足

他们提出了针对 3 个决策捕获步骤的概念框架:

  • 决策识别 —— 现实:决策识别仅仅基于个人经验,而且 [常常是] 临时性的。
  • 决策制定 —— 现实:决策制定者常常带有个人偏见……他们依赖于过去的经验……[或]……行业趋势。
  • 决策执行 —— 现实:训练、架构模板和代码互审是主要的决策执行方法。

通过给决策建模提供一个结构、积极主动的方法,他们意在:

通过决策依赖模型、决策驱动者目录和推荐的决策制定技术来改善决策制定质量

几周前,Cesare Pautasso、Olaf Zimmermann 和 Frank Leymann 在 WWW 2008 会议(在北京举行)上发表了一篇论文,详细比较了“ RESTful Web 服务大型 Web 服务(Big Web Service)”,对“制定正确架构决策”进行了深入探讨。

集成企业应用可以使用多种不同风格。这个选择……是一个重要架构决策。“大型”Web 服务技术栈(SOAP、WSDL、WS-Addressing、WS-ReliableMessaging、WSSecurity 等)提供了远程过程调用(RPC)和消息集成风格的互操作性。最近,另一种解决方案被提出来实现跨互联网的远程过程调用:所谓的 RESTful Web 服务。

分布式系统中关键的架构决策,如选择集成风格和技术,应该以每个备选方案的技术论据和具体交付能力的公平比较为基础。而 WS-* 与 REST 之争已经不幸地退化成了偏见和信仰的争论,这只能导致混乱和无法履行的期望。

在这篇论文中,[作者] 在架构原则和决策的基础上,采用了量化方法来比较这两种集成风格。

首先,作者详细地回顾了每种技术公认的优缺点: ### SOAP 和 WS-* 栈

除了它们公认的复杂性,SOAP 消息格式和 WSDL 接口定义语言作为能在异构中间件系统中提供互操作性的网关技术得到了广泛使用。

自相矛盾的是,这种由当今 WS-* 工具所提供的将已有软件组件方便地转化为 Web 服务的能力也会被滥用。这样,避免跨抽象级别的信息泄露就变得很重要。例如,在服务接口中出现服务实现的本地数据类型和语言结构就会引发互操作性问题。这个缺点可通过表述和强制某种设计和编码指南(如契约优先的开发)得到缓解。

REST

RESTful Web 服务的简单性是公认的,因为 REST 利用了现有众所周知的 W3C/IETF 标准(HTTP、XML、URI、MIME),这种必须的基础设施已经深入人心……这种轻量级的基础设施,使用极少的工具就能开发其中的服务,获取成本低廉且采用门槛很低。

[但是],关于公认的 RESTful Web 构建最佳实践存在一些混淆。高端 REST(Hi-REST)推荐已被制定,但是它们并不总被所谓的低端 REST(Lo-REST)实现遵守……[在实践中] 只有 2 个动词(幂等请求使用 GET,其他则使用 POST)被使用……[因为] 代理和防火墙可能不总是允许建立使用其他动词的 HTTP 连接……限制导致了一系列的替代方法(workaround),其中“真正的”动词要么使用一个特殊的 HTTP 头(X-HTTP-Method-Override)发送,要么就——如 Ruby on Rails——用一个隐藏框(——method)提交……

接下来,他们基于架构决策框架确定了一个比较方法。他们使用字面含义识别候选决策和替代决策。在使用 EST 和 WS-* 时,他们开发了几个记录架构决策的集成场景。他们为每种集成风格创建了一个决策模型,这使得他们能使用一些数据(如决策数量、每个决策的备选数量……)来客观的比较这两个模型。

作者接着继续比较了原则、概念和技术。他们的发现包括:

在原则层次,两种方法有相似的量化特征。在概念层次,在为 WS-* Web 服务决策时,必须制定的架构决策更少,而备选方案更多。

在技术层次,必须制定的决策数目相同,但是在构建 RESTful Web 服务时必须要考虑的备选方案更少。

特别地,作者说明:

这样,就从量化的观点认识了 REST 公认的简单性。[但是],据我们的经验,对于 RESTful 服务非常容易做出的决策会导致显著的开发努力和技术风险,如设计严格的资源规范和它们的 URI 寻址模式。

作者总结说:

……灵活地使用 RESTful 服务,特别是跨互联网的集成(以 Mashup 的方式),对于生命跨度更长和具有高级 QoS 需求的专业企业应用,优先使用 WS-* Web 服务。

查看英文原文 A Fair Comparison of REST and WS-* using an Architectural Decision Framework: is the Debate Over?

2008-05-11 03:091751
用户头像

发布了 255 篇内容, 共 65.6 次阅读, 收获喜欢 10 次。

关注

评论

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

噱头or契机:多端协同游戏的草蛇灰线

脑极体

读书有用吗

孙苏勇

读书

如何利用 Google 开源工具 Ko 在 kubernetes 建并部署 Go 应用

公众号:云原生Serverless

Kubernetes 云原生

内容平台与热点挖掘思考

程序员架构进阶

28天写作 4月日更 领域思考 内容平台

ShutdownHook原理

捉虫大师

Java

深入汇编指令理解Java关键字volatile

AI乔治

Java 架构 volatile Java内存模型

一次用户故事拆分分享

Bruce Talk

敏捷 Agile 用户故事 User Story

HZFE 快报002 / 比特币7年来首次跌破50天均线

HZFEStudio

大前端 金融科技 科技互联网 资讯

Python OOP-2

若尘

面向对象 oop 面向对象编程 Python编程

微信读书又更新,吃灰已久的Pencil又能拿出来遛一遛了。

彭宏豪95

效率工具 读书 阅读 4月日更 微信读书

苹果(Apple Watch)手表使用必知必会19条

Flychen

苹果手表 IWatch Apple Watch

大学生调研:在选择工作时,最看重什么?

石云升

28天写作 4月日更 1 周年盛典

Flink的Checkpoint持久化存储方案

五分钟学大数据

flink 4月日更

关于读书的随想

小天同学

读书 4月日更

Git 常用命令速查

箭上有毒

4月日更

Java最前沿技术——ZGC

AI乔治

Java 架构 jdk ZGC JVM

太厉害了,终于有人能把Ansible讲的明明白白了,建议收藏

沐风

ansible

【得物技术】得物分布式UI自动化实践

得物技术

测试 UI 质量 自动化测试 得物技术

大数据-数据处理分类篇

进击的梦清

大数据 批处理 流式计算框架

产品训练营第三周作业

innovator琳

产品

Golang 反射

escray

学习 极客时间 Go 语言 4月日更

网络协议学习笔记 Day2

穿过生命散发芬芳

网络协议 4月日更

高效获取信息的几点经验

彭宏豪95

效率 信息 阅读 4月日更

当区块链遇到工业互联网,浪潮云洲链正在那里

云计算

掉坑了!GROUP_CONCAT函数引发的线上问题

AI乔治

Java MySQL 架构 GROUPING运算符

浅析 Linux 中的 I/O 管理

赖猫

Linux

基于NIO高性能、可扩展网络应用库:xSocket

风翱

4月日更 xSocket

ceph-csi源码分析(1)-组件介绍与部署yaml分析

良凯尔

Kubernetes 源码分析 Ceph CSI

40 图|硬核解析用 Mac M1 玩转 SpringCloud

悟空聊架构

开源 Mac SpringCloud m1 passjava

打通本地部署和公有云,混合云架构让“鱼”和“熊掌”兼得(一)

UCloud技术

混合云

ceph-csi源码分析(2)-组件启动参数分析

良凯尔

Kubernetes 源码分析 Ceph CSI

使用架构决策框架公平地比较REST和WS-*:争论可以停止了吗?_SOA_Jean-Jacques Dubray_InfoQ精选文章