企业级应用是指那些为商业组织、大型企业而创建并部署的解决方案及应用。这些大型企业级应用的结构复杂,涉及的外部资源众多、事务密集、数据量大、用户数多,有较强的安全性考虑。
当代的企业级应用决不可能是一个个的独立系统。在企业中,一般都会部署多个彼此连接的、相互通过不同集成层次进行交互的企业级应用,同时这些应用又都有可能与其它企业的相关应用连接,从而构成一个结构复杂的、跨越intranet和internet的分布式企业应用群集。其中,连接企业内部各种应用的技术称为eai(enterprise application integration, 企业应用集成),而连接企业间各种应用的技术称为b2bi(business-to-business integration, 企业间集成),采用eai、b2bi技术及早先的n层体系架构就是当今企业级应用的最大特征。
此外,作为企业级应用,其不但要有强大的功能,还要能够满足未来业务需求的变化,易于升级和维护。
企业级应用架构
下面我们使用一个图示来简单地解析一下企业级应用的架构,见图1。

这个体系架构的主体是mvc架构。mvc是model/view/control的缩写。model/view/control是软件设计的典型结构。在这种设计结构下,一个应用被分为三个部分:model、view和controller,每个部分负责不同的功能。model是指对业务数据/信息的处理模块,包括对业务数据的存取、加工、综合等;view是指用户界面,也就是面向用户的数据表示;controller则负责view和model之间的流程控制,也就是完成两个方向的动作:1.将用户界面(view)的操作映射到具体的model,以完成具体的业务逻辑;2. 将通过model处理完的业务数据及时反应到用户界面(view)上。
mvc架构使得应用程序的结构更加清晰,通过将代码按照层次划分为业务逻辑/数据、用户界面和应用流程控制这三个层次,增强代码稳定性。我们知道,对于model、view、controller这三部分功能来讲,view的实现一般是由界面设计人员和界面程序员来完成,model则是由业务逻辑程序员来完成,controller则一般由负责整体控制的程序员来完成。controller部分的代码比较稳定,一般会实现一个通用的架构;而model则跟随商务流程的变化而变化;view的更改则是随着用户需求的更改而更改。这种模块功能的划分有利于在代码修改过程中进行模块的隔离,而不需要把具有不同功能的代码混杂在一起造成混乱。对于项目开发而言,有利于在项目小组内按照小组成员各自的擅长进行分工,有利于三个部分并行开发、加快项目进度。
企业级资源连接
对于model部分,也就是业务逻辑的处理部分,一般总是对商务数据进行处理、加工、综合等。对于企业级应用而言,商务数据有两种来源,一种是数据库,另一种则是其它的企业级应用系统。
对于数据库而言,这应当是大家熟悉的领域。我们通过使用数据库驱动程序,利用sql来查询、操纵数据库。而对于其它的企业级应用而言,一般这些应用都会提供api,通过这些api,其它的应用就能够存取访问其中的数据,甚至是触发这些企业级应用中的一些业余流程。
企业级平台的特征
企业级应用需要使用优秀的企业级应用体系结构,而优秀的企业级应用体系结构通常来自于优秀的解决方案。应用程序设计开始就要考虑其体系结构的合理性、灵活性、健壮性,从而既可满足企业级应用的复杂需求,也能为今后系统的调整和升级留有余地。体系结构影响了整个应用的生命周期,实际上能够延长整个应用的生命周期,同时增强了用户在多变的商业社会中的适应性,减少了系统维护的开销和难度,从而给用户带来最大的利益。
一个理想的企业级应用系统平台应该具有如下特征:
◆ 部署、开发和维护的有效性;
◆ 系统运行的健壮性和可靠性;
◆ 具备失败恢复的能力;
◆ 能够处理海量的数据;
◆ 能够同时支持数百个用户;
◆ 具备很高的安全性;
◆ 数据的高可用性;
◆ 可以迅速地开发和部署新的应用程序;
◆ 简化组件重用;
◆ 直观的编程模型;
◆ 支持行业标准和通用编程接口;
◆ 适用与小、中、大各种规模的应用系统;
◆ 系统费用随系统规模的增长而线性增长;
◆ 不断进行技术升级,以满足不断涌现的需求。
使用j2ee架构企业级应用
为了满足架构企业级应用的需求,java的创始人sun公司在早期的j2se(java 2 platform standard edition)基础上,针对企业级应用的各种需求,主导并创造了j2ee(java 2 platform enterprise edition)。
那么到底什么是j2ee呢?从整体上讲,j2ee是使用java技术开发企业级应用的一种事实上的工业标准(sun公司出于其自身利益的考虑,至今没有将java及其相关技术纳入标准化组织的体系),它是java技术不断适应和促进企业级应用过程中的产物。目前,java平台有三个版本:适用于小型设备和智能卡的j2me(java 2 platform micro edition)、适用于桌面系统的j2se和适用于企业级应用的j2ee。sun推出j2ee的目的是为了克服传统client/server模式的弊病,迎合browser/server架构的潮流,为应用java技术开发服务器端应用提供一个平台独立的、可移植的、多用户的、安全的和基于标准的企业级平台,从而简化企业应用的开发、管理和部署。j2ee是一个标准,而不是一个现成的产品。各个平台开发商按照j2ee规范分别开发了不同的j2ee应用服务器,j2ee应用服务器是j2ee企业级应用的部署平台。由于它们都遵循了j2ee规范,因此,使用j2ee技术开发的企业级应用可以部署在各种j2ee应用服务器上。
为了推广并规范化使用j2ee架构企业级应用的体系架构,sun同时给出了一个建议性的j2ee应用设计模型:j2ee blueprints。j2ee blueprints提供了实施j2ee企业级应用的体系架构、设计模式和相关的代码,通过应用j2ee blueprints所描述的体系模型,能够部分简化架构企业级应用这项复杂的工作。j2ee blueprints是开发人员设计和优化j2ee组件的基本原则,同时为围绕开发工作进行职能分工给出了指导性策略,以帮助应用开发设计人员合理地分配技术资源。
下面我们参照j2ee blueprints,结合最新版的j2ee规范(j2ee 1.4),从整体上阐述如何使用j2ee架构企业级应用。

