请 WOA 到一旁“休息”去 (2007年09月03日)

2005 年底,著名 IT 分析机构 Gartner 的一个分析师 Nick Gall 发明了一个新词 -- WOA (Web-Oriented Architecture) 。大家知道,发明新缩写字 (acronym) 一向是 Gartner 的绝活。几个月后,SOA 界著名的 blogger 和专栏作家 Dion Hinchcliffe 对它表示支持,他甚至画了一幅图,说明基于 SOAP 和 WS-* 的 Web services,和基于 REST、POXJSON 的 WOA,以及其他 SOA 相关科技,在复杂度和丰富程度上的比较。

本以为 "WOA" 的命运,差不多已经和先前广遭声讨的 "SOA 2.0" 一样,开始消声匿迹,但最近在一片大谈 REST 声中(前两篇帖子的主题),发现 WOA 已死灰复燃

到底什么是 WOA?来看看始作俑者是怎么定义的。Nick Gall 在评论一篇同事的 blog 时为 WOA 下了以下的定义

Shorthand version: WOA = SOA + WWW + REST
精简版:WOA = SOA + WWW + REST

他接着说:

BTW, Since WOA is a substyle. of SOA (ie it imposes additional constraints above and beyond those imposed by SOA), you may be interested in our definition of SOA:
附带一提,因为 WOA 是 SOA 的一种子样式(也就是说,它在原本基于 SOA 的制约之上,还多了些额外的限制),你可能也会有兴趣看看我们对 SOA 的定义:

Service-Oriented Architecture:
面向服务架构:

Long version: An architectural style. in which certain discrete functions are packaged into modular, shareable, distributable elements ("services"), which can be invoked by consumers in a loosely coupled manner.
冗长版:一种架构样式,将某些特定的功能包装成模块化、可共享、可发布的元素(即“服务”),这些服务可以被消费者以松耦合的方式调用。

我想信他所谓的“SOA + WWW + REST”并非如算数的加法(联集),而指的是必须兼具 SOA、WWW,和 REST,是交集。但以上这些定义,真把 WOA 说清楚、讲明白了吗?

正因为Web是个偌大的空间,加上所有在上面不断发生的事,使得 “Web”成了一个非常大而模糊的概念,许多对技术不娴熟的用户,更是常把 “Internet”和 “Web”混为一谈。一个很经典的例子是“Web 2.0”这个已存在两年的词汇–恐怕到现在,许多人对到底什么是“Web 2.0”,仍存在着不尽相同的理解和看法。炒作 “WOA”,一个“面向Web的架构”,有着同样的问题,因为 Web 概念太宽了,到底什么是它的核心精神?扯不完!Web 2.0 相关科技 (AJAX, mashups) 能不能算是 WOA?那PHP, Ruby on Rails, Perl, Python 开发的 Web 应用呢?JSP、ASP 的应用呢?SaaS (Software as a Service) 应用又算不算 WOA?如果按照 Nick Gall 的定义,所有的 WOA 都必须符合 SOA,但不见得所有SOA 都是 WOA;还有一个关键是 REST。有人可能会抗议地说:凭什么只有 RESTful 和面向服务的算是 WOA?!凭什么说走 HTTP 的 SOAP Web services就不是 Web?争议的根源,正是在于 “Web”所涵盖的面太广了,大过 SOA 所在的企业计算领域。所以如果反过来硬要把 WOA 局限定义成 SOA 的子集,绝对是招引争议和混淆的好方法。如果目标是提倡 REST,那么先前帖子中提过的面向资源的架构 ROA (Resource-Oriented Architecture) ,是一个比 WOA 更适合的名称。“资源”和“服务”是两个更适合相提并论的抽象概念,并且“资源”充分地凸显出 REST 的设计哲学。

嗯... WOA... 反覆思索后,还是感觉它的概念很虚。乍看之下,看似是一个和 SOA 互别苗头的新架构,但主张者又强调,它是一个 SOA 的子集,是实现 SOA 的一种特殊的 style。无疑地,如前两篇帖子所谈,REST 的确是个好东西,可以利用在某些 SOA、SaaS,和 Web 2.0 领域的应用,但如果硬要搞出一个 WOA 并把它和 SOA 的关系扯复杂的话,可预见未来在许多企业的 SOA 发展史上,将应验两千多年前孔老夫子已预测到的情节:“名不正(某大大炒作出一个 "WOA" 的词),则言不顺(但仔细检验后,其实概念很虚);言不顺,则事不成(用 REST 做了一堆点应用 [point solutions],便洋洋得意以为已经是 SOA 化,其实差得远了);事不成,则礼乐不兴(没有规规矩矩从 SOA 方法论入手,分析企业战略目标、业务架构、信息架构等,做完善规划);礼乐不兴,则刑罚不中(SOA 治理 [governance] 不到位,未能清楚定义执行战略和可量化的评价指标,因而无从得知 SOA 执行的效果和投资回报);刑罚不中,则民无所措手足(end users 感觉不出来 所谓 "SOA" 的项目和做法比过去传统作法有何高明之处)。

聪明的 SOA 治理团队和架构小组,无疑会开始探索 REST 之美,并把它善用在架构当中,但不会迷失在 WOA,或无谓的 SOAP vs REST 之争当中。选择 REST 绝不是基于“为了 REST 而 REST”。

不久前听到 "JBOWS" (也有人用 "JBOS")一词,它和 RedHat 的 JBoss 没有直接关系,尽管发音相近。这是个讽刺搞笑的说法,代表 "Just a Bunch Of Web Services"。意思是说,目前许多已经采用了一堆 Web services 的企业,不等于已经做到 SOA,就像采用了 AJAX 不见得就具备 Web 2.0 精神一样。著名的 SOA 分析师 Jason Bloomberg 前不久才大声疾呼,用了不少篇幅强调这个重点(另一篇相关文章:SOA != Web Services)。基于 SOAP 的实现,是一种 Web services 的 style,而 RESTful 则是另一种 Web services 的 style。也就是说,Web services != SOA 的公式,放到 REST 的上下文中,依然成立。

正本要清源,擒贼要擒王。实施 SOA 的动机,应出自于加强 IT 和业务部门间的磨合,提高业务敏捷和未来应变的弹性和灵活性,而不是因为新冒出一个超酷、超简单,名为 WOA 或 REST 的技术实现手段。中文的老话叫“本末倒置”,新话叫“屁股领导脑袋”;而老外则有:“拖车放在马前面”"putting the cart in front of the horse" 一词。别告诉我:“你说的那种 SOA,是企业级的 SOA;而我们现在谈的,是比较广义的,很多用 REST 架构的 Web 应用,都可算是广义的 SOA,包括一些 Web 2.0 和 Enterprise 2.0 的应用”。如果是这样的话,那干脆把所有 IT 的东西统统叫 SOA 算了!大家对 SOA 本来就已经够模糊了,这么做,只会徒增混淆,火上浇油,而太便宜了那些炒概念的分析师。某个科技概念的价值,是会随着它的定义被灌水、扩大解释而锐减的。分析师大大和厂商们,请珍惜 SOA,别残害它。

 

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/16186206/viewspace-557609/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/16186206/viewspace-557609/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值