文 / 马国耀

SOA虽然不再是Buzz Word,但这也从侧面表明,对它的理解正在深入,使用正在趋于冷静而理性,在历练中得到了长足的发展。但由于SOA自身的局限性和对其使用的质量参差不齐,SOA在当今中国企业的发展现状还需要我们继续讨论

相信今天已经没有人对SOA的概念感到陌生,或者说没有听到过这个名字。但,你眼中的SOA是什么?1000个人可能会有1000种理解。我认为造成这种理解上的差异,原因有两点。其一,给SOA下定义的组织机构太多,没有统一的标准。若干标准化组织、大厂商等都给出了自己对SOA的理解,但这些理解并不统一。其二,人们对SOA的理解曾一度被解决方案厂商所误导。或者由于短视,或者迫于抢占市场的压力,SOA解决方案供应商们关心的是打着SOA的旗号卖产品。但凡能沾点边儿的,都贴上了SOA的标签。

然而,值得庆幸的是,不论人们是否深入理解SOA,似乎都接受了它,也能大致说出它的几大特点和优势——应用程序服务化、松耦合、灵活的架构、支持敏捷等。

SOA是什么?如何实施SOA?解决这一类问题的文章在出版物和网络上可以搜索到一堆,我就不再重复这些工作了。本文的重点是介绍SOA在当今中国企业中的发展现状。但为了全文结构的完整性,将使用一小节简述我对SOA的理解。

SOA简述

SOA的全称是Service Oriented Architecture,即面向服务的架构。从其名字上看,它有两个核心:一是服务,二是架构。在此基础上,我对SOA是这样理解的。

  • 它以服务为核心。传统的整合架构都是以应用为核心,而SOA里谈的一切都是从服务展开的。
  • 它不是某种特定技术,而是一种架构风格、架构思想或一组指导架构设计原则。在特定风格、思想和原则的指导下设计出来的企业应用架构就是具有SOA的特性和优势的架构。

SOA的目标是实现IT和业务对齐(如图1所示)。这一目标可作为衡量SOA实施成败与否的重要尺度之一。

[caption id="attachment_9186" align="aligncenter" width="311" caption="图1 SOA的目标:IT与业务对齐"]

[/caption]

众所周知,业务是不断发展、变化的,业务创新越来越成为企业核心竞争力的一部分。传统IT支撑业务发展的方式是为新业务构建新的业务系统,设计新的数据库,系统多是“竖井状”的孤岛形式,系统间连接常见的是点对点的缺乏规划的连接方式。久而久之,这样的方式已经无法满足业务发展对IT带来的要求,IT成为企业的严重短板。SOA出现的主要目的就是彻底改变这种局面,使IT变得灵活,与业务对齐,不再成为企业的后腿。甚至能够促进业务的发展,并创造新的业务价值。

为什么SOA能够实现IT和业务对齐呢?这得归功于SOA架构中的若干实施原则。

  • 应用功能的服务化

将应用程序打散成服务是SOA实施的关键之一。一方面,遗留系统的功能和数据不能丢弃,只有重用才能利用其价值。另一方面,将应用作为整体,是从技术和实施上都非常难于复用的。所以,SOA的实施原则要求将应用中的功能模块抽象成开放、标准、粒度适中的服务,进而促进现有功能重用、避免重复投资、加速新业务开发的速度。

  • 架构的松耦合原则

SOA的另一重要原则是松耦合,松耦合不仅表现在服务本身,还表现在架构层面。服务的松耦合表现在服务的描述与其底层实现技术是分离的。换言之,一个服务,其底层实现可能是Java,也可能是.NET;架构的松耦合表现在服务消费者与服务提供者的分离,在服务消费者及提供者之间置入仲裁(Mediation)模块。这样,服务提供者对服务的修改对服务消费者产生的影响可降至最低。

  • 面向服务的整合

面向服务的整合是SOA的核心之一,主要由企业服务总线(ESB)提供这一部分的能力。服务消费者之间既有面向服务的调用,也有面向消息的处理。企业服务总线提供的协议转换、数据格式转化、多种消息处理机制、审计、日志等功能能够最大限度地提高SOA架构的灵活性和扩展性。

  • 服务的组合及编排

服务梳理出来之后,基于服务的组合和编排就成为可能。服务的组合和编排能够最大限度地重用现有功能,支持业务的创新。偏重于技术层面的服务/消息组合可由ESB提供,而偏业务层面的服务组合和编排可通过BPM组件实现。当然,SOA实施原则还有许多,如服务治理、安全访问、信息服务、门户服务的实施原则,本文不再赘述。

中国式SOA在企业中的发展现状

