虽然了解到一些基于SOA构架的产品,但总觉得依然“隔着一层纸”,并不清楚什么才是真正的SOA架构。
很多时候,我依然会认为SOA构架只是满足把应用暴露成Service(或者说是WebService),以SOAP等之类的消息进行信息的传输,以及基于Service之间的一些业务逻辑的整合应用(比如BPEL)等。
我相信,这样的困惑,在国内很多中间件产品、应用产品中都存在,在很多国内的开发人员、架构师心中也存在。
刚刚看到一篇新闻,讲的是SAP代号为A1S的新产品软件设计方法,参见“新闻分析:解密代号A1S”。这和昨天研讨会上,SAP的李勇先生,所阐述的一些观点很类似:SAP的产品在往SOA架构迁移中,经历了三个大的步骤:第一步,提供更好的服务层面的容器或平台的支持;第二步,把业务抽象成服务,确切地说,是抽象业务对象(Business Object);第三步,把面向垂直或水平层面的各个产品,基于业务对象进行整合。
事实上,这就包含了昨天各个专家所阐述的SOA架构的本质:一切围绕业务对象(Business Object)或业务模型(Business Model),至于“服务”,只是这些业务模型暴露出来的形式,因为以统一的服务形式暴露出来,更便于不同供应商和客户之间的信息交互。
在Gartner十年前提出SOA概念的时候(1996年),尚没有web service技术。SOA架构的本质,并不是说把你的应用或者组件包装成Service就是SOA,而是说,你需要基于一种构架,能够让你的产品能够更适应“业务敏捷性(Business Agility)”。但是这种业务敏捷性仅仅是一家提供商或产品是很难满足的,肯定需要各个不同的供应商协助完成,不同的产品之间能够比较容易的进行消息交互。这样的灵活度肯定不是传统的基于消息的EAI产品所能够满足的,需要一种新的协议或标准来支撑。—— 当Web Service诞生之后,所有的大厂商都发现这是一种非常符合他们需求的技术。
但是服务的本质,是在后端能够提供一套“业务模型”。而制成这种业务模型或业务对象构建的技术,正好就是前几年所热炒的“模型驱动构架(Model-Driven-Architecture)”。事实上,现在各大厂商都在基于这个构架在转变自己的产品构架,BEA,IBM,TIBCO都在进行着这样的巨变。
在回头想想我们常说的“SOA真理三角”:数据(Data)——组件架构(Component Architecture)——组合(Composition)。因为几乎所有的业务模型最终需要被“业务对象+业务组件”反映出来,而它们之间需要进行一系列的组合和交互,来满足业务的处理。
在SOA联盟组织的SDO和SCA标准,正是用于解决数据和组件模型描述的问题,这方面几乎所有的EAI厂商都加盟进来了,IBM、BEA、IONA、Oracle、SAP、Sybase、TIBCO、Software AG等等。
网友评论