《电子技术应用》
您所在的位置:首页 > 其他 > 业界动态 > 基于EJB组件对象的分布式多层应用系统构建模式

基于EJB组件对象的分布式多层应用系统构建模式

2009-01-05
作者:苏洋

1 前言 

随着计算机硬件技术水平的不断提高,特别是近年来互联网技术的发展、电子商务技术的普及和应用,软件客户对基于网络的分布式应用系统的多用户响应能力、系统构建的时效性、系统运行的稳定性等方面的需求越来越强烈。因此,软件组织按照客户的特殊系统需求,快速地构建一个性能稳定、可移植性强的软件系统,不仅对软件系统的软、硬件运行环境提出了新的需求,更重要的是需对传统的应用软件系统构建方式进行更新。 

由于软件系统面向的应用领域不同,作为软件系统核心内容的封装了企业商务规则的业务处理模块往往带有行业性质,在研发过程中需要进行大量的客户交流和系统分析,为此需消耗大量的人力和财力。因而理想的情况是:这种类型的软件模块由专业化的软件组织开发并负责维护,应用软件系统集成商在系统组装和集成过程中,以“软件组件”的形式从第三方获得由专业人员开发的这些模块集成到待开发系统中。 

基于这些需求,以服务器端软件组件对象模型为核心的分布式多层应用系统体系结构逐渐成为在构建基于互联网的商业系统时的首选实现模型。 

2 软件组件对象结构

长期以来,软件设计人员一直追求在程序代码编写过程中,能够象电子元器件一样将具有公共特征的软件代码创建成为软件组件(Component)。软件组件通过接口将组件内封装的方法“暴露”给组件的使用者。创建应用程序的过程类似于“搭积木”,将具有特定功能的软件组件组织到一起来构成完整的应用系统。 

从组件对象的客户端角度来看:一个软件组件对象通常可划分成如下两部分: 

●软件组件的外部接口 

为了使调用组件商务方法的客户能够获取组件中实现方法的类型和参数格式,在软件组件中必须定义组件接口对象。软件组件的客户通过组件的接口对象访问组件中定义的方法。因此,可以将接口对象看成是软件组件与方法调用客户之间的协议对象。 

●软件组件的实现 

软件组件中的实现代码作为组件对象的核心,是实现了特定功能的逻辑单元,其主要内容为按照商务规则对数据进行逻辑分析和处理的程序代码。由于组件实现代码是组件的私有部分,因此,必须将实现代码与客户端完全隔离。典型的软件组件客户与软件组件之间的协作关系如下图所示: 

图1 软件组件客户与软件组件之间的协作关系图 

通过将组件划分为组件接口对象和实现代码两部分内容,使得应用组件对象的客户端可以将组件看成是一个黑箱(Black Box)。组件开发人员在组件中编写完整实现商务规则的代码并将组件商务方法的定义以接口形式对组件应用对象公开后,组件的客户就能够按照接口方法定义的约束条件调用组件商务方法来获取服务。 

基于软件的组件对象化技术,独立软件开发商(ISV)通过集成多个软件开发商的软件组件产品,能够以较快地速度开发出符合客户需求的应用软件系统产品,缩短了软件产品从研发到市场化的周期,降低了软件客户投资风险。 

3 应用系统构建过程中的职责划分 

    由于研究的技术领域和发展方向不同,不同的软件组织在应用系统的开发过程中分别扮演不同的角色。例如: 

●精通行业应用规则并且熟练掌握某种程序设计语言的软件组织可以从事软件组件对象的开发工作; 

●熟悉服务器端程序设计并且精通系统级的事务处理、安全性维护、并发性控制以及熟练掌握各种类型数据库访问技术的软件组织可以从事软件组件运行环境的设计和开发工作; 

●熟悉各种类型硬件设备性能的软件组织可以从事组件部署和维护工具的开发工作。 

为了充分发挥专业技术优势,组件对象的开发、部署和应用的各个过程都需要不同专业方向的软件组织来完成相应的职责。软件组件对象开发完成后,组件的应用或部署人员须利用部署工具供应商提供的部署工具在高端服务器中为组件对象的运行提供合适的运行环境,而运行环境由掌握服务器端程序设计的软件组织设计并开发。 

