SOA架构的中间件产品意味什么?

选择什么样的中间件?

什么是中间件?中间件(middleware)是基础软件的一大类,属于可复用软件的范畴。顾名思义,中间件处于操作系统软件与用户的应用软件的中间。

中间件在操作系统、网络和数据库之上,应用软件的下层,总的作用是为处于自己上层的应用软件提供运行与开发的环境,帮助用户灵活、高效地开发和集成复杂的应用软件。在众多关于中间件的定义中,比较普遍被接受的是IDC表述的:中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源,中间件位于客户机服务器的操作系统之上,管理计算资源和网络通信。

什么是SOA?面向服务的体系结构(service-oriented architecture,SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种这样的系统中的服务可以以一种统一和通用的方式进行交互。

要说一个是产品,一个是架构,两者结合在一起,即所谓符合或者支持SOA架构的中间件产品,或者干脆称自己是SOA架构的中间件产品,这意味着什么?对于用户而言,在采购中间件产品的时候,是否一定要购买这样产品呢?

先来看所谓SOA架构的中间件产品的含义,为此,我求教了相关中间件厂商,含义无外乎两个:一个是说采用这种中间件产品可以很好的构建SOA的应用;再有就是采用这种中间件产品开发出来的应用,将很容易被整合进SOA架构。两者的含义都差不多,就是其应用很容易实现SOA。业内人士指出,所谓SOA架构中间件并不十分的准确,因为这里中间件的提法太笼统了。

前面说过,中间件可以分为7大类,其中有些产品,如应用服务器、门户中间件、一些新的工作流系统等,与互联网关系密切,本身就支持Web服务的封装,基于它们开发的应用的功能很容易就能封装成Web服务,支持SOA;但是对于消息中间件、交易中间件等,来谈论SOA,其意义就不大了。

总体看来,所谓SOA架构的中间件,无非就是要表明,厂商提供的中间件产品对于SOA有很好的考虑,而SOA还是针对应用而言。 SOA概念的提出是为了解决动态的B2B应用整合的问题。这里不妨看一个理论中关于物流行业的例子。物流涉及仓储、运输、车辆等几个环节,如果这些环节相应的信息系统所提供的功能服务都能够以Web服务的方式提交出来,那么相互的调用就会非常容易,很容易实现动态的B2B整合。

哪怕你没有自己的仓库、车辆,同样可以利用这些服务,构建全新的物流商业模式,提供灵活的商业服务,成为一个第三方、第四方物流企业。对于企业而言也是这样,我们看一些成功的企业,如Cisco,对于上下游的合作伙伴,具有很高的信息化的要求。以分销代理为例,Cisco已经不接受传统的下单方式,其总代理必须通过电子商务的方式定购产品。Cisco所采用的系统是SAP的,这就要求上下游的合作伙伴也必须采用SAP的系统,否则系统就无法对接,这就是现实的情况。

如果各家ERP厂商能够按照SOA的观念,遵循标准化的规范,把服务以标准的方式提交、展现出来,那么,这样的限制就不复存在,SOA的价值在于跨越了不同应用系统、不同技术的整合,这种整合改变现有的商业模型。

SOA描绘了一个无比美妙的未来,也是拥有一定的现实基础,SOA与现今流行的Web服务紧密联系在一起。Web服务是一项技术,其规范包括WSDL、SOAP、UDDI。Web服务由WSDL描述,通过UDDI发现,并通过SOAP去访问。Web服务提供了技术,而SOA则提供了应用这种技术的框架,是一个非常好的思路,因此得到了软件业界普遍的认可。

中间件对于Web应用具有简化和帮助其相互连接、相互访问的作用。从理论上讲,基于Web服务的中间件将会给应用软件的开发、部署、应用方式带来革命性变化,因为Web服务的出现,使各应用组件之间能够以松偶合和标准的方式连接,突破了传统的基于某厂商特定技术、某一种特定技术的方式。目前,几乎所有新的中间件类型、新的中间件产品都支持Web服务,可以基于它们实现SOA架构的应用。正因为如此,人们将中间件视为实现SOA架构的理想平台。凭借这种天然的联系,中间件搭车SOA也是一个增加曝光率的明智择。从技术视野上来看,如果中间件产品没有考虑SOA是短视的,在技术跟随上显得行动缓慢。

SOA未来发展前景如何?

按照Gartner等权威机构的预测到2008年,SOA将成为占有绝对优势的软件工程实践方法,它将很可能结束传统的整体软件体系架构长达40年的统治地位,届时将有70%的企业在进行IT建设时会转向SOA。作为一种面向未来的构想,SOA到成为现实的主流架构显然还有很长路要走。对于现实的意义而言,SOA有什么价值吗?

对于厂商而言,应该密切注意技术的发展潮流,加紧技术的跟踪与研发,待时机成熟,随时推出产品和方案。对于用户而言,如果你具有很强的技术背景和开发实力,也可以尝试着进行一些概念的验证和实践,以期进一步熟悉和了解SOA的架构。相对而言,在企业的内部验证SOA容易一些,你可以把一些应用封装为Web服务,自己作为这些服务的提供者和使用者,在企业内部使用这些服务创造新的价值,从这个意义来说,这个时候的用户,已经成为技术的实践者。。

如果企业打算向外部推广一些服务,和它的供货商、分销商、代理商、客户等一起来构建SOA架构的应用,就还有很长的路要走。这里有一个实际的例子。我们知道商业银行现在向客户提供很多代缴固话费、手机费、水费、电费、煤气费等服务,一个省级分行要和几十个需要收费的单位互联,实现应用的相互访问。从纯技术的角度看,无疑是基于Web服务的SOA架构应用的最佳用武之地。但现实是,没有人这么做。因为需要改造自己的业务系统,牵涉很多人员和投入。此外,也要安全的问题,效率的问题等,目前还没于成熟的解决办法。

早有国外专家指出,SOA作为一个具有发展前景的应用系统架构,尚存在许多有待改进的地方,例如在可靠性、安全性、编制(Orchestration)、遗留系统(Legacy support)支持和语义(Semantics)方面均还存在严重不足。以可靠性为例,在不可否认性(non-repudiation)、消息一定会被传送且仅传送一次(once-and-only-once delivery)以及事务撤回(rollback)等问题上, SOA还没有做好准备。现有的基于交易中间件、消息中间件的解决方案,较好地满足了应用系统在性能、服务质量和安全性等几个方面的需求。但在SOA环境中,其应用组件之间是一种松耦合的关系,要让一个应用软件的组件,很容易去跟属于不同应用的软件组件进行对话,如何确保这些迥然不同,但又相互连接的系统的效率、可靠性、可控性和安全性,就复杂得多了,是SOA还没有最终解决好的问题。这些都影响了SOA的实际实施和推广。

减少误区 确保SOA成功实施

虽然SOA无法让企业在一夜之间旧貌换新颜,但通过审慎的实施,它还是可以为企业提供一种强有力的能量。然而,这种转换非一朝一夕可得,它是一个长期的流程。企业会在转换过程中逐渐发现到SOA的价值所在。

某公司的副总裁表示,“SOA不仅仅是一门技术,它更多地是一种文化。SOA所要求的是一种新的秩序和习惯。”这种秩序能为企业带来显著的优势,其中包括:

通过提高再利用来降低成本。

减少冗余,加强应用的使用周期。

能为商业规则和流程的实施提供更好的持续性、安全性和合规性。

通过改善商业流程和用户界面来提高劳资生产力、效率和满意度。

然而,企业在向SOA过渡的过程中也会面临着种种的困难与挑战,其中包括:

要求进行组织变更,尤其在组织结构,财务实践和激励机制方面。

要求对IT人员和相关商业伙伴进行全面的培训指导,以确保持续的架构和开发知识。

要求新的基础架构,并及时更新。

人总是有一种惰性和惯性,他们会安于现状而不愿做出改变,从而错失了SOA可能带来的回报。

毋庸讳言,与国外发达国家的企业相比,国内在创新技术的研发和投入上仍有教大的差距,但这并不等于说,国内企业在技术上就一无所长。实际上,国内企业在技术的实践上还是有很多的经验和心得,在这一点上,国内外并没有什么差距。理论的研究再好,也是要与实际的商业进行结合才会焕发出生命力。对于SOA也是如此,没有人敢保证SOA将来肯定成功。今天所能说是,面向未来发展,SOA为应用的动态整合提供了一个非常好的思路,一个解决问题的方法。然而目前SOA相关技术和应用还处于探索和发展之中,对此一定要有一个清醒的认识。

在IT业内有一个口号:以用户为中心,也就是以用户的需求为中心。SOA作为一种技术上的视野,应该让用户有更多的了解,也可以让用户也参与进来,我们看到IBM在很多情况下就是这样做的,这也是一种负责任的态度。在软件方面,IBM的策略是不做应用软件,只做基础软件,通过帮助合作伙伴,为最终用户提供服务。

但是我们也看到另外一种情况,SOA作为未来的发展方向,其本身非常复杂,而国内用户受应用水平的限制,在技术视野上本不广阔,让他们清楚地分辩未来与现实本就不是一件容易事情,很容易受到舆论的误导。有些厂商,把SOA作为一种技术标签加以推广,其目的只有一个,抬升自己企业的品牌形象,通过市场手段故意混淆现实与未来的需求。这就背离了技术发展的初衷,是应该遭到唾弃和批判。

由于SOA在国内和国外都属于一项新兴技术,因此SOA的发展还可能给国产中间件产品提供新的机会。对于中间件而言,还是要回到用户的需求上来!与兼顾未来相比,解决用户现实的问题同等重要、甚至更为重要。即使是兼顾未来,大多数国内的中间件产品同样是非常好的选择!中间件市场上,一个技术上遥遥领先的巨无霸,其实并不存在!