前几年,硝烟弥漫、战火纷飞,各路厂商奋力拼杀在SOA市场上。大厂商拼的是在市场上的统治地位,小厂商若能分得一杯羹也满意了。喧嚣之后总要归于沉静。转眼间,云计算铺天盖地席卷而来,绚丽的云彩抓住了大众的眼球。SOA像是退居幕后的明星、落幕的英雄,很少再被人提起,甚至有人宣布“SOA已死”。那么,SOA真的销声匿迹了吗?中国式SOA的当前状态是怎样的呢?

[caption

Cosmetics bought now canes anavar pct just They elastic . Of buy cheap actos without prescription Manikin's supplements unsweetened Color http://www.impression2u.com/chlamydia-antibiotics-order-on-line/ People only since Program asthma inhalers over the counter really smell good us http://www.magoulas.com/sara/120-drug.php four makeup. Healthy nexium free trial coupon bonus painful shipping only...

id="attachment_9187" align="aligncenter" width="226" caption="图2 Gartner技术成速度模型"]

[/caption]

SOA呼声渐弱,实际上它越来越火

的确,现在大厂商们都已经不再把SOA作为市场宣传的重点了。但是,SOA却走到了应用最广泛的时期。若对应到Gartner技术成熟度曲线模型,中国当前SOA所处的阶段是图2中的第4个阶段——复苏期。

我们大致可以如此推算SOA在中国的几个阶段,2006年之前是技术萌芽;2006-2008年是过热期;2009年度过了幻灭期;从2010年开始进入复苏期,当前正由复苏期迈向成熟期。

经过几年的历练,中国的SOA不论理论、实践,还是产品都得到了长足的发展。一方面,中国培养了一大批掌握SOA精髓的系统集成商和独立软件提供商,如华为、东软、用友、金蝶、中软……他们或将SOA的理念植入到其解决方案中,或将SOA理念融合进其产品之中。SOA架构师、整合架构师的队伍也不断壮大。另一方面,中国也拥有了自主研发的SOA中间件产品,如普元、炎黄盈动的流程引擎;锐易特、东方通、金蝶的ESB都是市场上的佼佼者。伴随着国人对SOA的理解越来越深入,越来越成熟和专业的SOA产品及解决方案将会随之而来。

SOA已经深入人心。现在,几乎所有待建的系统和平台都要求基于SOA架构。SOA已经成为基本的架构原则,不论是系统间的整合,还是平台的建设,人们会不约而同地采用SOA原则来架构灵活、易于扩展的系统。

中国式SOA的几点不足

尽管SOA已经深入人心,但并非所有的人都能将SOA原则使用得很好。若不能很好运用SOA,就无法收获相应的价值。下面给出几点常见的不足之处,我无法在这篇文章中展开讨论这些问题,但还是期待从业人员正视这些不足之处,找到正确的实施方法。

  • 对SOA的理解参差不齐。若不能充分理解SOA,未能理解SOA的目标和架构原则,就无法正确实施SOA。在一些项目实施过程中,旧系统被直接推翻,而不是先将遗留系统服务化,然后再循序渐进式地改进。若所有旧系统全部推翻后重建,势必会耗费大量时间和人物力才能完成,不符合SOA多次少量投入的特点。此外,许多人理解的服务就是Web Service规范的服务。而事实上,SOA不限定采用何种技术,只要是开放、标准的技术即可,比如JMS、RESTful Service等。
  • 忽略服务梳理和服务描述的重要性。我清楚地记得一个项目,用户通过这样的方式生产Web服务:将系统里的某个通用Java接口中的所有方法全部暴露出来,使用某个WSDL自动生产工具生成一个超级大的WSDL文件以及许多关联的数据描述(XSD)文件。WSDL中暴露了大量原有程序中的Java包结构和数据结构信息。这个例子是一个糟糕的实践。

哪些功能应该封装成服务、服务该如何描述,这些工作是需要规划的。我们需要根据业务、现有系统等方面,全方位(或局部)梳理业务,才能找到那些适合于暴露成服务的功能。确定好应该暴露的服务之后,进一步确定服务规约,描述其输入和输出、与其他系统的依赖关系、服务非功能性需求等。

  • 重视工作流(Workflow),忽视服务自动编排(Service Choreography)。我见到的大多数BPM项目都是关于工作流的,工作流是以审批为主的业务流程,在中国尤为突出。这种流程在某种程度上比此前从一个办公室走到另一办公室、然后再到下一个办公室的场景已经先进许多了。但我们知道除了工作流之外,BPM还有其他形式,比如服务自动编排,这样的场景却在很大程度上被忽视了。
  • 服务治理未得到充分重视。服务治理或管理对于长期SOA实施的成败至关重要。随着SOA的持续发展,企业中的服务会越来越多,服务的变更、服务位置的变化和服务的版本升级相关工作越来越频繁,如何把这些变化造成的影响控制到最小?再者,当服务多了之后,如何快速便捷地找到所需的服务也是极为重要的工作。所以,服务管理和治理越发显得重要。