由于软件组织在基于组件对象模型的应用系统开发、部署和维护等工作中的分工,促进了服务器端软件组件体系结构规范的发展。 

4 服务器端组件体系结构解决方案

对象管理组织(OMG)、Microsoft和Sun等组织或公司分别针对服务器端软件组件模型定义了相应的分布式应用体系结构规范: 

●CORBA规范 

对象管理组织定义的公共对象请求代理体系结构(Common Object Request Broker Architecture,CORBA)规范定义了分布式应用对象间的互操作方式。同时,规范中基于互联网的对象请求代理间互操作协议(Internet Inter-ORB Protocol,IIOP)定义了分布式对象间的信息交换方式。 

    需要注意的是:CORBA规范只是分布式应用对象间交互方式的定义,而不是最终的软件产品。如果要基于CORBA规范创建分布式应用系统,需要采用实现CORBA规范的、由Borland、IBM、IONA等公司开发的如VisiBroker等中间件软件产品。基于这些中间件产品,应用系统开发人员可以采用不同的程序设计语言开发分布式应用系统的客户端和服务实现对象,并且可以实现系统的跨平台应用能力。 

    ●DNA规范 

Microsoft定义的分布式互联网应用体系结构(Distributed Internet Architecture,DNA)用于规范Windows平台中分布式应用对象间的互操作方式。DNA体系结构中包括分布式组件对象模型(DCOM)、微软事务服务(MTS)、微软消息队列(MSMQ)、互联网信息服务器(IIS)、Windwos NT操作系统等应用技术和系统运行环境。基于DCOM模型构建的组件化应用系统可以在相关实现技术的支持下,动态响应客户端服务请求。 

    ●EJB规范 

Sun公司的Java2平台企业版(Java2 Platform Enterprise Edition,J2EE)规范定义了采用Java语言创建平台独立、具有可移植、能够响应多用户请求、以服务器端组件对象模型为核心的应用系统构建方式。在J2EE规范中,包括EJB组件对象规范、JDBC数据库访问技术、JSP/Servlet技术、JavaMail电子邮件处理技术、JNDI命名和目录接口技术、JTA事务服务API、JMS消息服务等。 

    以Java虚拟机(Java Virtual Machine,JVM)环境为基础,采用J2EE规范构建的应用系统不需要考虑软件系统的运行环境问题。在应用系统构建过程中,服务器可以采用高性能的、基于Unix等稳定操作系统的高端服务器,而客户端可以采用基于Linux和Windows操作系统的低端台式计算机。 

    从以上分析可以看出:J2EE规范作为以Java为程序设计语言的应用系统构建方式解决方案,不仅可以使应用系统的构成方式更加灵活,而且能够对在不同运行环境中开发的遗留(Legacy)系统进行良好集成。 

5 EJB组件对象规范的内容 

   EJB规范是J2EE分布式应用体系结构中的服务器端应用组件对象规范。 

EJB规范定义了应用系统的服务器端由EJB组件和组件运行的EJB容器构成。EJB容器提供组件对象的事务管理、对象持久化、远程访问控制、服务器端资源管理和安全性维护等多种类型的系统服务。EJB容器软件由专业的中间件或者应用软件开发商开发。 

按照组件对象模型思想,EJB组件以接口对象的形式向组件对象的客户提供组件中定义方法的细节。组件开发者依照EJB规范开发的EJB组件可以部署在符合EJB规范的容器中,在运行时通过标准的接口使用EJB容器提供的系统服务。EJB2.0规范定义了三种类型的组件对象: 

●会话类型组件 

会话(Session Bean)类型组件是不需要被持久化存储的组件对象,用于实现数学运算、逻辑分析等功能。按照组件对象能否在EJB容器中维护不同组件客户的状态信息,EJB2.0规范定义了有状态(Stateful)和无状态(Stateless)两种类型的会话组件。 

●实体类型组件 

相对会话类型组件而言,实体(Entity Bean)类型组件对象是需要进行持久化存储的组件对象。从组件对象构成的实际意义上讲,实体类型组件通常代表系统后台关系数据库中的数据记录。按照实体组件持久性状态的维护对象不同,EJB2.0规范定义了容器管理持久性(Container-Managed Persistence,CMP)和组件管理持久性(Bean-Managed Persistence,BMP)两种类型的实体组件。 

