书城工业技术制造业信息化工程原理和案例
19099100000047

第47章 企业信息系统的支撑环境(5)

(4)提供了软件总线的机制。所谓软件总线,是指CORBA系统定义了一组接口规范。任何应用程序、软件系统或工具,只要具有与该接口规范相符合的接口定义,就能方便地集成到CORBA系统中,而这个接口规范独立于任何实现语言和环境。也就是说,CORBA规范支持服务对象的位置透明性、实现透明性、执行状态透明性和通信机制透明性,只要按照OMGIDL接口描述语言对服务对象所提供的服务进行描述,客户应用与服务对象之间就可以透明地交互运行。应用软件或构件能够在“软件总线”(softwarebus)之上实现“即插即用”(plug&;play)。

(5)分层的设计原则和实现方式。CORBA规范仅定义了ORB中需要用到的基本对象,封装了相应的属性和方法,而面向应用的对象定义则可以在OMA的应用对象、领域对象或应用开发环境中逐步分层定义和实现,使CORBA系统核心始终是一个精炼的实体,而各种复杂功能和应用可以由核心扩展、延伸。

7.5基于Java的组件结构

7.5.1组件及其技术体系

第7.3.1节已介绍了组件的概念。组件实际上是一种用以实现各种应用的代码集合,也是易于管理的离散逻辑片段。理论上,组件的功能可以无比强大,企业只要根据需求购买预先定义好的模块,再把它与原来的组件连在一起,就可以扩大解决问题的范围。

组件的可重用性推动了软件的快速开发。软件商店可以把预先写好的组件很快组装成一种应用,而不是从头开始编写整个应用程序。这种情况给信息技术(IT)产业带来了以下变化:

(1)软件商店依赖于更小的家庭专业户。软件商店在组装应用软件时把每个组件都视为“黑匣子”,只要按照说明书选择和装配便可。每个组件内部的运算逻辑是开发组件的专家考虑的事情。

(2)应用开发变成了快速装配。组件供应商实现了完整而健壮的计算逻辑,而软件商店只做组件的协调工作,这样就节约了大量的开发时间。

(3)降低了软件产品的整体价格。组件供应商获得的收益取决于他所提供的组件的功能和质量,所以他必须提供最好的文档、技术支持和维护。因为组件供应商是该领域的专家,所以与软件商店自己开发的程序相比,其代码的缺陷少得多而性能要高得多,这必然会降低软件商店的成本。

组件的技术体系包含以下3部分:

(1)组件开发工具

组件的开发是一个高效率的过程,在此过程中开发工具使开发人员能够集中精力编写组件所包含的核心逻辑。这一特点推动了快速应用开发的发展,也是任何组件标准取得成功的基础。例如,像IBM的Visual Agefor Java一类的集成开发环境(IDE)就能够帮助Java开发人员快速建立和调试组件。还有一些供应商提供增强的专用EJB(Enterprise Java Beans)开发工具。

(2)组件容器

组件容器(component scontainer)提供组件的运行环境,以管理所使用的组件。

组件容器还提供一组大部分组件都需要的公共服务,例如,在必要时组件容器能够对新的组件自动进行初始化,这样就减轻了组件开发者的负担。为了把容器与组件结合在一起,在容器与组件之间必须定义完整的协议,这种协议是容器管理组件的基础。

(3)使用和维护组件的工具

如果一个单位购买了组件产品,还必须有一组工具来帮助有关人员使用和维护这些组件,例如,帮助用户建立组件的原型以适应某个特殊的应用环境。

设计任何一个组件都要解决组件接口和组件实现两个基本问题。组件接口确定了组件与调用代码之间的约定,定义了组件所接受的方法和参数。组件接口屏蔽了组件实现,这样,客户就只需要关心调用的结果和调用的方法,而不必关心具体的实现。组件实现是对象所提供的核心计算逻辑,它包含十分特殊的算法、逻辑和数据,其中的数据属于该组件私有,不能被任何客户代码所使用。

Java语言支持组件接口与实现相分离的概念,按照Java的语法在语句中分别定义接口参数和类(class)参数就可以做到这一点。同时,Java也是一种面向对象的语言和集成化的开发平台,在实践中得到广泛应用。很容易用Java语言实现组件技术。

7.5.2Java支持的组件结构