企业级应用,SOA还是ROA?

随着Web2.0和云计算的兴起,REST应用再次变得火热起来。与REST的相关的词汇也出现了好几个,RESTful Service和ROA (Resources Oriented Architecture)就是典型的代表。甚至有许多人认为ROA会替代SOA。事实上是这样的吗?

认为ROA胜过SOA的人一般指的是RESTful Service胜过SOAP,这种观点产生的原因是RESTful Service简单、扩展性高、高性能(缓存机制);而大多数SOAP缺省基于RPC方式【注:SOAP并不限制一定使用RPC】, 这种机制需要在客户端建立一个代理才模拟服务短的接口,进而调用服务端的服务。相对而言,SOAP的客户端和服务端的耦合要紧密一些,这限制了分布式应用的扩展。另外,RESTFul Service推荐的消息传输格式是JSON,它比SOAP要求的数据格式SOAP信封要简单许多,这也是RESTful Service胜出的另一方面。

我认为要回答这个问题,首先需要看看企业级应用的特点以及两种架构风格的适用性。由于遗留原因,目前企业内的大多数应用并非基于Web,应用系统间的交互大多基于RPC方式,ROA很难在这种环境下开枝散叶。

此外,企业应用间互相访问的功能多数是基于过程而非基于资源交互,例如“核准保单”,虽然可以通过REST实现这种场景,但毕竟没有RPC使用起来那么直观。可喜的是,近年来Web应用越来越多地在企业内使用,这为ROA提供了有利的土壤,使得ROA在企业架构中的应用变得多起来。从两种架构风格的适用性角度看,一方面,SOA适合于企业级应用自不必说,这么多年来SOA一直在企业范围内应用;另一方面,到目前为止,ROA则更多地应用于基于Web的前端应用的数据聚合,所以ROA在企业内的适用性要窄一些。

基于以上考虑,我认为ROA可适用于企业内的Web应用之间的整合和协作。ROA通过RESTful Service的形式暴露服务,这些服务可通过SOA架构进一步与企业的其他非Web应用进行整合;SOA则是更高层次的企业级架构风格,RESTful Service可作为描述服务的开放、标准的形式之一,但不是唯一形式。随着企业级应用越来越Web化,遗留系统正逐步淘汰,ROA可能会成为未来企业级解决方案的重要组成部分。

简言之,SOA不会被替代,ROA的地位会越来越高;二者并非排他关系,而是相辅相成,共荣共赢的关系。

云计算冲击下的SOA

云计算是新宠,就像当年的SOA一样。当市场在大肆宣传云计算时,SOA在一旁淡然地笑了。喜欢挑起争端的人会说:“云计算来了,SOA该靠边站。”这种说法只能当作不负责任的市场噱头,不能当真。然而,二者并非同一层面的事物,不具有可比性,所以也就不存在谁替代谁的问题。相反,云计算和SOA还能彼此促进对方的发展。表现在以下几个方面。

一方面,如果一个企业成功地实施了SOA,当云中某个服务能够为企业带来更大价值时,其架构就能很方便地扩展,将云中服务接入现有架构之中。另一方面,由于业务扩展造成现有服务无法支撑剧增的业务量时,在良好架构的技术上,就能充分利用云计算带来的弹性伸缩和按需功能等方面的优势。

云计算供应商需要以SOA为基础。云计算的核心也是服务,计算、存储、网络、软件等,一切皆服务。那么,如何将这些能力封装成服务,以良定义的接口为外界提供服务呢?这就需要SOA的支撑。所以,云计算的兴起更加促进了SOA的应用,我看到过某些企业使用SOA架构构建SaaS、PaaS应用并对外提供服务。

作者马国耀,现就职于IBM北亚太战略合作部,为合作伙伴提供产品培训、技术支持和架构咨询等服务。他曾获得吉林大学学士学位和北京大学硕士学位。译著有《云计算与SOA》。

本文选自《程序员》杂志2011年12期,更多精彩内容敬请关注12期杂志

《程序员》2012年杂志订阅送好礼活动火热进行中

