SOA技术与应用时间:2007年3月12日来源:赵迪IBM资深架构师近期,越来越多的IT人士提及SOA,那么,SOA到底是什么呢?一个概念?一种产品?一套方法论?一种新的技术?全球著名的第三方评测机构GARTNERGROUP曾说:“系统采用SOA,变革将更加灵活”。SOA三个字母是英文ServiceOrientedArchitecture的首字母简称,翻译成中文,即为“以服务为核心的架构体系”或译为“面向服务的架构体系”。在SOA中,这个“S”即服务,是整个SOA的关键所在。那么,我们便从最基础处为SOA作出明确的定义:服务。广义上讲,服务的涵义相当宽泛,我们在生活中碰到的任何非自己一方可完成的事件,都可称之为服务。比如,在报亭买份报纸,这个是报商对读报者的服务;在银行新开一个帐户,便是银行对开户者的服务。在SOA中,我们对服务有一定的限制,那就是“一项可重复的业务动作”;我们将这个可重复的部分封装成IT架构中的一个服务单元;所以,SOA便可定义为:“一种支持将业务动作整合为服务工作流的IT架构”。读者们此时便可清晰的理解,SOA是一个纯粹意义上的IT架构,是一种具有技术可实现性的IT方式;而服务是和业务紧密相关的,具有可重复操作性,但不仅局限于IT的可供组合的单元。正是由于SOA在概念上的对IT及业务的兼顾性,使得SOA从出生的第一天,就不仅是一个IT工具,而与生俱来的具有了对业务的灵活性和适应性。在图1中,我们展现出一个SOA架构的基本技术组成部分。在SOA的基础架构中,最核心的部分是企业服务总线(EnterpriseServiceBus)。它是SOA架构之所以灵活善用的灵魂所在,它就像一条信息高速公路,将整个系统中的各种信息穿接在一起,并采用多点直连各服务单元(也可为各细分应用或应用系统),将信息在整个系统内高速的传递。我们把SOA架构上需要连接进入企业总线进行信息交换的“服务”概括为7大类:门户服务,SOAP请求服务,B2B互动服务,流程服务,数据服务,现有应用服务以及新的服务逻辑。对每大类的具体定义相信各位同行均有共识,在此就不再赘述了。那么,在理解了SOA的基础架构后,相信各位同仁就很容易理解SOA架构给IT系统带来了哪些变革性的好处。SOA系统将所有的应用模块或功能设计成一个个功能组件(Components)或服务(Service),服务模块之间和功能组件之间采用松耦合和更加容易定义的方式进行集成,从而改善了应用的柔性化和可重用性。见图二所示:图2在开发方面,SOA也会有变繁为简,节约时间,提高劳动生产率的奇效。首先,在行业的主流SOA平台上做开发,对开发商的开发方式就做出了规范,均应使用国际标准的语言,国际标准协议以及被广泛认可的接口命令作为开发基础,这种方式本身就可有效的规避一些中小开发商在程序编写或者一些逻辑模型建立上的不规范性。其次,在可重用性比较高的或者变更概率比较大的IT环境中,SOA又具有快速更改,快速部署,快速产生效益的功用。下面我们看一个典型的运用SOA提高生产效率的例子:中远集运(COSCON)是我国的一家大型物流集团,以远洋集装箱货轮运输为主业。中远集运拥有一支强大的IT开发队伍,以适应对不同国家海关的通关程序的开发需求。在国际海运中,货物进入对方国家海关都要经过或繁或简的手续,此手续即为通关手续,中远集运为每一种海关的通关系统制作自己系统的离岸子系统,而在使用SOA之前,各套离岸子系统由于先前没有良好的前瞻性规划,拓扑关系错综复杂,每次修改都有“牵一发而动全身”的风险,这样就造成两个严重后果:第一,当货物进口国海关通关系统业务规则发生变化时,中远集运对某个离岸子系统的修改就需要花费数以月计的时间,如果对方的业务规则是突然性的变化,则有可能使中远集运的货轮在目的地国海关港外等候十几天或者几十天的时间,严重影响货运班次安排以及交货时间,造成的损失难以估量;第二,由于各子系统之间关系太过复杂,往往一个微观的局部修改,就会对全局产生重大影响,并且错误难以查判。在使用SOA之后,整体系统的拓扑结构大大简化,并且对每次由于业务规则改变而进行的IT修改可以迅速完成,快速部署而且从原理上不会影响其他子系统的正常运行。这给中远集运带来的收益是无价的。使用S...