写点什么

使用架构决策框架公平地比较 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:091473
用户头像

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

关注

评论

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

生成式AI将重塑中国云产业

百度开发者中心

智能云 ChatGPT 生成式AI 文心一言

生成式AI革新传媒互联网行业

百度开发者中心

媒体 传媒 #人工智能 ChatGPT 文心一言

对话无服务器专家 Luca Mezzalira:你真的为 Serverless × AI 做好准备了吗?

亚马逊云科技 (Amazon Web Services)

Java 人工智能

电商秒杀系统架构设计

艾瑾行

架构训练营

鹏云网络入选中国信通院《高质量数字化转型产品及服务全景图(2023)》

鹏云网络

数字化转型 云服务 分布式存储 信通院 分布式块存储

领域驱动设计(DDD): 三层架构到DDD架构演化

付威

领域驱动设计

代码随想录Day50 - 动态规划(十一)

jjn0703

龙蜥社区标准化SIG举行线下社区标准研讨会,助力开源社区规范发展

OpenAnolis小助手

操作系统 龙蜥社区 硬件兼容性 质量测试 标准化 SIG

生成式AI:引领未来文案创作新潮流

百度开发者中心

#人工智能 生成式AI 文心一言

生成式AI技术的应用与发展

百度开发者中心

自然语言处理 #人工智能 ChatGPT 文心一言

谁能代表中国软件的未来

B Impact

创建web应用程序,React和Vue怎么选?

没有用户名丶

采购云服务器安全与成本不可兼得?云耀云服务器L或许可以了解一下

轶天下事

Java函数式编程 :为什么要关心Java8

java易二三

Java 编程 程序员 计算机 科技

Java仿抽奖系统

java易二三

Java 编程 程序员 计算机

超越边界:FaaS 的应用实践和未来展望

SOFAStack

Serverless 架构 开发 Faas 函数

直播app源码,会话描述协议SDP:高质量平台服务

山东布谷科技

软件开发 数据传输 直播APP源码 sdp 会话描述协议

快速构建商业模式,企业在云服务器选购上有什么需要注意的?

轶天下事

R语言之数据导出

timerring

R 语言

AI+SaaS,会是微盟们的新法器吗?

自象限

安卓设备文件传输 MacDroid pro for mac激活中文

胖墩儿不胖y

文件传输 Mac 软件 传输文件

DaVinci Resolve Studio 18 for Mac 18.5.1中文激活版

mac大玩家j

达芬奇18破解版 达芬奇18 视频调色软件

生成式AI:改变未来的创新力量

百度开发者中心

#人工智能 ChatGPT 生成式AI 文心一言

ARTS 打卡第 2 周: 对比法在编程上的具体应用

前行

适用于各阶段Java程序员的面试备战/避坑指南

程序员小毕

Java 程序员 架构师 java面试 八股文

极狐GitLab 价值流管理之「总时间图」使用指南

极狐GitLab

DevOps gitlab 软件研发 价值流 时间图表

C++函数重载

芯动大师

蚂蚁 SOFAServerless 微服务新架构的探索与实践

SOFAStack

Serverless 微服务 开发 应用架构

HarmonyOS元服务开发实践:桌面卡片字典

HarmonyOS开发者

HarmonyOS

我是如何使用Spring Retry减少1000 行代码

小小怪下士

Java spring 程序员

流程图&时序图绘制小tips

得物技术

流程图 UML 画图 企业号 8 月 PK 榜

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