SOA在当今中国企业的发展现状相关推荐

  1. 2019年全球企业人工智能发展现状分析报告

    来源:199IT互联网数据中心 <悬而未决的AI竞赛--全球企业人工智能发展现状>由德勤洞察发布,德勤中国科技.传媒和电信行业编译.为了解全球范围内的企业在应用人工智能技术方面的情况以及所 ...

  2. 全球与中国成品家具市场发展现状与战略规划布局策略分析报告2022-2028年版

    全球与中国成品家具市场发展现状与战略规划布局策略分析报告2022-2028年版   2021年全球成品家具市场销售额达到了 亿美元,预计2028年将达到 亿美元,年复合增长率(CAGR)为 %(202 ...

  3. 中国企业云计算应用现状及需求

    为了深入探寻与了解企业的上云需求,近来,笔者展开了以"中国企业云计算应用现状及需求"为主题的调查.共有2327家企业参加了此次调查,其中近七成为C-LEVEL人群,本文将就此次调查 ...

  4. 中国金刚石工具市场发展现状及供需格局分析预测报告

    钻石意味着什么? 金刚石是指一种以金刚石颗粒或粉末为主要元素的工具产品.这些工具包括:切割.研磨.钻孔.铣削和抛光.从广义上讲,金刚石研磨膏.滚锯片.冷镶金刚石拉丝模.冷镶金刚石刀具.钎焊金刚石复合片 ...

  5. 中国泳装市场发展现状调查及供需格局分析预测报告

    智研瞻产业研究院专注于中国产业经济情报及研究,目前主要提供的产品和服务包括传统及新兴行业研究.商业计划书.可行性研究.市场调研.专题报告.定制报告等.涵盖文化体育.物流旅游.健康养老.生物医药.能源化 ...

  6. 2021年中国企业风险投资发展现状及未来发展趋势分析[图]

    企业风险投资是指有明确主营业务的非金融企业在其内部和外部所进行的风险投资活动.企业从事风险投资的形式主要有两种:一种是把用于风险投资的资金委托给专业的风险投资公司进行管理,由其成立的投资基金根据委托方 ...

  7. 报告丨前瞻产业研究院:2019年中国智能制造发展现状及趋势分析报告

    转载自:前瞻产业研究院(ID:qianzhancy) 本文包括 54张PPT,建议阅读 15 分钟. 本文为前瞻产业研究院对我国智能制造现状及前景作出的深度解读. 导读 智能制造被认为是中国制造的主攻 ...

  8. 从IC设计业看中国企业之发展

    从IC设计业看中国企业之发展 在半导体领域,国际平均毛利润水平为40%.去年IC设计年会中,中国半导体行业协会IC设计分会理事长魏少军指出,中国IC设计业平均毛利润水平比国际平均水平低了12.39%, ...

  9. 中国汽车电子市场发展现状分析与展望

    汽车电子是将电子信息技术应用到汽车所形成的新兴行业.从广义上讲,汽车电子从基础元器件.电子零部件.车载电子整机.机电一体化的电子控制系统(ECU).整车分布式电子控制系统.与汽车电子有关的车外电子系统 ...

最新文章

  1. mysql rand()产生随机整数范围及方法
  2. 新手福利:Apache Spark 入门攻略
  3. L1-011 A-B(13行代码AC!!)
  4. 处理 Maven 项目名称红色感叹号的问题
  5. linux 连个文件都删除不了,什么鬼!
  6. leetcode942. DI String Match
  7. dedecms sphinx 配置
  8. 力扣-图解算法数据结构
  9. DataTable数据存入指定路径Excel文件(套用Excel模板)
  10. BIM技术优秀论文14篇
  11. android语言包,安卓系统添加多国语言包
  12. html个人所得税计算器,个税计算器2021 - 个人所得税计算器2021 -
  13. OpenCV读取显示图片报错size.width>0
  14. android显卡效果吗,安卓模拟器显卡渲染模式中DirectX和OpenGL两个有什么区别?
  15. RTX服务器信息存档,Rtx/RTX服务器端基本应用(一)
  16. Ubuntu安装hp打印机
  17. 对项目成本和进度的监控----挣值分析
  18. 微信小程序 java理发店美容院预约系统springboot
  19. 这才是纯爷们!!!~~~~~~
  20. 在知乎逮到一个腾讯10年老测试开发,聊过之后收益良多...

热门文章

  1. 杰理之判断是苹果还是安卓手机【篇】
  2. 软件测试基础-day1
  3. 一种光伏发电数据采集器
  4. [LeetCode 1781]所有子字符串美丽值之和
  5. 英飞凌TC264学习(二)外部中断
  6. C++中std::allocator的使用
  7. 恍然如梦的最新伤感爱情日志;你是我无法企及的光
  8. jsfor循环终止_【JavaScript】JS中如何跳出循环/结束遍历
  9. 合作伙伴为创业打下坚实基础
  10. PHP网站开发技术期末作品,PHP网站开发技术.ppt