一开始是 SOA(当然,这取决于你的静止参考系 也许是REST [没有双关语义]),然后是REST,面向资源的架构(ROA),接着是EDA, SOA 2.0 ,直到现在的面向Web 的架构(WOA)。除了REST( SOA 和 REST 的争论在别处盛行),这些术语到底给这个问题带来了什么意义,或者只是更加混淆了这些问题?根据 Anne Thomas Manes 的说法,WOA 是一个过头了的三字经:
Nick Gall 在 2005 年末的 Gartner 峰会上第一次提出了这个术语。他将其描述成SOA 的一个子集并拥抱了 REST 的原则和 W3C 的万维网架构。但之后 Dion Hinchcliff 在今年二月撰写了相关文章 (并重新定义了它)。
按照 Dion 的说法,WOA 的基本信条是: > - WOA 里的信息是以网络上的资源的形式来表示的,通过 URI 中指定的协议来访问和操作,协议一般是 HTTP。
- 网络上的任一资源可以通过全球唯一地址来定位,即统一资源定位符(URI)或者符合 RFC 3986 的 URI。
- 资源是被用一种叫作表述性状态转移或 REST 的技术,通过 HTTP 的动词来进行操作的(GET,PUT,POST,DELETE)。
- 对网络资源的操作仅是通过在网络上的组件来进行的(实质上是浏览器和其它的 Web 服务器)。
- 对资源的访问必须是分层的,并且除本地之外,不需要对网络有更多的了解。
- 组件的职责是理解状态表述,并使其操作资源的转移状态有效。
- WOA 资源的服务契约是隐式的;即它接收到的状态表述。
- WOA 可以包含内嵌的 URI 以构建具有细粒度表述状态的大规模网络(例如,订单资源可以内嵌库存资源的 URLs)
- WOA 包括了 Thomas Erl 的 SOA 的精髓,尽管常常是以出乎意料的方式(比如拥有契约,尽管是隐含的)。
然而,Anne 继续提到,近来关于 WOA 的话题逐渐增多,支持和反对这一原则的都有:
…… Dana Gardner 四月初发表在 ZDNet 上的一篇文章欢呼 WOA 是 SOA 的救世主。Dion 在 ZDNet 紧跟着发布的另一篇文章详述了 Web 2.0 成功案例并暗示如果 SOA 将焦点集中在 WOA 将会获得更大的成功。但学者群体对又一个的“xOA”缩写一点也不感冒。 SearchSOA 的 Mike Meehan 优雅的总结了这一论题并质问到 WOA 到底给 SOA 带来了什么新鲜的血液?同一天 Dana Gardner 在 ZDnet 发表了第二篇题为“受够了WOA ”的文章。就在上周 ZapThinkers 在一篇讨论中反复衡量指出 SOA 和 WOA 是两个不同层面上的抽象,并提出又一个术语“面向 Web 的 SOA”。
Anne 站在反对 WOA 的一边,她不觉得 WOA 与 REST 有什么本质区别。Mike Meehan相信这是一个缺少基础的术语并且完全是多余的。 按照 Mike 曾游说过的一个人的说法:
“这让我想起了曾经有些人想要使‘SOA 2.0’的概念得到认同(某个供应商曾经尝试使用这个术语,但在受到 SOA 社区的拒绝之后又弃用了)。”
就像 Mike 所指出的一样,尽管 David Linthicum 认为 WOA 也有它积极的一方面,“但它说穿了还是 SOA”:
Dave Linthicum:“变化最快的是企业都发现,其实在 Web 上构建 SOA 是一条阻力最小的道路。他们可以使用 Web 资源,包括内容、因特网交付的 API,以及 Web 服务。一旦 WOA 取得成功,你将会看到跟防火墙或 SOA 成功背后所浮现来的一样的景象。这跟 Internet/Web 系统成功之后 intranet 应用的兴起是一样的。”
然而, Dana Gardner相信 WOA 将会很快侵蚀掉 SOA 。
所以我现在开始怀疑,那扇被经典定义的 SOA 的整体部署与价值的窗户,是不是已经摇摇欲坠了。Web 接口和遗留应用数据的直接转化是不是就已经足够了?暴露旧的应用,通过巩固和现代化来降低 IT 支持的成本是不是已经足够了?
Dana 给 WOA 下的定义看起来却跟 REST 非常相像。回到 Anne 这边,她指出维基百科上(甚至)都还没有 WOA 这个词条:当然这并不是对其相关性的一个很好的说明。她反复强调这一重要观点 那就是其他人 多年来也同样指出过 SOA 不是一个技术层面的术语:REST 是和 Web 服务一样的一个有效方法:
……从技术角度理解最重要的是,一个服务应该支持各种风格的接口访问。它应该允许一个应用程序用它所想用的任何方式来与自己进行交互: - 面向方法的接口 (例如, SOAP)
- 面向消息的接口 (例如,JMS)
- 面向资源的接口 (例如,HTTP)
为了理解 WOA(在 Anne 的定义看来应该是 REST)如何与 SOA 进行结合,Anne 指出两者的区别在于 SOA 详述了一个系统层面的架构风格(如何实现你的服务),而 WOA 参考的一种接口层面的架构风格(如何将你的服务暴露给用户)。
你应该从长远来设计你的服务,今年炒得火热的技术很有可能在未来五年内就销声匿迹。
看看 DCE,CORBA,DCOM,J(2)EE 等等的历史,会发现这是一个很好的观点。但最终这会给 WOA 带来什么?生龙活虎,奄奄一息还是死在最后一刻?我们真的需要另一个REST 术语吗,还是WOA 真的有什么显著的不同?
评论