图2给出了使用j2ee架构企业级应用的体系架构。j2ee将组成一个完整企业级应用的不同部分纳入不同的容器(container),每个容器中都包含若干组件(这些组件是需要部署在相应容器中的),同时各种组件都能使用各种j2ee service/api。j2ee容器包括:
◆ web容器 服务器端容器,包括两种组件jsp和servlet,jsp和servlet都是web服务器的功能扩展,接受web请求,返回动态的web页面。web容器中的组件可使用ejb容器中的组件完成复杂的商务逻辑。
◆ ejb容器 服务器端容器,包含的组件为ejb(enterprise javabeans),它是j2ee的核心之一,主要用于服务器端的商业逻辑的实现。ejb规范定义了一个开发和部署分布式商业逻辑的框架,以简化企业级应用的开发,使其较容易地具备可伸缩性、可移植性、分布式事务处理、多用户和安全性等。
◆ applet容器 客户端容器,包含的组件为applet。applet是嵌在浏览器中的一种轻量级客户端,一般而言,仅当使用web页面无法充分地表现数据或应用界面的时候,才使用它。applet是一种替代web页面的手段,我们仅能够使用j2se开发applet,applet无法使用j2ee的各种service和api,这是为了安全性的考虑。
◆ application client容器 客户端容器,包含的组件为application client。application client相对applet而言是一种较重量级的客户端,它能够使用j2ee的大多数service和api。
通过这四个容器,j2ee能够灵活地实现前面描述的企业级应用的架构。
在view部分,j2ee提供了三种手段:web容器中的jsp(或servlet)、applet和application client,分别能够实现面向浏览器的数据表现和面向桌面应用的数据表现。web容器中的servlet是实现controller部分业务流程控制的主要手段;而ejb则主要针对model部分的业务逻辑实现。至于与各种企业资源和企业级应用相连接,则是依靠j2ee的各种服务和api。
在j2ee的各种服务和api中,jdbc和jca用于企业资源(各种企业信息系统和数据库等)的连接,jax-rpc、jaxr和saaj则是实现web services和web services连接的基本支持。
j2ee的各种组件
我们就j2ee的各种组件、服务和api,进行更加详细的阐述,看看在开发不同类型的企业级应用时,根据各自需求和目标的不同,应当如何灵活使用并组合不同的组件和服务。
? servlet
servlet是java平台上的cgi技术。servlet在服务器端运行,动态地生成web页面。与传统的cgi和许多其它类似cgi的技术相比,java servlet具有更高的效率并更容易使用。对于servlet,重复的请求不会导致同一程序的多次转载,它是依靠线程的方式来支持并发访问的。
? jsp
jsp(java server page)是一种实现普通静态html和动态页面输出混合编码的技术。从这一点来看,非常类似microsoft asp、php等技术。借助形式上的内容和外观表现的分离,web页面制作的任务可以比较方便地划分给
闽公网安备 35060202000074号