REST 作为风格 -- WOA 作为架构

  • Dave West
  • 黄璜

2009 年 6 月 11 日

话题:SOAREST架构云计算DevOps语言 & 开发

Dion Hinchcliffe 最近创作了两篇相关的文章,探求了面向 Web 的架构 (WOA) 与其它技术之间的关系。第一篇主要关于 WOA 与 REST;第二篇主要关于 WOA 与 SOA。第一篇文章的主要观点是:REST 是一种风格而 WOA 是架构。第二篇文章声称 WOA 实际上值得高度称赞的亚风格的 SOA,并探讨了这一简单的观察所揭示的意义。

作为讨论的开头,Hinchcliffe 承认一开始是 REST 最先吸引了你的注意:

你已经在 Web 上读了许多关于 REST 的文章,它将如何成为未来的 Internet 架构,并且你已经决定将其运用于你的工作。但当你更深入到这一课题时,会发现 REST 本身似乎就是关于在 Internet 上将数据资源从一处移到另一处,而不是构造一个完整的应用。对于你来说如何将其合适的应用于你的上下文环境 - 一个完整实现并良好设计的软件 - 中来并不清楚 (当然也是缺乏文档的)。

然后他写到:

你开始揣测 REST 是如何被特别地 (以及策略性地) 用于一个应用或是整个软件架构的。换句话说,哪一些是活动的部分以及应用它们时该如何约束。你同样想知道还有什么是你可以与 REST 共同使用,或能对其补充使其变得更好的。你甚至可能想知道什么时候可以打破规则而使用其它一些相关的措施。这些正好是 WOA 派上用场的地方了。

最后总结到,“因此,简而言之,WOA 远比 REST 更多,而 REST 是 WOA 的基本架构风格。”

Hinchcliffe 将 WOA 分为两部分来定义:核心部分包括 REST,URL,SSL 以及 XML;还有一个“WOA 完全版”包括了协议以及接口 (例如,BitTorrent),身份以及安全 (例如,OpenID),分发与组件 (例如,Open API),以及数据格式与描述 (例如,ATOM)。这些内容以六个层次组织成了 WOA 栈 (包括示例用的技术):

  • 分发 (HTTP, feeds)
  • 组合 (Hypermedia, Mashups)
  • 安全 (OpenID, SSL)
  • 数据兼容性 (XML, RDF)
  • 数据表示 (ATOM, JSON)
  • 转移方式 (REST, HTTP)

这一个栈增强了 WOA 与 REST 之间的关系,后者作为基础支撑着这整个大型的架构思想。

很重要的一点是要认识到 WOA 还并未成熟到成为一个架构模式或是良好定义的框架。如 Hinchliffe 所写的那样:

WOA 是当下开发者们正在实施的... 一系列设计 Web 应用的最佳实践。它并不是一个方案和技术的摸彩袋,而是一个真正发挥作用的优雅的模型:它是安全的,有着良好的 Web 伸缩性,性能卓越,... 同时还是易于上手,易于实现,而当你一旦理解了 Web 之后这几乎是本能而直观的。

那这一风格与架构的讨论又是如何联系到 SOA 的呢?

首先,依据 Hinchcliffe 的说法,“WOA 实际上值得高度称赞的亚风格的 SOA”。更进一步

对于那些进行传统 SOA 开发的人们来说,WOA 当然也提供了诸多的优势。其中包括了提升明显的服务消费模型,更便宜更节约时间,以及释放了链接架构的巨大能量来驱动信息发现,利用与分析。Open API 与云计算所蕴含的深厚的业务意义这周变得更加清晰。WOA 更是为访问现今可获取许多新的在线产品分发模型打开了匝道。SOA 当中的分发是一个被忽视掉的悲伤的话题,然而 WOA 能带来一个广泛的技术集合,从聚合到非凡的低阻 Web 服务。

而 WOA- 因为将 REST 合并作为核心技术,而又不完全等同于它 - 提供了在基于 SOAP 模型与基于 REST 的 Web 服务技术之间的调和。

WOA 可以被看着是将 SOA 超出防火墙的一种方法。Hinchcliffe 与他的同事,David Linthicum,建议:

WOA 最大的舞台可能是其跨防火墙的意义,API 部门可以使用 SOA 来提供可伸缩的,自服务的交易合作功能,尽管防火墙内部的业务也是一个很大的舞台。

WOA 支持 SOA 实践者去探索不同的业务场景集合。Hinchcliffe 讨论了五个潜在的场景,包括:“SOA 信息的爬虫性,搜索性,与发现性”与“Open API 将 WOA 直接暴露于合作伙伴。”

揭开 WOA:前沿架构风格的六个方面SOA 世界开始认真考虑 WOA 这两篇文章都值得一读,以更深入的看待 REST,WOA,与 SOA 这个三元组。

查看英文原文:REST is a style -- WOA is the architecture.

SOAREST架构云计算DevOps语言 & 开发