●消息驱动类型组件 

消息驱动(Message-Driven Bean)类型组件是EJB2.0规范中新定义的服务器端组件对象类型,用于在EJB服务器端响应基于JMS消息服务规范发送的事件消息。 

按照组件对象的定义思想,EJB组件对象的开发者不是作为组件对象产品的直接使用者。因此,EJB规范采用XML部署描述文件的形式将组件对象的类型、构成和需求的系统服务等内容通知组件对象的组装和部署人员以及组件部署的EJB容器。 

6 EJB组件对象模型的技术优势 

Java平台根据软件组件对象模型,以软件组件中实现的商务功能为基础,定义了企业应用级JavaBean组件(Enterprise JavaBean,EJB)。 

    EJB组件是部署在EJB容器中的服务器端可部署(Deployable)类型组件。基于EJB组件对象的可部署能力,组件程序设计人员在对商务对象进行系统分析后,根据特定的商务规则创建EJB组件对象后,由组装和部署人员将EJB组件部署到应用服务器中的EJB容器中。EJB容器(Container)根据客户端的服务请求在EJB容器中动态创建EJB组件对象实例为客户提供服务。 

    部署在高性能服务器中的EJB组件用于进行复杂、大量的数据分析和处理,并且依靠应用服务器来提供事务管理、多用户访问的并发控制及应用系统的容错处理等。总体上讲,服务器端EJB组件对象模型具有如下技术优势: 

●提高了软件代码的可重用性; 

●不同类型的客户端可以采用多种技术访问部署在EJB容器中的组件对象; 

●软件开发厂商可以向第三方软件商购买具有行业特点或者软件代码相对复杂的EJB组件集成在待开发系统中,从而节省了大量的人力和时间、降低了软件开发风险;

●将自己不擅长的技术细节封装成为软件组件,由其它软件开发商开发,从而降低了软件代码中发生错误的机会;

    ●EJB组件用于专门实现商务规则,而由组件部署的EJB容器提供系统级服务,从而降低了组件代码编写难度;

    ●按照J2EE规范对应用系统开发过程中的角色划分,掌握并熟练应用不同技术的软件组织能够发挥自身的技术优势,从而构建出健壮的应用系统; 

●在软件系统维护过程中,购买的软件组件可以由作为行业专家的软件组件开发商来维护,提高了应用系统维护效率、降低了维护成本;

    ●有效减少应用系统开发过程中的技术难题,降低了系统构建成本。 

7 以EJB组件对象为核心的分布式应用系统构成方式 

J2EE规范根据分布式多层应用系统的各个组成部分在功能上的差别,将整个应用系统划分成配置在不同类型应用服务器中的逻辑层。常规意义上的分布式三层/多层体系结构由客户层、中间层和企业信息系统层构成,其中中间层可细分为WEB层和业务层。在对应用系统的组件对象进行组装和部署过程中,需根据J2EE规范将不同性质和用途的组件对象部署到不同的应用系统逻辑层中,如下图所示: 

图2 基于J2EE规范划分的企业应用系统逻辑层 

●客户层 

客户层用于与应用系统的用户进行交互以及显示系统的运行结果。客户端的实现形式可以是支持HTML、DHTML或者JavaScript的浏览器,也可以是不基于浏览器的独立(Stand Alone)应用程序。 

基于浏览器的分布式应用系统客户端启动后,从WEB服务器中下载静态或由JSP/Servlet动态生成的HTML页面。由于浏览器可以运行在任何应用环境中,应用目前成熟的浏览器页面构造技术和WEB容器中的JSP/Servlet组件技术,完全能够构建出符合用户需求的用户界面。因此,这种类型的分布式应用系统客户端实现形式被大多数J2EE应用系统所采用。 

独立应用程序类型的客户端是利用Java语言集成化开发工具(IDE)编写的、基于JVM运行的、具有用户界面的应用程序,在应用程序中包含与中间层进行数据交换的程序代码。这种类型的客户端与中间层WEB组件之间的数据交换可以采用基于HTTP协议的XML技术,也可以采用解析JSP组件生成HTML代码的方式。因此,这种类型的客户端可以运行在手持设备或汽车电话等移动设备中,其技术优势在于可以基于RMI/IIOP协议与其它类型的组件对象或者是遗留系统进行集成。

