软件系统的复杂性不断增长、软件人员的频繁流动和软件行业的激烈竞争迫使软件企业提高软件质量、积累和固化知识财富,并尽可能地缩短软件产品的开发周期。于是集软件复用、分布式对象计算、企业级应用开发等技术为一体的"基于构件的软件开发"(CBSD,Component Based Sortware Development)应运而生,这种技术以软件架构为组装蓝图,以可复用软件构件为组装模块,支持组装式软件的复用,大大提高了软件生产效率和软件质量。为此国内外对于这一技术的研究正在不断深入,同时大型的软件公司(例如sun,microsoft)及软件组织机构(OMG)都推出了支持构件技术的软件平台。
构件技术的概念及发展
在Merriam-Webster Collegiate字典里,构件一词于1645在英语中开始使用。 构件一词的语源问题:拉丁文的构件一词是componens,表示用于组合在一起的部分。
软件构件是指应用系统同中可以明确辨识的构成成分,包括源代码、需求、系统和软件的需求规约、系统和软件的构架、文档、测试计划、测试案例和数据以及其他开发活动有用的信息。基于构件的开发来自于利用构件生产应用软件的概念。开发者在设计和详细描述阶段,使用内部开发的构件和公开市场的构件来为他们的应用软件提供尽可能多的功能。然后,开发者编写其它的构件来粘联代码,把构件一一连接。他们可以把新写的构件放进公司的知识库,以至于其它人就可以使用这些构件的功能。这种做法有效提高了软件重用的效率并降低了开发成本。打个比方,如果有一个开发人员创建了一个构件能够让一个客户进入公司的数据库。那么,其他程序员就不必重新编写这个功能,而是从公司的知识库提取这个用户构件,然后直接放入程序使用其功能。
当前的三种构件标准规范
当前主流构件标准规范包括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 CCM(CORBA Component Model)技术是在支持POA的CORBA规范(版本2.3以后)基础上结合EJB当前规范的基础上发展起来的。CORBA构件模型是OMG组织制定的一个用于开发和配置分布式应用的服务器端构件模型规范,它主要包括如下三项内容
(1) 抽象构件模型,用以描述服务器端构件结构及构件间互操作的结构
(2) 构件容器结构,用以提供通用的构件运行和管理环境,并支持对安全、事务、持久状态等系统服务的集成
(3) 构件的配置和打包规范,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推出之后,得到了广泛的发展,已经成为应用服务器端的标准技术。Sun EJB技术是在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)上不能发挥作用。
相关性比较分析
目前,针对上述的各种分布计算平台技术,都出现了相似且具有可比性的分布式构件,即CORBA CCM(CORBA Component Model)技术、SUN的EJB(Enterprise JavaBean)技术和DNA 2000中的COM/DCOM/COM+技术。
对于以上三种技术的采用以下三种标准进行比较分析。
集成性:集成性主要反映在基础平台对应用程序互操作能力的支持上。它要求分布在不同机器平台和操作系统上、采用不同的语言或者开发工具生成的各类商业应用必须能集成在一起,构成一个统一的企业计算框架。这一集成框架必须建立在网络的基础之上,并且具备对于遗留应用的集成能力;
可用性:要求所采用的软件构件技术必须是成熟的技术,相应的产品也必须是成熟的产品,在至关重要的企业应用中能够稳定、安全、可靠地运行。另外,由于数据库在企业计算中扮演着重要角色,软件构件技术应能与数据库技术紧密集成;
可扩展性:集成框架必须是可扩展的,能够协调不同的设计模式和实现策略,可以根据企业计算的需求进行裁剪,并能迅速反应市场的变化和技术的发展趋势。通过保证当前应用的可重用性,最大程度地保护企业的投资。
下表从集成性,可用性,可扩展性三个方面,给出了上述三种主流分布计算平台的比较结果。
虽然这三种平台因为其形成的历史背景和商业背景有所不同,各自有自己的侧重和特点,其实在它们之间也有很大的相通性和互补性。例如,EJB提供了一个概念清晰、结构紧凑的分布计算模型和构件互操作的方法,为构件应用开发提供了相当的灵活性。但由于它还处于发展初期,因此其形态很难界定。CORBA CCM是一种集成技术,而不是编程技术。它提供了对各种功能模块进行构件化处理并将它们捆绑在一起的粘合剂。EJB和CORBA在很大的程度是可以看作为互补的。这个适应WEB应用的发展要求,许多厂商多非常重视促进EJB和CORBA技术的结合,将来RMI可能建立在IIOP之上。CORBA不只是对象请求代理ORB,也是一个非常完整的分布式对象平台。CORBA可以扩展EJB在网络、语言、组件边界、操作系统中的各种应用。目前许多平台都能实现EJB构件和CORBA构件的互操作。同EJB和CORBA之间相互之间方便的互操作性相比,DCOM和CORBA之间的互操作性要相对复杂些,虽然DCOM和CORBA极其类似。DOCM的接口指针大体相当于CORBA的对象引用。为了实现CORBA和DCOM的互操作,OMG在CORBA3.0的规范中,加入了有关的CORBA和DCOM互操作的实现规范,并提供了接口方法。因为商业利益的原因,在EJB和DCOM之间基本没有提供互操作方法。