Java企业级应用架构设计中的分布式结构大致可以分为单级结构、2级结构、3级结构和N级结构。充分理解和应用分布式结构可以更好的理解当代网络计算的现状,设计出更优的企业级应用程序。
长久以来,Java企业级版本(Java EE)已经成为了众多产业领域(如银行业、保险业、零售业、酒店业、旅游业以及电信业等等)进行企业商务应用开发和部署的平台选择。Java EE之所以应用如此广泛,其原因在于,Java EE可以为构建健壮、高扩展性的分布式应用系统提供标准化的平台,而这些应用所支持的范围可以涵盖从银行核心业务运作,到航空公司订票引擎之间的广大区域。不过,开发成功的Java EE应用也可能成为一项艰巨的任务,Java企业级应用架构设计在其中起着重要作用。
首先Java EE平台自身所提供的丰富选择就足可以令人生畏。那些过剩的框架、实用程序类库、集成开发环境(IDE),以及可供选择的工具让一切都更加富有挑战性。因此,选择好合适的技术对于开发基于Java EE的软件来说至关重要。而那些拥有健壮架构与设计准则的技术,会对构建易于维护、重用以及扩展的应用系统大有裨益。
我们将首先回顾一下分布式计算的进化史以及n级结构。之后我将展示Java EE平台是如何解决分布式应用开发中的难点的。同时你还会了解模型-视图-控制器(MVC)结构准则。然后我会结合MVC准则与Java EE平台,来讲解多层Java EE应用结构。
在了解了应用系统架构之后,我将把注意力集中到基于面向对象原则的Java EE应用开发上。我同时还会讲解如何使用设计模式来简化设计过程,以及如何选择最佳的实践范例。此外我还会触及Sun公司的Java BluePrints所收录的设计模式目录,其内容在Deepak Alur et al的《核心J2EE设计模式》(Prentice Hall出版社,2003年)一书中有详细的介绍。在文章的最后,我将介绍通用建模语言(UML)以及其在可视化Java EE文档设计与架构之中所扮演的的角色。
分布式计算进化史
在分布式计算中,一个应用会被划分为若干稍小的部件,并同时运行在不同的计算机上。这种计算方式又被称为“网络计算”,因为这些部件通常会通过建立在TCP/IP或者UDP协议之上的某些协议进行通讯。这些稍小的应用部件被称为“级”,每一级都可以向其他连接级独立提供一类服务。而“级”又可以被细化为若干“层”,以便降低功能的粒度。大多数Java企业级应用架构设计都应具有三个不同的层:
◆表现层负责用户接口。
◆业务层执行业务逻辑。在运行过程中,它还会与数据访问层进行交互。
◆数据访问层负责对存储在企业信息系统(EIS)中的数据进行存取等操作。
通过分析分布式计算结构的跃迁史,我们可以更好的理解当代网络计算的现状。在接下来的几节中,我将用几个恰当的例子介绍分布式结构的变迁。
单级结构
单级结构的使用可以追溯到那些使用简易终端连接巨型主机的日子。在这种结构中,用户接口、业务逻辑以及数据等所有应用构成层都被配置在同一个物理主机中。用户通过终端机或控制台与系统进行交互,而这种方式只具有非常有限的文本处理能力(参见图1)
图1. 单层结构(图中文字:Console——“控制台”;Dumb Terminal——“简易终端”;Mainframe——主机)
2级结构
在1980年代早期,个人电脑(PC)变得非常流行,它比大型主机便宜,处理能力又比简易终端之类的设备强。PC的出现为真正的分布式(客户端——服务器,C/S)计算铺平了道路。作为客户端的PC现在可以独立运行客户接口(UI)程序,同时它还支持图形化客户接口(GUI),允许用户输入数据,并与服务器主机进行交互,而服务器主机现在只负责业务逻辑和数据的部分。当用户在客户端完成数据录入后,GUI程序可以选择性的进行数据有效性校验,之后将数据发送给服务器进行业务逻辑处理。Oracle基于表单的应用就是2级结构的优秀范例。表单的GUI存储在客户端PC中,而业务逻辑(包括代码以及存储过程)以及数据仍然保留在Oracle的数据库服务器中。
此后又出现了另外一种2级结构,在这种结构中,不只是用户接口(UI),连业务逻辑也被放到了客户端一级。这种应用的典型运行方式是直接连接数据库服务器进行各种数据库查询。这种客户端被称作“胖客户端”,因为这种结构将可执行代码的相当大一部分都放到了客户端一级(参见图2)。
图2. 2级结构(Business Logic Layer——业务逻辑层;Optional——可选;User Interface Layer——用户接口层;Thick Client——胖客户端;Data Access Layer——数据访问层; Mainframe Server——服务器主机)
3级结构
尽管2级“胖客户端”应用的开发很简单,但是任何用户接口或者业务逻辑的改变所导致的软件升级都需要在所有客户端上进行。幸运的是,在上世纪90年代中期,硬件成本已经变得越来越低,而CPU的运算能力却得到了巨大提升。与此同时,互联网的发展非常迅速,互联网应用的发展趋势已经逐渐显现,两者的结合最终导致了3级结构的产生。
在3级结构模型中,PC客户端只需要安装“瘦客户端”软件——比如浏览器——来显示服务器提供的展示内容,服务器负责准备展示内容、业务逻辑以及数据访问逻辑,应用程序的数据来自企业信息系统,例如关系数据库。在这样的系统中,业务逻辑可以通过远程访问,因此通过Java控制台应用程序支持一个独立的客户端就成为课程。业务层主要通过数据访问层与信息系统实现交互。因为整个应用都位于服务器之上,因此这样的服务器也被称作“应用程序服务器”或者“中间件”(参见图3)。
图3. 3级结构(图中文字:Presentation Layer——表现层;Business Logic Layer——业务逻辑层;Data Access Layer——数据访问层;Thin Client——瘦客户端;Application Server——应用程序服务器;Enterprise Data——企业数据;Database Server——数据库服务器)
N级结构
随着互联网带宽的不断提高,全世界的各大企业都相继启动了他们的网络服务。这种变化导致应用服务器无法继续承担表现层的巨大负荷。这项任务现在已经由专门负责产生展示内容的专门网页服务器所承担。展示内容之后被传送到客户端级的浏览器上,浏览器会负责将用户接口表现出来。N级结构中的应用服务器负责提供可远程访问的业务逻辑组件,而表现层网页服务器则使用本网协议通过网络访问这些组件。图4展示了n级结构。
以上是Java企业级应用架构设计中的分布式结构,在不同的需求和应用场景中,我们会用到不同的分布式结构,设计不同的Java企业级应用架构。