●中间层 

中间层由响应客户端请求的JSP/Servlet组件和进行业务数据处理的EJB组件对象构成。通常,将JSP/Servlet组件和其运行的WEB容器称为WEB层、将EJB组件和其运行的EJB容器称为业务层。 

J2EE规范定义的WEB层由JSP组件或者由动态生成HTML页面的Servlet构成。WEB层中的JSP组件能够动态生成用于构造客户端显示逻辑的HTML代码,而Servlet能够以”请求/响应”的方式接收客户端提出的服务请求并在接收业务层的计算结果后动态创建客户端的显示逻辑代码。这些元素在组装过程中通过打包的方式创建WEB组件。 

业务层由实现特定商务规则的EJB组件和为EJB组件提供系统服务的EJB容器构成。EJB组件响应客户端服务请求并按照商务规则对数据进行处理后,可将处理结果发送到企业信息系统层进行存储并将数据处理结果返回提出服务请求的客户端。部署在业务层中的EJB组件依赖于EJB容器来提供诸如事务、生命期、状态转换、多线程及资源存储等系统服务。 

●企业信息系统层

企业信息系统层通常由企业资源规划(Enterprise Resource Planning,ERP)系统、大型机事务处理(Mainframe Transaction Processing)系统、关系数据库系统(RDMS)及其它在创建J2EE分布式应用系统之前已有的企业信息管理软件系统构成,基于J2EE规范的分布式应用系统利用这些软件系统存储数据资源。由于数据存储对象类型的差异,J2EE规范定义了JDBC、JNDI、JMS以及JavaIDL等技术,使得应用系统的中间层可以从企业信息系统中获取数据资源以及将应用系统产生的数据存储到信息系统中。 

8 结论 

在早期的如Vax、Cray等类型的大型机应用软件系统中,多个客户端与服务器直接连接,并发地向服务器发出作业请求,服务器按照商务规则对客户端的服务请求进行处理并将结果保存在本地数据库中。

随着小型计算机性能的提高、软件行业分工的细化,应用系统的构建方式逐渐以提高服务器的数据分析和处理能力,客户端在侧重于提供与客户进行交互的图形用户界面基础上,只进行简单的用户输入数据合法性验证,而独立的数据库服务器用于进行稳定、高数据吞吐效率的数据资源管理和服务。由于这些应用系统组成部分的逻辑功能不同,需要不同性能的计算机来完成相应功能,从而使得软件系统构成实际意义上的分布式三层/多层应用体系结构。

正是根据增强软件系统的可移植性、提高应用系统对各种访问模式的兼容性、缩短应用系统的开发周期、最大程度地保护软件客户已有投资等方面的需求,推动了作为分布式三层/多层应用体系结构核心内容的服务器端组件对象体系结构模型的应用和发展。 

J2EE分布式体系结构规范以EJB组件对象模型为核心,着力于创建以互联网应用技术为基础的“瘦”客户端类型的分布式多层软件系统。EJB组件对象部署在高性能的应用服务器中,依赖于EJB容器提供系统服务,向前响应客户端的服务请求,向后存储系统数据资源。可以说:EJB软件组件对象模型的定义,促进了分布式应用技术的普及和发展,推动了Java语言在网络环境中的应用。 

参考文献 

1 Sun Microsystems Inc. Guide to the Java2 Platform Enterprise Edition. 2001 

2 Ed Roman. Mastering Enterprise JavaBeans(Second Edition). Amazon Press. 2002 

3 Perrone P. J2EE构建企业系统专家级解决方案. 北京:清华大学出版社,2001 

4 艾拉玛. J2EE编程指南. 北京:电子工业出版社,2002 

5 苏洋. Java程序设计实例教程. 北京:希望电子出版社,2003 

本站内容除特别声明的原创文章之外,转载内容只为传递更多信息,并不代表本网站赞同其观点。转载的所有的文章、图片、音/视频文件等资料的版权归版权所有权人所有。本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如涉及作品内容、版权和其它问题,请及时通过电子邮件或电话通知我们,以便迅速采取适当措施,避免给双方造成不必要的经济损失。联系电话:010-82306118;邮箱:aet@chinaaet.com。