首页  ·  知识 ·  
SOA走到了应用最广泛的时期
网友      编辑:dezai   图片来源:网络
现在大厂商们都已经不再把SOA作为市场宣传的重点了。但是,SOA却走到了应用最广泛的时期。若对应到Gartner技术成熟度曲线模型,中国当前SOA所处的阶段是复苏期。
 现在大厂商们都已经不再把SOA作为市场宣传的重点了。但是,SOA却走到了应用最广泛的时期。若对应到Gartner技术成熟度曲线模型,中国当前SOA所处的阶段是复苏期。

  我们大致可以如此推算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的地位会越来越高;二者并非排他关系,而是相辅相成,共荣共赢的关系。

本文作者:网友 来源:网络
CIO之家 www.ciozj.com 微信公众号:imciow
    >>频道首页  >>网站首页   纠错  >>投诉
版权声明:CIO之家尊重行业规范,每篇文章都注明有明确的作者和来源;CIO之家的原创文章,请转载时务必注明文章作者和来源;
延伸阅读