中间件是什么?可以说中间件是一类软件产品,又可以进一步把它划分为应用服务器、消息中间件、交易中间件、门户服务器和工作流系统等多个类别,不同的中间件解决不同的问题。SOA是什么?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是短视的,在技术跟随上显得行动缓慢。
未来前景广阔 现实问题重重
按照Gartner等权威机构的预测,作为一种面向未来的构想,SOA到成为现实的主流架构显然还有很长路要走,甚至可能要用5~10年的时间。对于现实的意义而言,SOA有什么价值吗?
对于厂商而言,应该密切注意技术的发展潮流,加紧技术的跟踪与研发,待时机成熟,随时推出产品和方案。对于用户而言,如果你具有很强的技术背景和开发实力,也可以尝试着进行一些概念的验证和实践,以期进一步熟悉和了解SOA的架构。相对而言,在企业的内部验证SOA容易一些,你可以把一些应用封装为Web服务,自己作为这些服务的提供者和使用者,在企业内部使用这些服务创造新的价值,从这个意义来说,这个时候的用户,已经成为技术的实践者。。
如果企业打算向外部推广一些服务,和它的供货商、分销商、代理商、客户等一起来构建SOA架构的应用,就还有很长的路要走。这里有一个实际的例子。我们知道商业银行现在向客户提供很多代缴固话费、手机费、水费、电费、煤气费等服务,一个省级分行要和几十个需要收费的单位互联,实现应用的相互访问。从纯技术的角度看,无疑是基于Web服务的SOA架构应用的最佳用武之地。但现实是,没有人这么做。因为需要改造自己的业务系统,牵涉很多人员和投入。此外,也要安全的问题,效率的问题等,目前还没于成熟的解决办法。
早有国外专家指出,SOA作为一个具有发展前景的应用系统架构,尚存在许多有待改进的地方,例如在可靠性、安全性、编制(Orchestration)、遗留系统(Legacy support)支持和语义(Semantics)方面均还存在严重不足。以可靠性为例,在不可否认性(non-repudiation)、消息一定会被传送且仅传送一次(once-and-only-once delivery)以及事务撤回(rollback)等问题上, SOA还没有做好准备。现有的基于交易中间件、消息中间件的解决方案,较好地满足了应用系统在性能、服务质量和安全性等几个方面的需求。但在SOA环境中,其应用组件之间是一种松耦合的关系,要让一个应用软件的组件,很容易去跟属于不同应用的软件组件进行对话,如何确保这些迥然不同,但又相互连接的系统的效率、可靠性、可控性和安全性,就复杂得多了,是SOA还没有最终解决好的问题。这些都影响了SOA的实际实施和推广。
未来的饼 怎么可以解决今天的温饱
用领先的IT技术来构建企业的核心竞争能力,这还是目前大多数用户的期待。SOA作为一种面向未来的架构,应该得到更多的关注。但是SOA并不适用于解决所有的问题,也并不是所有的产品都需要支持SOA。对此,我也就这个问题请教了国内的中间件厂商。
前面说过,SOA的概念主要来自应用的动态B2B整合。从厂商的反馈来看,目前国内用户整体上还没有到规模化的推广、应用基于Web服务和SOA架构发B2B应用的阶段,即使是企业内部的应用整合SOA适用的情况也不多,仅有的案例其实际意义也非常有限。企业是否要部署和应用SOA,根本上还是要看业务上的需要和要解决的业务问题以及要通过IT系统达到的目的。
在技术的选择上,无论是在SOA出现之前、现在、还是SOA之后,最重要的是要看什么技术和产品能够最有效、最可靠、最方便地解决用户的现实业务问题和相关的技术问题。能够把握现在,才能适用未来。从国内的应用整合实践来看,部门内部或跨部门的数据的整合、一般的应用系统的整合还是最主流的需求。针对这些需求,有许多成熟的方法和工具。目前国内很多省市都在推动和建设的企业信用系统,可以很好地验证这一观点。
建设企业信用系统是要把散布在质检、工商、国税、地税、银行等部门的企业信用数据整合起来,进行分析、处理和深加工,最终提供一系列的信用产品并为政府部门的管理和决策服务。因此,需要建一个大的企业数据中心,需要把散布在不同部门中的数据汇集起来。其关键的问题就是数据的同步问题,需要不断汇总、更新数据,而不是简单的、同步的数据查询。这不是SOA最适合的工作。
金融方面也有类似的例子。例如某银行在实现全国集中数据处理后,需要把在全国中心产生的交易流水数据按需要下传给省行和地市行使用,以实现交易的事后监督。要传的数据量比较大,从总行到省分行可以达到几个GB的规模。对这个案例而言,如何实现高效、可靠的网上传输是最关键的问题,是整个的应用整合方案的核心。
曾经使用过FTP在网上进行传输,由于缺乏可靠性传输和断点续传等保证,实际效果不好。后来采用了基于消息中间件软件实现的海量文件传输整合方案,就能够很好的解决有关问题。这同样不适合SOA。从目前来看,国内很难找到有实际意义和一定规模的SOA应用部署。。因此,无论是国内厂商还是国外厂商,宣传的大都还是概念、技术产品和应用方案,鲜有实际的案例,和实际案例的详细的解析。SOA的现实意义大打折扣。
毋庸讳言,与国外发达国家的企业相比,国内在创新技术的研发和投入上仍有教大的差距,但这并不等于说,国内企业在技术上就一无所长。实际上,国内企业在技术的实践上还是有很多的经验和心得,在这一点上,国内外并没有什么差距。理论的研究再好,也是要与实际的商业进行结合才会焕发出生命力。对于SOA也是如此,没有人敢保证SOA将来肯定成功。今天所能说是,面向未来发展,SOA为应用的动态整合提供了一个非常好的思路,一个解决问题的方法。然而目前SOA相关技术和应用还处于探索和发展之中,对此一定要有一个清醒的认识。
在IT业内有一个口号:以用户为中心,也就是以用户的需求为中心。SOA作为一种技术上的视野,应该让用户有更多的了解,也可以让用户也参与进来,我们看到IBM在很多情况下就是这样做的,这也是一种负责任的态度。在软件方面,IBM的策略是不做应用软件,只做基础软件,通过帮助合作伙伴,为最终用户提供服务。
但是我们也看到另外一种情况,SOA作为未来的发展方向,其本身非常复杂,而国内用户受应用水平的限制,在技术视野上本不广阔,让他们清楚地分辩未来与现实本就不是一件容易事情,很容易受到舆论的误导。有些厂商,把SOA作为一种技术标签加以推广,其目的只有一个,抬升自己企业的品牌形象,通过市场手段故意混淆现实与未来的需求。这就背离了技术发展的初衷,是应该遭到唾弃和批判。
对于中间件而言,还是要回到用户的需求上来!与兼顾未来相比,解决用户现实的问题同等重要、甚至更为重要。即使是兼顾未来,大多数国内的中间件产品同样是非常好的选择!中间件市场上,一个技术上遥遥领先的巨无霸,其实并不存在!