我对SOA的理解

09-05-17 spikeme
         

SOA,Service-Oriened Architecture 面向服务的架构。
以下内容来自别人的博客:
就是说将软件按照功能设计成一个个服务,这些服务用标准的方式定义接口、并通过标准的协议进行调用。SOA所定义的接口和调用方式是独立于编程语言和运行平台的,广义上讲SOA可以基于不同的底层技术实现,比如CORBA和Web Services。但CORBA由于过于复杂和臃肿已很少使用,所以目前所说的SOA绝大多数是基于Web Services技术实现。在Web Services的实现方式下,SOA服务的接口用XML进行定义。

我觉得SOA是系统中不同模块,不同组件之间,解耦的必然产物。因为有耦合,必然影响系统的可扩展性,可伸缩性,以及可重用性。实际上,与其说SOA是一种架构技术,不如说它是一种设计思想,只是主要用于架构设计。因为这里的模块和组件必然是粗粒度的(如果是细粒度的话,会有很多问题要解决。比如在同一个应用中,不同模块之间这样设计,可能导致代码量很大,开发周期很长,而且普通的应用,也没有必要这么设计,为了SOA而SOA可能会导致过度设计),因此我觉得一般企业级应用才是需要考虑的。普通的WEB应用可能有更好的解决方案。

在本人参与设计的项目中,很多计算功能,相对耗费时间和性能比较多,特别是并行处理的情况下。而且可重用性比较高。于是我们架构设计的时候,独立出一个数据计算service模块成为一个单独的JAVA APP. 该app只负责计算,接收计算请求,然后返回计算结果,而不关心请求来自哪里。。。这就是我理解和实际应用的SOA设计。

希望大家多多参与,可以针对我的理解讨论,也可以自己发表自己的理解。谢谢。

         

1
beepbug
2009-05-17 09:51

楼主前面说的,其实是Web Services的定义,而不是SOA的定义。
SOA是一个基于Web Services的应用体系结构。它的最基本结构是个三节点组成的三角形。当甲创建一个Web Services后,就可以发布到一个注册中心去。乙需要此服务时,去注册中心搜索,找到了,就根据登记的信息调用该该服务。注册中心、服务申请者、服务提供者构成SOA的基本单元。
由此可见,SOA是典型的松耦合,而CORBA是典型的紧耦合。
依我看,不是你的应用大不大,而是你是不是需要这种松散型的服务?

spikeme
2009-05-17 14:02

>>SOA是一个基于Web Services的应用体系结构.
我认为这只是对SOA一种狭义的理解。更多的算一种狭义的实现方式,其实SOA更总要的是一中架构设计思想,一种方法论。

beepbug
2009-05-17 15:04

IBM也没说得这么伟大。