SOA与传统软件架构、开发、部署和实施的区别

来源:互联网 发布:网络大电影会灭亡么 编辑:程序博客网 时间:2024/06/05 00:46
“在当前的2000家跨国公司中,很多企业的体系架构已经妨碍了业务的改变能力。比如,最近企业行为管理机构(Business Performance Management Institute)的一项调查表明,仅有11%的管理人员说他们能够跟得上技术变化,来满足业务需求——这其中40%需要IT支持。”
————SOA成功部署的五大原则(http://solution.e800.com.cn/articles/2008/313/1205393176529_1.html)


SOA,Service-Orientation Architecture,顾名思义,是面向服务的架构,与Object-Orientation不同,我认为SOA一种应用在企业级软件设计中的设计范型(Paradigm),而OO更加的具体,OO提供了看待具体问题的一个视角,譬如使用对象来模拟现实生活中的事物,OO还提供了封装继承多态等的特性,无非是关注于具体的对象,而SOA是从一个更加全面的视角来看待企业级应用,提供了一整套架构,开发,部署和实施的思路,但是并没有提供任何具体的技术手段,这是与OO截然不同的,在OO中无论是OOA/OOD,编码,都提供了很成熟的手段,甚至是具体的工具和语言。SOA更加倾向于是一整套方法论上的东西。运用SOA的视角可以解决企业级应用的一些问题,“更好的实现IT与业务的对齐”,当然,SOA也不是万能的。
下面从几个方面探讨SOA与传统软件开发的差异:

架构:
应用构架具体到应用开发工作中,知道具体的开发工作,“应用架构对于应用开发团队的意义,相当于蓝图对于建筑工团队的意义。”而企业架构就像城市规划的蓝图,位于应用构架更高的层次,直接指导可能分布在企业内部的各个应用构架。而SOA消除了企业构架和应用构架之间的鸿沟,因为SOA的面向服务的特性,所以SOA方案中的粒度是很大的(跟传统的OO相比),应用构架中的一个Service可能工作在J2EE应用构架下,另一个可能工作于.Net应用构架下,甚至有其他的基于C/S的服务存在,它们都可以通过SOA结合在一起,而正是因为SOA体系中的服务粒度大,更加匹配企业级应用中的业务,这样SOA中的一个服务可能就对应具体的一个业务,而不是像OO那样一个对象只是业务中的一个小小的元素,SOA原则中有一条叫做“The business drives the services, and the services drive the technology”(见《面向服务与面向服务的体系架构概述》),对于企业来说,只有bussiness才是真正的核心,而IT technology只是为了支持business而存在的,这样就是SOA体系更好的实现了“IT与业务的对齐”,所以SOA能够横跨企业架构和应用架构,
对比传统的企业级计算环境,无论是C/S还是B/S,都试图以OO或者其他的设计范型去模拟企业级运算的模型,远远比不上直接映射到企业业务的SOA。传统的软件开发方法中更加倾向于业务向IT对齐,这是一个错误的想法。
并不是说SOA的架构和思路有多么先进,只是更加匹配企业级运算的模式,也不是说SOA与以往的方法学相排斥,在服务的内部仍然要使用OO甚至面向过程的方法进行设计和开发。




开发:
在开发的方面也有很大的区别,传统的开发方法,如上文所述,都提供了详细的技术规范,抑或BluePrint,比如面向对象的软件设计方法,从需求分析到测试实施维护,都有一整套的具体的解决方案,有相应的工具支持,最明显是的编程语言的支持,例如C++,Java等是面向对象的语言,意味着面向对象的设计方法蕴含在语言的内部(当然,使用OO的语言写出来的代码不一定是符合OO思想的),而SOA是一种方法学,它提供了一套企业级应用整个生存期的原则,只要遵守这些原则,就可以说这个应用是面向服务的,而在具体的技术上并没有什么规定和限制。直到今天,SOA仍然没有一套具体的标准,当然,这样也给实施SOA项目带来很多的障碍和麻烦。

部署和实施方法:
传统的企业级应用的面临的场景与SOA截然不同:
传统应用:从头开始开发,从零开始,一蹴而就。
SOA:往往是对现存在企业内部的应用的修补,对现有计算资源的整合,并不是从头开始,而且SOA的实施往往是从小范围开始,逐渐的迁移现存应用到新的计算环境中。是个循序渐进的过程,SOA项目的实施往往是长期的。

以上是我对SOA于传统软件架构、开发、部署和实施的一点看法。


http://tiantian911.iteye.com/blog/175560