在Java的组件体系结构中,第一个遇到的概念是Java Beans。组件Java Beans是小型的应用单元,可以用来组装大型的组件或者整个应用程序。Java Beans是结构性组件而不是应用性组件,也就是说,Java Beans不是一个完整的应用,不能直接被使用。但是,Java Beans可以为构造大型的实用软件提供帮助。因为Java Beans不能直接使用,所以它不需要支持其运行的环境,不需要容器来对它进行初始化、释放或者提供其他服务。

EJB是针对一类被称为企业Beans的组件所定义的组件结构标准。企业Beans是大型的应用组件原型,它们可以直接使用,也可以与其他组件装配在一起形成更大的应用系统。但是,它们必须在一个能为组件提供运行服务的容器内才能被使用,这一点与Java的另外两类组件即Applets和Servlets极为相似。Applets用于Web页面,此时浏览器的Applet Viewer提供Applets的运行容器。Servlets用于Web服务器,此时Web服务器的ServletEngine提供Servlets的运行容器。企业Beans也需要在一个运行容器内才能使用,这个运行容器就是应用服务器。

Applets、Servlets与企业Beans的主要差别在于应用范围不同。Applets是袖珍型的Java程序,可以下载并在一个不十分确定的环境中运行。例如,一个Applet可以从Web服务器上下载形成Web浏览器,最典型的操作是形成终端用户的一个显示界面。Servlets是网络化组件,用来扩展Web服务器的功能。Servlets面向请求/响应,可以执行Web服务器的任务,此时它从某个客户机上得到请求并向该客户机发出响应,例如为电子商务目录提供一个HTML界面。

不管是Applets还是Servlets,都比较适合处理客户方的操作,例如提供图形用户界面(GUI)、实现其他与表示有关的逻辑、少量的业务逻辑操作等。如果Applets要使用Java的基本类来提供用户界面,客户方应该是一个Web浏览器。如果要Servlets以HTML来提供用户界面,客户方应该是Web服务器。在这两种情况下,组件都是直接与终端用户打交道。

企业Beans不是针对客户方而是针对服务器方的组件,实现服务器方的操作,例如执行复杂的算法、处理大规模的商业事务等。服务器方需求与客户方需求不同,它不需要丰富的GUI环境,而需要一个高可用性、具有容错能力、多用户的安全环境。应用服务器能为企业Beans提供这样的环境,也就是提供了管理企业Beans必要的运行容器。

Applets、Servlets和企业Beans之间不存在技术冲突,用户可以对这3种组件进行任意组合。例如,用户可以选择Java Beans作为开发组件来构造企业Beans的模块,同时再用Applets或者Servlets为所构造的企业Beans提供用户界面。

EJB是服务器方的组件结构标准,其作用是简化分布对象应用程序的开发过程。借助于EJB,开发人员不必设计复杂的分布对象框架,即可完成安全可靠的应用程序。

7.5.3SUN公司的J2EE

为了支持对Java组件在服务器方的运算能力,SUN公司推出了被称为J2EE(Java 2 Platform,Enterprise Edition)的独立平台。J2EE的任务是为用Java语言编写服务器方程序提供一个小型、多用户、安全和标准的企业类独立平台。用Java语言建立服务器方组件的标准是J2EE的基础,SUN公司选择了EJB。J2EE使基于组件的服务器方大型应用程序的构造过程变得简单,这一点与Windows DNA十分相像。也有人认为J2EE是一种规范,而WindowsDNA是一个产品。J2EE描述了人们在编写企业软件时必须服从的规则,我们把服从J2EE规范的软件称为J2EE产品。因为J2EE是一种规范,所以它不与单个软件开发商绑在一起。它可以支持跨平台的开发,同时也鼓励开发商之间的竞争,促使他们开发更好的产品。

J2EE是一个提供中间件服务的综合平台,功能强大、稳定,使服务器方的应用开发变得十分方便、简单。

(1)EJB

EJB是一个帮助开发人员快速开发大型企业应用的组件系统,提供了复杂的具有企业特征的中间件。开发人员可以把EJB看作为大多数企业需要的通用功能集合。用户利用EJB可以集中精力解决现实中的特殊问题,而不必在企业管理的共性问题上花费太多时间。许多EJB产品还提供了定义完整的移植途径,使用户不破坏现有企业信息系统直接跳到EJB的系统中,这有利于保护企业的遗产系统和现有资源。