一、概述
1.中间件的概念
随着计算机技术的飞速发展,各种各样的应用软件需要在各种平台之间进行移植,或者一个平台需要支持多种应用软件和管理多种应用系统,软、硬件平台和应用系统之间需要可靠和高效的数据传递或转换,使系统的协同性得以保证。这些,都需要一种构筑于软、硬件平台之上,同时对更上层的应用软件提供支持的软件系统,而中间件正是在这个环境下应孕而生。
由于中间件技术正处于发展过程之中,因此目前尚不能对它进行精确的定义。
比较流行的定义是:中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源。中间件位于客户机/服务器的操作系统之上,管理计算资源和网络通讯。
从中间件的定义可以看出,中间件是一类软件,而非一种软件;中间件不仅仅实现互连,还要实现应用之间的互操作;中间件是基于分布式处理的软件,定义中特别强调了其网络通讯功能。
2.中间件特点及优势
通常意义下,中间件应具有以下的一些特点:满足大量应用的需要;运行于多种硬件和OS平台;支持分布式计算,提供跨网络、硬件和OS平台的透明性的应用或服务的交互功能;支持标准的协议;支持标准的接口。
程序员通过调用中间件提供的大量API,实现异构环境的通讯,从而屏蔽异构系统中复杂的操作系统和网络协议。
中间件提供客户机与服务器之间的连接服务,这些服务具有标准的程序接口和协议。针对不同的操作系统和硬件平台,它们可以有符合接口和协议规范的多种实现。
由于标准接口对于可移植性和标准协议对于互操作性的重要性,中间件已成为许多标准化工作的主要部分。对于应用软件开发,中间件远比操作系统和网络服务更为重要,中间件提供的程序接口定义了一个相对稳定的高层应用环境,不管底层的计算机硬件和系统软件怎样更新换代,只要将中间件升级更新,并保持中间件对外的接口定义不变,应用软件几乎不需任何修改,从而保护了企业在应用软件开发和维护中的重大投资。
中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源。中间件软件管理着客户端程序和数据库或者早期应用软件之间的通讯。
中间件在分布式的客户和服务之间扮演着承上启下的角色,如事务管理、负载均衡以及基于Web的计算等。
利用这些技术有助于减轻应用软件开发者的负担,使他们利用现有的硬件设备、操作系统、网络、数据库管理系统以及对象模型创建分布式应用软件时更加得心应手。由于中间件能够保护企业的投资,保证应用软件的相对稳定,实现应用软件的功能扩展;同时中间件产品在很大程度上简化了一个由不同硬件构成的分布式处理环境的复杂性,所以它的出现正日益引起用户的关注。
世界著名的咨询机构The Standish Group在一份研究报告中归纳了中间件的十大优越性:
(1)应用开发:The Standish Group 分析了100个关键应用系统中的业务逻辑程序、应用逻辑程序及基础程序所占的比例;业务逻辑程序和应用逻辑程序仅占总程序量的30%,而基础程序占了70%,使用传统意义上的中间件一项就可以节省25%~60%的应用开发费用。如是以新一代的中间件系列产品来组合应用,同时配合以可复用的商务对象构件,则应用开发费用可节省至80%。
(2)系统运行:没有使用中间件的应用系统,其初期的资金及运行费用的投入要比同规模的使用中间件的应用系统多一倍。
(3)开发周期:基础软件的开发是一件耗时的工作,若使用标准商业中间件则可缩短开发周期50%~75%。
(4)减少项目开发风险:研究表明,没有使用标准商业中间件的关键应用系统开发项目的失败率高于90%。企业自己开发内置的基础(中间件)软件是得不偿失的,项目总的开支至少要翻一倍,甚至会十几倍。
(5)合理运用资金:借助标准的商业中间件,企业可以很容易地在现有或遗留系统之上或之外增加新的功能模块,并将它们与原有统无缝集合。依靠标准的中间件,可以将老的系统改头换面成新潮的Internet/Intranet 应用系统。
(6)应用集合:依靠标准的中间件可以将现有的应用、新的应用和购买的商务构件融合在一起进行应用集合。
(7)系统维护:需要一提的是,基础(中间件)软件的自我开发是要付出很高代价的,此外,每年维护自我开发的基础(中间件)软件的开支则需要当初开发费用的15%~25%,每年应用程序的维护开支也还需要当初项目总费用的10%~20%左右。而在一般情况下,购买标准商业中间件每年只需付出产品价格的15%~20%的维护费,当然,中间件产品的具体价格要依据产品购买数量及哪一家厂商而定。
(8)质量:基于企业自我建造的基础(中间件)软件平台上的应用系统,每增加一个新的模块,就要相应地在基础(中间件)软件之上进行改动。而标准的中间件在接口方面都是清晰和规范的。标准中间件的规范化模块可以有效地保证应用系统质量及减少新旧系统维护开支。
(9)技术革新:企业对自我建造的基础(中间件)软件平台的频繁革新是极不容易实现的(不实际的)。而购买标准的商业中间件,则对技术的发展与变化可以放心,中间件厂商会责无旁贷地把握技术方向和进行技术革新。
(10)增加产品吸引力:不同的商业中间件提供不同的功能模型,合理使用,可以让你的应用更容易增添新的表现形式与新的服务项目。从另一个角度看,可靠的商业中间件也使得企业的应用系统更完善,更出众。
具体地说,中间件屏蔽了低层操作系统的复杂性,使程序开发人员面对一个简单而统一的开发环境,减少程序设计的复杂性,将注意力集中在自己的业务上,不必再为程序在不同系统软件上的移植而重复工作,从而大大减少了技术上的负担。
中间件带给应用系统的不只是开发的简单、开发周期的缩短,也减少了系统的维护、运行和管理的工作量,还减少了计算机总体费用的投入。The Standish Group的调查报告显示,由于采用了中间件技术,应用系统的总建设费用可以减少50%左右。在网络经济大发展、电子商务大发展的今天,从中间件获得利益的不只是IT厂商,IT用户同样是赢家,并且是更有把握的赢家。
中间件作为新层次的基础软件,其重要作用是将不同时期、在不同操作系统上开发应用软件集成起来,彼此像一个天衣无缝的整体协调工作,这是操作系统、数据库管理系统本身做不了的。中间件的这一作用,在技术不断发展之后,使以往在应用软件上的劳动成果仍然物有所用,节约了大量的人力、财力投入。
3.中间件的应用领域与分类
随着计算机软件技术的发展,中间件技术也已经日渐成熟,并且出现了不同层次、不同类型的中间件产品。按照IDC 的分类方法,中间件可分为六类。分别是数据访问中间件、远程过程调用中间件、消息中间件、交易中间件、对象中间件等。
数据访问中间件:是为了建立数据应用资源互操作的模式,对异构环境下的数据库实现联接或文件系统实现联接的中间件;
远程过程调用中间件:通过这种远程过程调用机制,程序员编写客户方的应用,需要时可以调用位于远端服务器上的过程;
消息中间件:用来屏蔽掉各种平台及协议之间的特性,进行相互通信,实现应用程序之间的协同;
交易中间件:是在分布、异构环境下提供保证交易完整性和数据完整性的一种环境平台;
对象中间件:在分布、异构的网络计算环境中,可以将各种分布对象有机地结合在一起,完成系统的快速集成,实现对象重用。
目前国内外有不少厂商都开发出自己的中间件产品,其中有全球最大的独立中间件厂商BEA公司,还有像IBM、Oracl e和Microsoft、HP、Sun等大厂商也早已涉足电子商务中间件。
面向对象的中间件是对象技术和分布式计算发展的产物,业界普遍认为面向对象是今后中间件发展的主流方向,它提供一种通讯机制,透明地在异构的分布计算环境中传递对象请求,而这些对象可以位于本地或者远程机器。
面向对象标准原本只有一个,即CORBA(公共对象请求代理体系结构),该标准由包括BEA、IBM、Oracle、Sun和Sybas e等公司在内的众多厂商一起制定,从而形成了一个庞大的CORBA联盟势力。后来,Sun推出了企业级JavaBeans(EJB),用自己易使用的程序模型来对CORBA做出了改进。微软COM(Component Object Model,组件对象模型)的出现,使面向对象中间件市场里又多了一个标准,这样,面向对象中间件产品实际上形成了两大标准,一是微软的COM,一是JavaBeans。
从宏观上看,中间件可以分为3大类:
数据类:用于数据的存取、利用和增值,此类中间件用于构建以数据为中心的应用。
处理类:把分布在网络结点上的各个应用或处理连接在一起,形成一个统一的分布式应用。
分布式构件类:支持构件式应用,未来应用的发展方向,目前竞争激烈。
我们把中间件细分为12种,详情如下:
二、中间件的技术规范
1.DCE体系
DCE是Distrbuted Computing Environment 分布式计算环境的缩写,它由Open Software Fondation 制定,现在这个组织被称为Open Group。
DCE由多个共同在一起工作的组件组成,它们是:远程过程调用(RPC)、本地和全局目录服务(CDS和GDS)、安全服务、DCE线程、分布式时钟服务(DTS)和分布式文件服务(DFC)。线程、RPC、CDS、安全服务和DTS组件通常被成为安全核心,并且是组成任何DCE环境所必须的组件,DTS是可选件。在DCE环境中,还包括用于管理这些组件的管理工具。
DCE被称做中间件或使其具有能力的技术,它不是独立存在的,而是被捆绑在供应商操作系统中,或者由第三方供应商进行集成。
2.DTP模型
DTP模型是X/OPEN组织提出的一种软件结构,这种结构允许多个应用程序去共享多个资源管理器提供的资源,并且具有协调全局事物的能力。
X/OPEN是一个独立的、具有全球影响力的开放系统组织,它得到了世界大多数的最大的信息系统供应商的支持,其根本任何是通过规范开放系统的具体实现,从计算的观点考虑如何让用户获得更大的利益。
X/OPEN的DTP模型由5个基本模块组成:
应用程序(AP):用于定义事物的边界,并确定组成事物操作的动作。
资源管理器(RM):如数据库或文件系统用于存取文件。
事物管理器(TP):给事物分配标识,监督事物的处理过程并负责事物的完成以及协调事物失败的恢复。
通信资源管理器(CRM):在一个事物管理器内或两个事物管理器之间对通信进行控制。
在这5个模块之间X/OPEN模型定义了这样一些模块与模块之间的接口规范:
应用程序——资源管理器之间已经存在了一些X/OPEN的规范,如SQL和ISAM;在应用程序——事物管理器之间定义了TX接口;在交易管理器——资源管理器之间定义了XA接口;在交易管理器——通信资源管理器之间定义了XA+接口;在应用程序——通信资源管理器之间有3种接口:TXRPC、XATMI和CPI-C;在通信资源管理器——操作系统提供的底层通信协议之间提供了XAP-TP接口。
3.CORBA
CORBA是Common Object Request Broker Architecture的缩写,简称公共对象请求代理结构,它由国际对象管理组织OMG制定,这个组织是一个国际性组织,始建于1989年,现已拥有包括生产厂商与软件开发商800多个会员,其目的是在分布和已构计算机环境下为应用软件的开发提供一个公共框架,使开发出来的软件即面向对象又具有可重用性、可移植性以及可操作性等特点。有关CORBA的其他功能情况参见下面的第三部分说明。
4.J2EE
J2EE是Java 2 Platform Enterprise Edition的缩写,是一种多层应用模式的结构体系。整个规范由SUN公司提出,它将业务逻辑从系统服务功能和用户界面中分离出去,放置在客户层和应用基础设施这两层之间的中间层,是目前应用的最为广泛的面向Web的应用系统结构规范。有关J2EE的其他功能情况参见下面的第三部分说明。
5.互联网相关技术规范
Web(World Wide Web)是一种网络化的信息资源,它依赖于3个机制,使这些信息资源可以面对广大的使用者。
1)一种唯一的命名机制,为网上的资源进行定位,如:URI。
2)一种通信规程,以便在网上可以存取这些被命名的资源,如:HTTP。
3)混合文本,以便更好地驾御这些信息资源,如:HTML。
URI(Universal Resource Identifier)全局资源标识,一种命名机制,它将在网上的一个资源的定位分为3个部分:用于存取资源的通信方式的名称,如HTTP、FTP;保存有资源的机器的名称,如:www.sohu.com;资源本身的名称,也就是存取这些资源的路径。HTTP(HyperText Transfer Protocol)是一种用于分布式、相互协作、混合型媒体的信息系统的应用层的通信规程。使用这一规程,除了可以在信息系统中取得资料外,还可以进行资料查询,对前端进行更新以及进行信息发布等操作。
HTML(HyperText Markup Language)是一种网上使用的出版语言,它可以为作者提供这样的功能:在在线出版的文档中包括标题、文本、表格、列表和照片等;按下鼠标后,通过混合文本链路查找文本;与远端的服务为进行联机事物处理建立表格,以便进行信息查找、预定和订购产品等操作;在文档中直接包含独立页面、影像资料与声音资料等。
这些规范都是web技术的基础,除了这些技术规范以外,还有一些规范也非常重要,它的用途是实现企业与企业间通过Web实现数据交换。这些规范是XML、SOAP、UDDI和WSDL。
vXML(Extensible Markup Language)通过提供更灵活和更容易被接收的信息标识方法来改进Web的功能。XML被称为可扩展的标注语言,它不像HTML是一种单一的、预先定义的语言,XML是一种用于描述其他语言的语言,使用XML,你可以定义你自己的、不受到类型限制的、其他类型的文档。
SOAP(Simple Object Access Protocol)是一种轻量级规程,用于在没有控制中心、分布式的环境中交换信息。它以XML为基础,由4个部分组成:一个信封,定义了是什么信息和如何对它进行处理的框架;一组编码规则,用于描述应用定义的数据类型的表示示例;一组表示远程过程调用和应答的规则方式,以及一组捆绑方式,这种方式用于使用低层通信规程交换信息。SOAP具有与其他规则相结合的可能性。
UDDI(Universal Description,Discovery and Integration)是一个规范,这个规范用于Web服务以分布式、以Web为基础的信息的注册。UDDI同时也是一个这样的规范的实现的公用的可接入的集合,这个规范是是某个企业的Web服务所能提供的内容用登记信息的方式提供出来,以便其他企业可以发现这些服务。Web服务是Web技术的下一步发展方向,它可以允许可编程的被放置在Web上,其他方可以使用分布式的方式进行存取。
WSDL(Web Service Description Language)是一组包含面向文档或面向过程消息的端点操作信息的xml格式网络服务描述;操作和消息首先被抽象的描述,然后捆绑到具体的网络规程和消息格式中,以便定义端点,相关的具体端点被组合进抽象的端点中(服务)。WSDL可以捆绑描述与SOAP、HTTP GET/POST和MIME相关。
三、主流中间件技术平台
下面重点阐述和比较了三大主流中间件技术平台,使读者加深对中间件技术理解。
1.当前支持服务器端中间件技术的平台
考察当前主流的分布计算技术平台,主要有OMG的CORBA、Sun的J2EE和Microsoft DNA 2000。它们都是支持服务器端中间件技术开发的平台,但都有其各自的特点,将分别阐述如下。
(1)OMG的CORBA
CORBA分布计算技术是OMG组织基于众多开放系统平台厂商提交的分布对象互操作内容的基础上制定的公共对象请求代理体系规范。
CORBA分布计算技术,是由绝大多数分布计算平台厂商所支持和遵循的系统规范技术,具有模型完整、先进,独立于系统平台和开发语言,被支持程度广泛的特点,已逐渐成为分布计算技术的标准。COBRA标准主要分为3个层次:对象请求代理、公共对象服务和公共设施。最底层是对象请求代理ORB,规定了分布对象的定义(接口)和语言映射,实现对象间的通讯和互操作,是分布对象系统中的"软总线";在ORB之上定义了很多公共服务,可以提供诸如并发服务、名字服务、事务(交易)服务、安全服务等各种各样的服务;最上层的公共设施则定义了组件框架,提供可直接为业务对象使用的服务,规定业务对象有效协作所需的协定规则。目前,CORBA兼容的分布计算产品层出不穷,其中有中间件厂商的ORB产品,如BEAM3,IBM Component Broker,有分布对象厂商推出的产品,如IONAObix和OOCObacus等。
CORBA规范的近期发展,增加了面向Internet的特性,服务质量控制和CORBA构件模型(CORBA Component Model)。
Internet集成特性包括了针对IIOP传输的防火墙(Firewall)和可内部操作的定义了URL命名格式的命名服务(Naming Service)。
服务质量控制包括能够具有质量控制的异步消息服务,一组针对嵌入系统的CORBA定义,一组关于实时CORBA与容错CORBA的请求方案。
CORBA CCM(CORBA Component Model)技术,是在支持POA的CORBA规范(版本2.3以后)基础上,结合EJB当前规范的基础上发展起来的。CORBA构件模型,是OMG组织制定的一个用于开发和配置分布式应用的服务器端中间件模型规范,它主要包括如下三项内容:
a、抽象构件模型,用以描述服务器端构件结构及构件间互操作的结构;
b、构件容器结构,用以提供通用的构件运行和管理环境,并支持对安全、事务、持久状态等系统服务的集成;
c、构件的配置和打包规范,CCM使用打包技术来管理构件的二进制、多语言版本的可执行代码和配置信息,并制定了构件包的具体内容和基于XML的文档内容标准。
总之,CORBA的特点是大而全,互操作性和开放性非常好。CORBA的缺点是庞大而复杂,并且技术和标准的更新相对较慢,COBRA规范从1.0升级到2.0所花的时间非常短,而再往上的版本的发布就相对十分缓慢了。在具体的应用中使用不是很多。
(2)Sun的J2EE
为了推动基于Java的服务器端应用开发, Sun于是在1999年底推出了Java2技术及相关的J2EE规范,J2EE的目标是:提供平台无关的、可移植的、支持并发访问和安全的,完全基于Java的开发服务器端中间件的标准。
在J2EE中,Sun给出了完整的基于Java语言开发面向企业分布应用规范,其中,在分布式互操作协议上,J2EE同时支持RMI和IIOP,而在服务器端分布式应用的构造形式,则包括了Java Servlet、JSP(Java Server Page)、EJB等多种形式,以支持不同的业务需求,而且Java应用程序具有"Write once,run anywhere"的特性,使得J2EE技术在发布计算领域得到了快速发展。
J2EE简化了构件可伸缩的、其于构件服务器端应用的复杂度,虽然DNA 2000也一样,但最大的区别是DNA 2000是一个产品,J2EE是一个规范,不同的厂家可以实现自己的符合J2EE规范的产品,J2EE规范,是众多厂家参与制定的,它不为Sun所独有,而且其支持跨平台的开发,目前许多大的分布计算平台厂商都公开支持与J2EE兼容技术。
EJB是Sun推出的基于Java的服务器端构件规范J2EE的一部分,自从J2EE推出之后,得到了广泛的发展,已经成为应用服务器端的标准技术。SunEJB技术是在Java Bean本地构件基础上,发展的面向服务器端分布应用构件技术。它基于Java语言,提供了基于Java二进制字节代码的重用方式。EJB给出了系统的服务器端分布构件规范,这包括了构件、构件容器的接口规范以及构件打包、构件配置等的标准规范内容。EJB技术的推出,使得用Java基于构件方法开发服务器端分布式应用成为可能。从企业应用多层结构的角度,EJB是业务逻辑层的中间件技术,与JavaBeans不同,它提供了事务处理的能力,自从三层结构提出以后,中间层,也就是业务逻辑层,是处理事务的核心,从数据存储层分离,取代了存储层的大部分地位。从分布式计算的角度,EJB像CORBA一样,提供了分布式技术的基础。提供了对象之间的通讯手段。从Internet技术应用的角度,EJB和Servlet,JSP一起成为新一代应用服务器的技术标准,EJB中的Bean可以分为会话Bean和实体Bean,前者维护会话,后者处理事务,现在Servlet负责与客户端通信,访问EJB,并把结果通过JSP产生页面传回客户端。
J2EE的优点是,服务器市场的主流还是大型机和UNIX平台,这意味着以Java开发构件,能够做到"Write once,run anywhere",开发的应用可以配置到包括Windows平台在内的任何服务器端环境中去。
(3)Microsoft DNA 2000
Microsoft DNA 2000(Distributed interNet Applications)是Microsoft在推出Windows2000系列操作系统平台基础上,在扩展了分布计算模型,以及改造Back Office系列服务器端分布计算产品后发布的新的分布计算体系结构和规范。
在服务器端,DNA 2000提供了ASP、COM、Cluster等的应用支持。目前,DNA2000在技术结构上有着巨大的优越性。一方面,由于Microsoft是操作系统平台厂商,因此DNA 2000技术得到了底层操作系统平台的强大支持;另一方面,由于Microsoft的操作系统平台应用广泛,支持该系统平台的应用开发厂商数目众多,因此在实际应用中,DNA 2000得到了众多应用开发商的采用和支持。
DNA 2000融合了当今最先进的分布计算理论和思想,如事务处理、可伸缩性、异步消息队列、集群等内容。DNA使得开发可以基于Microsoft平台的服务器构件应用,其中,如数据库事务服务、异步通讯服务和安全服务等,都由底层的分布对象系统提供。以Microsoft为首的DCOM/COM/COM+阵营,从DDE,OLE到ActiveX等,提供了中间件开发的基础,如VC,VB,Delphi等都支持DCOM,包括OLE DB在内新的数据库存取技术,随着Windows2000的发布,Microsoft的DCOM/COM/COM+技术,在DNA2000分布计算结构基础上,展现了一个全新的分布构件应用模型。首先,DCOM/COM/COM+的构件仍然采用普通的COM(Component Object Model)模型。COM最初作为Microsoft桌面系统的构件技术,主要为本地的OLE应用服务,但是随着Microsoft服务器操作系统NT和DCOM的发布,COM通过底层的远程支持使得构件技术延伸到了分布应用领域。DCOM/COM/COM+更将其扩充为面向服务器端分布应用的业务逻辑中间件。通过COM+的相关服务设施,如负载均衡、内存数据库、对象池、构件管理与配置等等,DCOM/COM/COM+将COM、DCOM、MTS的功能有机地统一在一起,形成了一个概念、功能强的构件应用体系结构。而且,DNA2000是单一厂家提供的分布对象构件模型,开发者使用的是同一厂家提供的系列开发工具,这比组合多家开发工具更有吸引力。
但是它的不足是依赖于Microsoft的操作系统平台,因而在其它开发系统平台(如Unix、Linux)上不能发挥作用。
2.相关性比较分析
目前,针对上述的各种分布计算平台技术,都出现了相似且具有可比性的分布式构件,即CORBA CCM(CORBA Component Model)技术、SUN的EJB(Enterprise JavaBean)技术和DNA 2000中的COM/DCOM/COM+技术。
对于以上三个分布计算平台,本文采用业界常用的做法从以下三个方面进行分析:
集成性:集成性主要反映在基础平台对应用程序互操作能力的支持上。它要求分布在不同机器平台和操作系统上、采用不同的语言或者开发工具生成的各类商业应用必须能集成在一起,构成一个统一的企业计算框架。这一集成框架必须建立在网络的基础之上,并且具备对于遗留应用的集成能力;
可用性:要求所采用的软件构件技术必须是成熟的技术,相应的产品也必须是成熟的产品,在至关重要的企业应用中能够稳定、安全、可靠地运行。另外,由于数据库在企业计算中扮演着重要角色,软件构件技术应能与数据库技术紧密集成;
可扩展性:集成框架必须是可扩展的,能够协调不同的设计模式和实现策略,可以根据企业计算的需求进行裁剪,并能迅速反应市场的变化和技术的发展趋势。通过保证当前应用的可重用性,最大程度地保护企业的投资。
下表从集成性,可用性,可扩展性三个方面,给出了上述三种主流分布计算平台的比较结果。
虽然这三种平台因为其形成的历史背景和商业背景有所不同,各自有自己的侧重和特点,其实在它们之间也有很大的相通性和互补性。
四、中间件是实现电子商务的基础软件
电子商务的本质就是对处于分布环境中的各种计算机系统进行交流协调,从而开创新的商业运作模式。网络通信,尤其是互联网技术,是电子商务的通信基础,而管理和传输系统之间的业务信息、协调各个系统的处理模块的中间管理服务系统,是保证电子商务应用成功的关键。电子商务应用服务器、通用业务网关、支付网关、通信平台和安全平台,统一纳入电子商务中间件构架的范畴。
从技术角度看,电子商务将由Internet/Intranet技术、传统IT技术以及具体的业务处理所构成。但是,系统的建立将会面临许多新的问题,包括应用系统能不能快速地建立,能不能适应大用户数、高处理量要求,能不能提供高效率、高可靠性、高可用性等等关键任务的要求,能不能满足安全需要等等。
以上这些问题,只是依靠简单的Web技术是不够的。目前常用的Web技术由于早期更多的是面向信息发布,因此存在并发访问瓶颈、难扩展、效率低、安全等诸多问题,不能满足电子商务的需要。为了很好地解决这些问题,需要以Web的低层技术为基础,规划出一个整体的应用框架,并提供一个支持平台,用于Internet应用的开发、部署和管理,并能籍此解决上述各种问题。这已经发展成为一个能广泛适应的标准的支撑层,成为Internet应用的基础设施(Infrastructure),这一支撑层实际上是基于Internet的中间件,也就是应用服务器。
同时,由于企业并不能把业务一不跨到Internet上,而必须同传统的应用系统结合,因此也必须通过中间件来集成Web应用和传统应用,实现完整的电子商务。
在这种情况下,电子商务应用应包含以下层次:
●浏览器:这是进入电子商务的通道。
●电子商务应用平台:提供电子商务不同应用类型的生成工具软件,如网上商店、网络支付、虚拟社区等等。
●电子商务交换平台:对内集成企业内部的各种与电子商务相关的业务系统,对外连接商业合作伙伴,如银行、供应商、客户、配送结构,完成各种不同业务系统之间数据转换和整和。
●电子商务基础平台:用来支持大量Internet客户的并发访问,使应用开发商快速开发出灵活多变的电子商务应用,尽快把信息系统和商务活动放到Internet中。
在电子商务交换平台和电子商务基础平台中都不能没有中间件的存在。可以说,没有中间件就不能支撑今天的网络应用。
电子商务中间件构架是一种电子商务应用集成的关键件,不管电子商务应用分布在什么硬件平台上,使用了什么数据库系统,透过了什么复杂的网络,电子商务应用的互连和互操作是电子商务中间件构架首先要解决的问题。在通信方面,电子商务中间件构架要支持各种通信协议和通信服务模式,传输各种数据内容,数据格式翻译、流量控制、数据加密、数据压缩等等;在电子商务中间件构架核心,要解决名字服务、安全控制、并发控制、可靠性和效率保证等;在电子商务应用开发方面,要能提供基于不同平台的丰富的开发接口,支持流行的开发工具和异构互连接口标准等;在管理方面,解决电子商务中间件构架本身的配置、监控、调谐,为电子商务应用的易用易管理提供保证。
其次,针对不同的Web应用环境,对电子商务中间件构架有各种不同的要求。对工作流应用,需要根据条件以及条件满足状态,将信息、响应状态从一个应用传递到另一个应用;对联机事务处理,需要保证分布式的数据一致性、不停机作业、大量并发的高效率;对于一个数据采集系统需要保证可靠传输等等。
五、中间件符合软件发展的潮流
软件构件化(Software Component)技术是在大工业生产启发下应运而生的,是软件技术跨世纪的一个发展趋势,其目的是彻底改变软件生产方式,从根本上提高软件生产的效率和质量,提高开发大型软件系统尤其是商用系统的成功率。有了软件构件之后,应用开发人员就可以利用现成的软件构件装配成适用于不同领域、功能各异的应用软件。复用软件一直是整个世界软件业所追求的梦想,软件构件化为实现这一梦想指出了一条切实可行的道路,而中间件正是构件化软件的一种形式。中间件抽象了典型的应用模式,应用软件制造者可以基于标准的形式进行开发,使软件构件化成为可能,加速了软件复用的进程。因此,中间件是符合软件发展的内在规律的。
中间件是软件技术发展的一种潮流,被誉为发展最快的软件品种,近年来势头强劲,当然,这也是源于市场在全球范围内对中间件的支持。毫无疑问,中间件正在成为软件行业新的技术与经济增长点。
1.中间件的概念
随着计算机技术的飞速发展,各种各样的应用软件需要在各种平台之间进行移植,或者一个平台需要支持多种应用软件和管理多种应用系统,软、硬件平台和应用系统之间需要可靠和高效的数据传递或转换,使系统的协同性得以保证。这些,都需要一种构筑于软、硬件平台之上,同时对更上层的应用软件提供支持的软件系统,而中间件正是在这个环境下应孕而生。
由于中间件技术正处于发展过程之中,因此目前尚不能对它进行精确的定义。
比较流行的定义是:中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源。中间件位于客户机/服务器的操作系统之上,管理计算资源和网络通讯。
从中间件的定义可以看出,中间件是一类软件,而非一种软件;中间件不仅仅实现互连,还要实现应用之间的互操作;中间件是基于分布式处理的软件,定义中特别强调了其网络通讯功能。
2.中间件特点及优势
通常意义下,中间件应具有以下的一些特点:满足大量应用的需要;运行于多种硬件和OS平台;支持分布式计算,提供跨网络、硬件和OS平台的透明性的应用或服务的交互功能;支持标准的协议;支持标准的接口。
程序员通过调用中间件提供的大量API,实现异构环境的通讯,从而屏蔽异构系统中复杂的操作系统和网络协议。
中间件提供客户机与服务器之间的连接服务,这些服务具有标准的程序接口和协议。针对不同的操作系统和硬件平台,它们可以有符合接口和协议规范的多种实现。
由于标准接口对于可移植性和标准协议对于互操作性的重要性,中间件已成为许多标准化工作的主要部分。对于应用软件开发,中间件远比操作系统和网络服务更为重要,中间件提供的程序接口定义了一个相对稳定的高层应用环境,不管底层的计算机硬件和系统软件怎样更新换代,只要将中间件升级更新,并保持中间件对外的接口定义不变,应用软件几乎不需任何修改,从而保护了企业在应用软件开发和维护中的重大投资。
中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源。中间件软件管理着客户端程序和数据库或者早期应用软件之间的通讯。
中间件在分布式的客户和服务之间扮演着承上启下的角色,如事务管理、负载均衡以及基于Web的计算等。
利用这些技术有助于减轻应用软件开发者的负担,使他们利用现有的硬件设备、操作系统、网络、数据库管理系统以及对象模型创建分布式应用软件时更加得心应手。由于中间件能够保护企业的投资,保证应用软件的相对稳定,实现应用软件的功能扩展;同时中间件产品在很大程度上简化了一个由不同硬件构成的分布式处理环境的复杂性,所以它的出现正日益引起用户的关注。
世界著名的咨询机构The Standish Group在一份研究报告中归纳了中间件的十大优越性:
(1)应用开发:The Standish Group 分析了100个关键应用系统中的业务逻辑程序、应用逻辑程序及基础程序所占的比例;业务逻辑程序和应用逻辑程序仅占总程序量的30%,而基础程序占了70%,使用传统意义上的中间件一项就可以节省25%~60%的应用开发费用。如是以新一代的中间件系列产品来组合应用,同时配合以可复用的商务对象构件,则应用开发费用可节省至80%。
(2)系统运行:没有使用中间件的应用系统,其初期的资金及运行费用的投入要比同规模的使用中间件的应用系统多一倍。
(3)开发周期:基础软件的开发是一件耗时的工作,若使用标准商业中间件则可缩短开发周期50%~75%。
(4)减少项目开发风险:研究表明,没有使用标准商业中间件的关键应用系统开发项目的失败率高于90%。企业自己开发内置的基础(中间件)软件是得不偿失的,项目总的开支至少要翻一倍,甚至会十几倍。
(5)合理运用资金:借助标准的商业中间件,企业可以很容易地在现有或遗留系统之上或之外增加新的功能模块,并将它们与原有统无缝集合。依靠标准的中间件,可以将老的系统改头换面成新潮的Internet/Intranet 应用系统。
(6)应用集合:依靠标准的中间件可以将现有的应用、新的应用和购买的商务构件融合在一起进行应用集合。
(7)系统维护:需要一提的是,基础(中间件)软件的自我开发是要付出很高代价的,此外,每年维护自我开发的基础(中间件)软件的开支则需要当初开发费用的15%~25%,每年应用程序的维护开支也还需要当初项目总费用的10%~20%左右。而在一般情况下,购买标准商业中间件每年只需付出产品价格的15%~20%的维护费,当然,中间件产品的具体价格要依据产品购买数量及哪一家厂商而定。
(8)质量:基于企业自我建造的基础(中间件)软件平台上的应用系统,每增加一个新的模块,就要相应地在基础(中间件)软件之上进行改动。而标准的中间件在接口方面都是清晰和规范的。标准中间件的规范化模块可以有效地保证应用系统质量及减少新旧系统维护开支。
(9)技术革新:企业对自我建造的基础(中间件)软件平台的频繁革新是极不容易实现的(不实际的)。而购买标准的商业中间件,则对技术的发展与变化可以放心,中间件厂商会责无旁贷地把握技术方向和进行技术革新。
(10)增加产品吸引力:不同的商业中间件提供不同的功能模型,合理使用,可以让你的应用更容易增添新的表现形式与新的服务项目。从另一个角度看,可靠的商业中间件也使得企业的应用系统更完善,更出众。
具体地说,中间件屏蔽了低层操作系统的复杂性,使程序开发人员面对一个简单而统一的开发环境,减少程序设计的复杂性,将注意力集中在自己的业务上,不必再为程序在不同系统软件上的移植而重复工作,从而大大减少了技术上的负担。
中间件带给应用系统的不只是开发的简单、开发周期的缩短,也减少了系统的维护、运行和管理的工作量,还减少了计算机总体费用的投入。The Standish Group的调查报告显示,由于采用了中间件技术,应用系统的总建设费用可以减少50%左右。在网络经济大发展、电子商务大发展的今天,从中间件获得利益的不只是IT厂商,IT用户同样是赢家,并且是更有把握的赢家。
中间件作为新层次的基础软件,其重要作用是将不同时期、在不同操作系统上开发应用软件集成起来,彼此像一个天衣无缝的整体协调工作,这是操作系统、数据库管理系统本身做不了的。中间件的这一作用,在技术不断发展之后,使以往在应用软件上的劳动成果仍然物有所用,节约了大量的人力、财力投入。
3.中间件的应用领域与分类
随着计算机软件技术的发展,中间件技术也已经日渐成熟,并且出现了不同层次、不同类型的中间件产品。按照IDC 的分类方法,中间件可分为六类。分别是数据访问中间件、远程过程调用中间件、消息中间件、交易中间件、对象中间件等。
数据访问中间件:是为了建立数据应用资源互操作的模式,对异构环境下的数据库实现联接或文件系统实现联接的中间件;
远程过程调用中间件:通过这种远程过程调用机制,程序员编写客户方的应用,需要时可以调用位于远端服务器上的过程;
消息中间件:用来屏蔽掉各种平台及协议之间的特性,进行相互通信,实现应用程序之间的协同;
交易中间件:是在分布、异构环境下提供保证交易完整性和数据完整性的一种环境平台;
对象中间件:在分布、异构的网络计算环境中,可以将各种分布对象有机地结合在一起,完成系统的快速集成,实现对象重用。
目前国内外有不少厂商都开发出自己的中间件产品,其中有全球最大的独立中间件厂商BEA公司,还有像IBM、Oracl e和Microsoft、HP、Sun等大厂商也早已涉足电子商务中间件。
面向对象的中间件是对象技术和分布式计算发展的产物,业界普遍认为面向对象是今后中间件发展的主流方向,它提供一种通讯机制,透明地在异构的分布计算环境中传递对象请求,而这些对象可以位于本地或者远程机器。
面向对象标准原本只有一个,即CORBA(公共对象请求代理体系结构),该标准由包括BEA、IBM、Oracle、Sun和Sybas e等公司在内的众多厂商一起制定,从而形成了一个庞大的CORBA联盟势力。后来,Sun推出了企业级JavaBeans(EJB),用自己易使用的程序模型来对CORBA做出了改进。微软COM(Component Object Model,组件对象模型)的出现,使面向对象中间件市场里又多了一个标准,这样,面向对象中间件产品实际上形成了两大标准,一是微软的COM,一是JavaBeans。
从宏观上看,中间件可以分为3大类:
数据类:用于数据的存取、利用和增值,此类中间件用于构建以数据为中心的应用。
处理类:把分布在网络结点上的各个应用或处理连接在一起,形成一个统一的分布式应用。
分布式构件类:支持构件式应用,未来应用的发展方向,目前竞争激烈。
我们把中间件细分为12种,详情如下:
序号 | 种类 | 优劣 | 产品 |
1 | 数据库系统的产品 管理数据库连接,抽象网络协议。一般由数据库厂商或支持多数据库的中间件提供 | 数据库厂商的产品功能较强、性能较好。而独立于数据库厂商的产品在用于多数据库环境时效率有所降低 | Oracle Net8Sybase Netlib,Protocol services Intersolv SequeLink client |
2 | 数据库存取APIs 支持对数据库存取的编程,可以使用存储过程。OO数据库常为OO编程语言,如Java/C++提供适应ODMG的接口 | 数据库厂商的APIs可支持对数据库所有功能的存取,因而适合编写OLTP的应用。而ODBC或JDBC更适合多数据库的环境 | IBM DB2 CLIOracle Net8,Call InterfaceMicrosoft ODBC,OLE DBODI’s PSE |
3 | 数据迁移、转换 用于数据部署、转换、信息增值。常作为数据仓库解决方案的一部分 | 使完全不同的数据包和遗留的应用能协同工作,但需要建立诸如时间、数据优选和整合、以及资源等要素 | IBM Data PropagatorSybase Replication ServerPlatinum InfoPumpD2K Tapestry |
4 | 底层的同步服务(RPC) 使调用远端的过程和在本地一样。在被调用的处理未完以前,调用进程处于阻塞状态 | 点但的代码抽象,只有在所有的Server 都是在线的情形才能工作。不适合移动或Internet应用 | DCE-RPC (微软把它用在DOM中)Borland EnteraNoblenet RPC |
5 | 简单的异步消息 简单是消息发送和接收,有时扩展到可靠投递、智能路由和名字服务 | 对需要高性能的异步通讯的应用非常有用。但需要所有的Server 都在线 | Peerlogic PipesMomentum XIPC东方通科技TongLINK |
6 | 应用级的消息队列 是简单的消息中间件的扩展,增加了队列、脱机处理能力、可靠投递和发布订阅等功能 | 使分布式处理可以在脱机、事件驱动等的方式,适合与电子商务、移动用户、工作流或其他的环境中 | TIBCO RendenousIBM MQ SeriesMS Message QueueLevel8 FalconMQ东方通科技 TongLINK/Q清华北美 TH - MT |
7 | 应用协调器 通常是应用级消息队列的扩展,增加了许多工具用于建立适合事件服务的集成应用 | 有效地节约集成的时间特别是针对应用包或工作流产品 | Vitria VelocitiActive Software,ActiveWebOberon ProsperpNEON NEONetTSI Mercator |
8 | COM+/DNA 微软的分布式构件平台,使企业应用更加可扩充和可管理 | 从COM发展而来,是构件市场上的主流产品。尚需要增加针对企业应用的可靠性 | MS,COM,DCOM,COM+MS MTSMessage Queue ServerActiveDirectory(future) |
9 | CORBA 平台 OMG 标准,通过ORB 把分布的对象连接成一个逻辑上统一的整体 | 工业组织的标准,可用不同的方式实现,以提高互操作能力 | Iona OrbixBorland/Visigenic, VisibrokerIBM ComponentBrokerBEA Iceberg东方通科技 TongBroker |
10 | 交易监控器 用于开发实时的OLTP应用的服务器和API,用于管理交易,共享资源 | 已证明是建造OLTP应用的有效手段。通常是非面向对象的,带有特有和复杂的API | BEA TUXEDOIBM TX 系列东方通科技 TongEASY清华北美 JavaST |
11 | 应用服务器 针对Internet、Intranet和其他分布式构件应用,提供服务方构件的完整环境 | 与交易监控器类似,只不过是面向对象的、支持构件、具有标准API | NetDynamicsIBM Compont – BrokerNetscape KivaOracle App. Ser东方通科技 TongWEB清华北美 WebFirst |
12 | 工作流/应用集成 大杂烩,把工作流和应用开发技术如消息及分布式构件结合在一起 | 使处理能方便自动地和构件、Script 应用、工作流行为结合在一起,同时集成文档和电子邮件 | LSS FlowmanIBM FlowmarkAction, Technologies, ActionWorksVitria Business Agiliti |
二、中间件的技术规范
1.DCE体系
DCE是Distrbuted Computing Environment 分布式计算环境的缩写,它由Open Software Fondation 制定,现在这个组织被称为Open Group。
DCE由多个共同在一起工作的组件组成,它们是:远程过程调用(RPC)、本地和全局目录服务(CDS和GDS)、安全服务、DCE线程、分布式时钟服务(DTS)和分布式文件服务(DFC)。线程、RPC、CDS、安全服务和DTS组件通常被成为安全核心,并且是组成任何DCE环境所必须的组件,DTS是可选件。在DCE环境中,还包括用于管理这些组件的管理工具。
DCE被称做中间件或使其具有能力的技术,它不是独立存在的,而是被捆绑在供应商操作系统中,或者由第三方供应商进行集成。
2.DTP模型
DTP模型是X/OPEN组织提出的一种软件结构,这种结构允许多个应用程序去共享多个资源管理器提供的资源,并且具有协调全局事物的能力。
X/OPEN是一个独立的、具有全球影响力的开放系统组织,它得到了世界大多数的最大的信息系统供应商的支持,其根本任何是通过规范开放系统的具体实现,从计算的观点考虑如何让用户获得更大的利益。
X/OPEN的DTP模型由5个基本模块组成:
应用程序(AP):用于定义事物的边界,并确定组成事物操作的动作。
资源管理器(RM):如数据库或文件系统用于存取文件。
事物管理器(TP):给事物分配标识,监督事物的处理过程并负责事物的完成以及协调事物失败的恢复。
通信资源管理器(CRM):在一个事物管理器内或两个事物管理器之间对通信进行控制。
在这5个模块之间X/OPEN模型定义了这样一些模块与模块之间的接口规范:
应用程序——资源管理器之间已经存在了一些X/OPEN的规范,如SQL和ISAM;在应用程序——事物管理器之间定义了TX接口;在交易管理器——资源管理器之间定义了XA接口;在交易管理器——通信资源管理器之间定义了XA+接口;在应用程序——通信资源管理器之间有3种接口:TXRPC、XATMI和CPI-C;在通信资源管理器——操作系统提供的底层通信协议之间提供了XAP-TP接口。
3.CORBA
CORBA是Common Object Request Broker Architecture的缩写,简称公共对象请求代理结构,它由国际对象管理组织OMG制定,这个组织是一个国际性组织,始建于1989年,现已拥有包括生产厂商与软件开发商800多个会员,其目的是在分布和已构计算机环境下为应用软件的开发提供一个公共框架,使开发出来的软件即面向对象又具有可重用性、可移植性以及可操作性等特点。有关CORBA的其他功能情况参见下面的第三部分说明。
4.J2EE
J2EE是Java 2 Platform Enterprise Edition的缩写,是一种多层应用模式的结构体系。整个规范由SUN公司提出,它将业务逻辑从系统服务功能和用户界面中分离出去,放置在客户层和应用基础设施这两层之间的中间层,是目前应用的最为广泛的面向Web的应用系统结构规范。有关J2EE的其他功能情况参见下面的第三部分说明。
5.互联网相关技术规范
Web(World Wide Web)是一种网络化的信息资源,它依赖于3个机制,使这些信息资源可以面对广大的使用者。
1)一种唯一的命名机制,为网上的资源进行定位,如:URI。
2)一种通信规程,以便在网上可以存取这些被命名的资源,如:HTTP。
3)混合文本,以便更好地驾御这些信息资源,如:HTML。
URI(Universal Resource Identifier)全局资源标识,一种命名机制,它将在网上的一个资源的定位分为3个部分:用于存取资源的通信方式的名称,如HTTP、FTP;保存有资源的机器的名称,如:www.sohu.com;资源本身的名称,也就是存取这些资源的路径。HTTP(HyperText Transfer Protocol)是一种用于分布式、相互协作、混合型媒体的信息系统的应用层的通信规程。使用这一规程,除了可以在信息系统中取得资料外,还可以进行资料查询,对前端进行更新以及进行信息发布等操作。
HTML(HyperText Markup Language)是一种网上使用的出版语言,它可以为作者提供这样的功能:在在线出版的文档中包括标题、文本、表格、列表和照片等;按下鼠标后,通过混合文本链路查找文本;与远端的服务为进行联机事物处理建立表格,以便进行信息查找、预定和订购产品等操作;在文档中直接包含独立页面、影像资料与声音资料等。
这些规范都是web技术的基础,除了这些技术规范以外,还有一些规范也非常重要,它的用途是实现企业与企业间通过Web实现数据交换。这些规范是XML、SOAP、UDDI和WSDL。
vXML(Extensible Markup Language)通过提供更灵活和更容易被接收的信息标识方法来改进Web的功能。XML被称为可扩展的标注语言,它不像HTML是一种单一的、预先定义的语言,XML是一种用于描述其他语言的语言,使用XML,你可以定义你自己的、不受到类型限制的、其他类型的文档。
SOAP(Simple Object Access Protocol)是一种轻量级规程,用于在没有控制中心、分布式的环境中交换信息。它以XML为基础,由4个部分组成:一个信封,定义了是什么信息和如何对它进行处理的框架;一组编码规则,用于描述应用定义的数据类型的表示示例;一组表示远程过程调用和应答的规则方式,以及一组捆绑方式,这种方式用于使用低层通信规程交换信息。SOAP具有与其他规则相结合的可能性。
UDDI(Universal Description,Discovery and Integration)是一个规范,这个规范用于Web服务以分布式、以Web为基础的信息的注册。UDDI同时也是一个这样的规范的实现的公用的可接入的集合,这个规范是是某个企业的Web服务所能提供的内容用登记信息的方式提供出来,以便其他企业可以发现这些服务。Web服务是Web技术的下一步发展方向,它可以允许可编程的被放置在Web上,其他方可以使用分布式的方式进行存取。
WSDL(Web Service Description Language)是一组包含面向文档或面向过程消息的端点操作信息的xml格式网络服务描述;操作和消息首先被抽象的描述,然后捆绑到具体的网络规程和消息格式中,以便定义端点,相关的具体端点被组合进抽象的端点中(服务)。WSDL可以捆绑描述与SOAP、HTTP GET/POST和MIME相关。
三、主流中间件技术平台
下面重点阐述和比较了三大主流中间件技术平台,使读者加深对中间件技术理解。
1.当前支持服务器端中间件技术的平台
考察当前主流的分布计算技术平台,主要有OMG的CORBA、Sun的J2EE和Microsoft DNA 2000。它们都是支持服务器端中间件技术开发的平台,但都有其各自的特点,将分别阐述如下。
(1)OMG的CORBA
CORBA分布计算技术是OMG组织基于众多开放系统平台厂商提交的分布对象互操作内容的基础上制定的公共对象请求代理体系规范。
CORBA分布计算技术,是由绝大多数分布计算平台厂商所支持和遵循的系统规范技术,具有模型完整、先进,独立于系统平台和开发语言,被支持程度广泛的特点,已逐渐成为分布计算技术的标准。COBRA标准主要分为3个层次:对象请求代理、公共对象服务和公共设施。最底层是对象请求代理ORB,规定了分布对象的定义(接口)和语言映射,实现对象间的通讯和互操作,是分布对象系统中的"软总线";在ORB之上定义了很多公共服务,可以提供诸如并发服务、名字服务、事务(交易)服务、安全服务等各种各样的服务;最上层的公共设施则定义了组件框架,提供可直接为业务对象使用的服务,规定业务对象有效协作所需的协定规则。目前,CORBA兼容的分布计算产品层出不穷,其中有中间件厂商的ORB产品,如BEAM3,IBM Component Broker,有分布对象厂商推出的产品,如IONAObix和OOCObacus等。
CORBA规范的近期发展,增加了面向Internet的特性,服务质量控制和CORBA构件模型(CORBA Component Model)。
Internet集成特性包括了针对IIOP传输的防火墙(Firewall)和可内部操作的定义了URL命名格式的命名服务(Naming Service)。
服务质量控制包括能够具有质量控制的异步消息服务,一组针对嵌入系统的CORBA定义,一组关于实时CORBA与容错CORBA的请求方案。
CORBA CCM(CORBA Component Model)技术,是在支持POA的CORBA规范(版本2.3以后)基础上,结合EJB当前规范的基础上发展起来的。CORBA构件模型,是OMG组织制定的一个用于开发和配置分布式应用的服务器端中间件模型规范,它主要包括如下三项内容:
a、抽象构件模型,用以描述服务器端构件结构及构件间互操作的结构;
b、构件容器结构,用以提供通用的构件运行和管理环境,并支持对安全、事务、持久状态等系统服务的集成;
c、构件的配置和打包规范,CCM使用打包技术来管理构件的二进制、多语言版本的可执行代码和配置信息,并制定了构件包的具体内容和基于XML的文档内容标准。
总之,CORBA的特点是大而全,互操作性和开放性非常好。CORBA的缺点是庞大而复杂,并且技术和标准的更新相对较慢,COBRA规范从1.0升级到2.0所花的时间非常短,而再往上的版本的发布就相对十分缓慢了。在具体的应用中使用不是很多。
(2)Sun的J2EE
为了推动基于Java的服务器端应用开发, Sun于是在1999年底推出了Java2技术及相关的J2EE规范,J2EE的目标是:提供平台无关的、可移植的、支持并发访问和安全的,完全基于Java的开发服务器端中间件的标准。
在J2EE中,Sun给出了完整的基于Java语言开发面向企业分布应用规范,其中,在分布式互操作协议上,J2EE同时支持RMI和IIOP,而在服务器端分布式应用的构造形式,则包括了Java Servlet、JSP(Java Server Page)、EJB等多种形式,以支持不同的业务需求,而且Java应用程序具有"Write once,run anywhere"的特性,使得J2EE技术在发布计算领域得到了快速发展。
J2EE简化了构件可伸缩的、其于构件服务器端应用的复杂度,虽然DNA 2000也一样,但最大的区别是DNA 2000是一个产品,J2EE是一个规范,不同的厂家可以实现自己的符合J2EE规范的产品,J2EE规范,是众多厂家参与制定的,它不为Sun所独有,而且其支持跨平台的开发,目前许多大的分布计算平台厂商都公开支持与J2EE兼容技术。
EJB是Sun推出的基于Java的服务器端构件规范J2EE的一部分,自从J2EE推出之后,得到了广泛的发展,已经成为应用服务器端的标准技术。SunEJB技术是在Java Bean本地构件基础上,发展的面向服务器端分布应用构件技术。它基于Java语言,提供了基于Java二进制字节代码的重用方式。EJB给出了系统的服务器端分布构件规范,这包括了构件、构件容器的接口规范以及构件打包、构件配置等的标准规范内容。EJB技术的推出,使得用Java基于构件方法开发服务器端分布式应用成为可能。从企业应用多层结构的角度,EJB是业务逻辑层的中间件技术,与JavaBeans不同,它提供了事务处理的能力,自从三层结构提出以后,中间层,也就是业务逻辑层,是处理事务的核心,从数据存储层分离,取代了存储层的大部分地位。从分布式计算的角度,EJB像CORBA一样,提供了分布式技术的基础。提供了对象之间的通讯手段。从Internet技术应用的角度,EJB和Servlet,JSP一起成为新一代应用服务器的技术标准,EJB中的Bean可以分为会话Bean和实体Bean,前者维护会话,后者处理事务,现在Servlet负责与客户端通信,访问EJB,并把结果通过JSP产生页面传回客户端。
J2EE的优点是,服务器市场的主流还是大型机和UNIX平台,这意味着以Java开发构件,能够做到"Write once,run anywhere",开发的应用可以配置到包括Windows平台在内的任何服务器端环境中去。
(3)Microsoft DNA 2000
Microsoft DNA 2000(Distributed interNet Applications)是Microsoft在推出Windows2000系列操作系统平台基础上,在扩展了分布计算模型,以及改造Back Office系列服务器端分布计算产品后发布的新的分布计算体系结构和规范。
在服务器端,DNA 2000提供了ASP、COM、Cluster等的应用支持。目前,DNA2000在技术结构上有着巨大的优越性。一方面,由于Microsoft是操作系统平台厂商,因此DNA 2000技术得到了底层操作系统平台的强大支持;另一方面,由于Microsoft的操作系统平台应用广泛,支持该系统平台的应用开发厂商数目众多,因此在实际应用中,DNA 2000得到了众多应用开发商的采用和支持。
DNA 2000融合了当今最先进的分布计算理论和思想,如事务处理、可伸缩性、异步消息队列、集群等内容。DNA使得开发可以基于Microsoft平台的服务器构件应用,其中,如数据库事务服务、异步通讯服务和安全服务等,都由底层的分布对象系统提供。以Microsoft为首的DCOM/COM/COM+阵营,从DDE,OLE到ActiveX等,提供了中间件开发的基础,如VC,VB,Delphi等都支持DCOM,包括OLE DB在内新的数据库存取技术,随着Windows2000的发布,Microsoft的DCOM/COM/COM+技术,在DNA2000分布计算结构基础上,展现了一个全新的分布构件应用模型。首先,DCOM/COM/COM+的构件仍然采用普通的COM(Component Object Model)模型。COM最初作为Microsoft桌面系统的构件技术,主要为本地的OLE应用服务,但是随着Microsoft服务器操作系统NT和DCOM的发布,COM通过底层的远程支持使得构件技术延伸到了分布应用领域。DCOM/COM/COM+更将其扩充为面向服务器端分布应用的业务逻辑中间件。通过COM+的相关服务设施,如负载均衡、内存数据库、对象池、构件管理与配置等等,DCOM/COM/COM+将COM、DCOM、MTS的功能有机地统一在一起,形成了一个概念、功能强的构件应用体系结构。而且,DNA2000是单一厂家提供的分布对象构件模型,开发者使用的是同一厂家提供的系列开发工具,这比组合多家开发工具更有吸引力。
但是它的不足是依赖于Microsoft的操作系统平台,因而在其它开发系统平台(如Unix、Linux)上不能发挥作用。
2.相关性比较分析
目前,针对上述的各种分布计算平台技术,都出现了相似且具有可比性的分布式构件,即CORBA CCM(CORBA Component Model)技术、SUN的EJB(Enterprise JavaBean)技术和DNA 2000中的COM/DCOM/COM+技术。
对于以上三个分布计算平台,本文采用业界常用的做法从以下三个方面进行分析:
集成性:集成性主要反映在基础平台对应用程序互操作能力的支持上。它要求分布在不同机器平台和操作系统上、采用不同的语言或者开发工具生成的各类商业应用必须能集成在一起,构成一个统一的企业计算框架。这一集成框架必须建立在网络的基础之上,并且具备对于遗留应用的集成能力;
可用性:要求所采用的软件构件技术必须是成熟的技术,相应的产品也必须是成熟的产品,在至关重要的企业应用中能够稳定、安全、可靠地运行。另外,由于数据库在企业计算中扮演着重要角色,软件构件技术应能与数据库技术紧密集成;
可扩展性:集成框架必须是可扩展的,能够协调不同的设计模式和实现策略,可以根据企业计算的需求进行裁剪,并能迅速反应市场的变化和技术的发展趋势。通过保证当前应用的可重用性,最大程度地保护企业的投资。
下表从集成性,可用性,可扩展性三个方面,给出了上述三种主流分布计算平台的比较结果。
![](http://tech.ccidnet.com/pub/attachment/2005/1/385245.gif)
四、中间件是实现电子商务的基础软件
电子商务的本质就是对处于分布环境中的各种计算机系统进行交流协调,从而开创新的商业运作模式。网络通信,尤其是互联网技术,是电子商务的通信基础,而管理和传输系统之间的业务信息、协调各个系统的处理模块的中间管理服务系统,是保证电子商务应用成功的关键。电子商务应用服务器、通用业务网关、支付网关、通信平台和安全平台,统一纳入电子商务中间件构架的范畴。
从技术角度看,电子商务将由Internet/Intranet技术、传统IT技术以及具体的业务处理所构成。但是,系统的建立将会面临许多新的问题,包括应用系统能不能快速地建立,能不能适应大用户数、高处理量要求,能不能提供高效率、高可靠性、高可用性等等关键任务的要求,能不能满足安全需要等等。
以上这些问题,只是依靠简单的Web技术是不够的。目前常用的Web技术由于早期更多的是面向信息发布,因此存在并发访问瓶颈、难扩展、效率低、安全等诸多问题,不能满足电子商务的需要。为了很好地解决这些问题,需要以Web的低层技术为基础,规划出一个整体的应用框架,并提供一个支持平台,用于Internet应用的开发、部署和管理,并能籍此解决上述各种问题。这已经发展成为一个能广泛适应的标准的支撑层,成为Internet应用的基础设施(Infrastructure),这一支撑层实际上是基于Internet的中间件,也就是应用服务器。
同时,由于企业并不能把业务一不跨到Internet上,而必须同传统的应用系统结合,因此也必须通过中间件来集成Web应用和传统应用,实现完整的电子商务。
在这种情况下,电子商务应用应包含以下层次:
●浏览器:这是进入电子商务的通道。
●电子商务应用平台:提供电子商务不同应用类型的生成工具软件,如网上商店、网络支付、虚拟社区等等。
●电子商务交换平台:对内集成企业内部的各种与电子商务相关的业务系统,对外连接商业合作伙伴,如银行、供应商、客户、配送结构,完成各种不同业务系统之间数据转换和整和。
●电子商务基础平台:用来支持大量Internet客户的并发访问,使应用开发商快速开发出灵活多变的电子商务应用,尽快把信息系统和商务活动放到Internet中。
在电子商务交换平台和电子商务基础平台中都不能没有中间件的存在。可以说,没有中间件就不能支撑今天的网络应用。
电子商务中间件构架是一种电子商务应用集成的关键件,不管电子商务应用分布在什么硬件平台上,使用了什么数据库系统,透过了什么复杂的网络,电子商务应用的互连和互操作是电子商务中间件构架首先要解决的问题。在通信方面,电子商务中间件构架要支持各种通信协议和通信服务模式,传输各种数据内容,数据格式翻译、流量控制、数据加密、数据压缩等等;在电子商务中间件构架核心,要解决名字服务、安全控制、并发控制、可靠性和效率保证等;在电子商务应用开发方面,要能提供基于不同平台的丰富的开发接口,支持流行的开发工具和异构互连接口标准等;在管理方面,解决电子商务中间件构架本身的配置、监控、调谐,为电子商务应用的易用易管理提供保证。
其次,针对不同的Web应用环境,对电子商务中间件构架有各种不同的要求。对工作流应用,需要根据条件以及条件满足状态,将信息、响应状态从一个应用传递到另一个应用;对联机事务处理,需要保证分布式的数据一致性、不停机作业、大量并发的高效率;对于一个数据采集系统需要保证可靠传输等等。
五、中间件符合软件发展的潮流
软件构件化(Software Component)技术是在大工业生产启发下应运而生的,是软件技术跨世纪的一个发展趋势,其目的是彻底改变软件生产方式,从根本上提高软件生产的效率和质量,提高开发大型软件系统尤其是商用系统的成功率。有了软件构件之后,应用开发人员就可以利用现成的软件构件装配成适用于不同领域、功能各异的应用软件。复用软件一直是整个世界软件业所追求的梦想,软件构件化为实现这一梦想指出了一条切实可行的道路,而中间件正是构件化软件的一种形式。中间件抽象了典型的应用模式,应用软件制造者可以基于标准的形式进行开发,使软件构件化成为可能,加速了软件复用的进程。因此,中间件是符合软件发展的内在规律的。
中间件是软件技术发展的一种潮流,被誉为发展最快的软件品种,近年来势头强劲,当然,这也是源于市场在全球范围内对中间件的支持。毫无疑问,中间件正在成为软件行业新的技术与经济增长点。