Java_EE_快速Web开发架构_总体设计

Java EE 快速Web开发架构总体设计

Java EE 快速 Web 开发架构总体设计

基于前面的软件复用思想和系统架构的设计原则,以及当前 Java EE 架构分层实现思想,结合各层和当前 Java 各种框架的特点,设计了如图 3-1 所示的 Java EE快速 Web 开发架构。

Java_EE_快速Web开发架构_总体设计

一、架构的概要说明

总体上,此开发架构主要是采用纯 Java EE 架构,对非 Java EE 架构的,如 Tuxedo服务,保留一定的调用接口。系统的核心为: Struts + Spring/S essionBean + Hibernate

1、数据访问层采用 Hibernate 实现增删改和一般的查询操作,JDBC 实现对性能有要求的操作。

2、业务逻辑层采用 Spring 或者 SessionBean 实现,两种技术并存,在具体应用时,根据需要选择。当需要较多的对外接口的时候,采用 EJB 会更便于

包装成对外提供的服务,而 Spring 技术更便于开发和调试。业务逻辑层内部还可以根据实际需要再细分为:代理层、服务层和逻辑层。

(1)代理层提供给上层调用,屏蔽了内部技术差异的细节;

(2)业务逻辑根据需要适当的封装成单独的 JavaBean,以提高业务逻辑的重用性;

(3)服务层上实现事务的控制和业务逻辑的调用,简单且不需要重用的逻辑可以直接在服务层实现。

3、控制层采用 Struts 框架。展示层用户请求都通过 Struts 的 ActionS ervlet 和Action。各种权限、异常、字符集、国际化也都在这里控制。

4、展示层采用 JSP,充分利用 TagLib 技术将 Java 代码和页面代码分离,界面的校验采用普通的 Java Script,涉及后台的校验时采用 Ajax 技术。

5、系统的对外接口上,提供了多种可选择的技术,可根据不同的需要进行选择。对性能要求不高的接口,建议用比较通用的 WebService;在同构系统中,特别是企业内的核心系统,建议采用 EJB 实现,性能较好;对于跨业务的性能要求较高的接口,Tuxedo 或者 Socket 比较合适。

二、架构的主要流程

图 3-2 主要展示了架构的主要流程。

Java_EE_快速Web开发架构_总体设计

当用户发出请求后,请求经过 Struts 的 ActionServlet 根据配置文件找到相应的Action,同时创建一个 ActionForm 对象保存用户请求的相关数据,A ction 创建代理层对象,代理层对象找到相应的业务处理类,进行相关业务的处理,业务处理程序通过 DAO 层操纵和访问数据库,访问数据库主要采取了 JDB C 和 Hibernate 两种方式,取到的数据逐层返回给相应的页面呈现给用户。

架构应用范畴

这是一个 Java EE 快速 Web 开发架构,适合于几乎所有的 B/S 系统开发,需要有大量的交互界面的系统应首选该架构,如参数管理、系统管理和监控、C RM 等面向客户的服务系统;如营业和收费、报表和分析等等。

架构相关技术

一、 MVC 模式和 Struts 技术

MVC 是 Model-View-Controller 的缩写,即模型-视图-控制器,它是目前非常流行的软件设计模式。MVC 强制性的把应用程序的输入、处理和输出分开,它把应用分成三个核心模块,分担不同的任务,图 3-3 展示了它们之间的关系。

Java_EE_快速Web开发架构_总体设计

MVC 的处理过程:首先控制器接收用户的请求,并决定调用哪个模型来进行处理;然后模型根据用户请求进行相应的业务逻辑处理,并返回数据;最后控制器调用相应的视图来格式化模型返回的数据,并通过视图呈现给用户。MVC 实现了多个视图共享一个模型,它的模型是自包含的,与控制器和视图保持相对独立,所以可以方便的改变应用程序的数据层和业务规则,而控制器则提高了应用程序的灵活性和可配置性。基于 MVC 模式,Sun 公司先后制定了两种规范:JSP Model1 和 JSP Model2。

Struts 框架源于 Apache 软件基金会(Apache software Foundation)的Jakarta 项目,是在 JSP Model2基础上实现的一个开源的表示层框架,由一组相互协作的类、Serlvet以及 JSP Taglib 组成。在 Struts 框架中,模型由实现业务逻辑的 JavaBean 或 EJB组件构成,控制器由 ActionServlet 和 Actio n 来实现,视图由 JSP 文件构成,图 3-4展示了 Struts 实现的 MVC 框架。

Java_EE_快速Web开发架构_总体设计

二、 EJB 组件技术

Enterprise JavaBeans(EJB)是 Java 企业级开发的重要组成部分,EJB 从技术上而言不是一种“产品”,而是一个技术规范。EJB 是可部署的服务器端组件,是一种结构良好的组件体系,它大大的简化了企业级分布式组件应用系统的开发。通过 EJB 分布式组件框架,可以开发出可扩展的、健壮的应用系统。E JB 规范定义了三种类型的企业 Bean:会话 Bean、实体 Bean、消息驱动 Bean。会话 Bean 代表的是业务过程。对于客户机,会话 Bean 是一种非持久性的对象,它实现某些在服务器上运行的业务逻辑。会话对象是运行在服务器上的客户机程序的逻辑扩展。客户通过调用会话 Bean 的方法来访问远程服务。会话 Bean 为它的客户完成特定的工作,并通过在服务器端运行业务逻辑,向客户屏蔽了实现的复杂性。会话 Bean 还可细分为无状态会话 Bean(Stateless Session Be an)和有状态会话 Bean(Stateful SessionBean)两种类型。

三、 Spring 框架技术

Spring 是一个开源框架,它由 Rod Johnson 创建,是为了解决企业应用开发的复杂性而创建的。简单地说,Spring 是一个轻量级的 IoC(控制反转)和AOP(面向切面的编程)容器框架。它最大的贡献是在 Web 应用框架中引入了控

制反转的思想(Inversion of Control,Ioc),它的架构核心是基于使用 Jav aBean 属性的 IoC 容器,提供了管理业务对象的一致方法并且鼓励注入对接口编程而不是对类编程的良好习惯;Spring 还提供了数据持久层的解决方案,通过唯一的数据访问抽象,可以集成简单和有效率的 JDBC 框架,也可以集成 Hi bemate 和其他 0RM(对象关系映射)解决方案;Spring 还提供了唯一的事务管理抽象,它能够在各种底层事务管理技术(例如 JTA 或者 JDBC)基础上,提供一个一致的编程模型。Spring 具有先进的思想,简洁而优雅的结构和强大的功能,也使其成为 Web 应用开发关注的焦点之一。

Spring 由 7 个定义良好的模块组成,组成 Spring 框架的每个模块都可以单独存在,或者与其他一个或多个模块联合实现。Spring 模块构建在核心容器之上,核心容器定义了创建、配置和管理 bean 的方式,图 3-5 为 Spring 的主要结构。

Java_EE_快速Web开发架构_总体设计

四 ORM 和 Hibernate 技术

对象关系映射(Object Relational Mapping,简称 ORM)是一种为了解决面向对象与关系数据库存在的互不匹配现象的技术。简单的说,ORM 是通过使用描述对象和数据库之间映射的元数据,将 java 程序中的对象自动持久化到关系数据库中。本质上就是将数据从一种形式转换到另外一种形式。Hibernate 就是一个基于 Java 的开放源代码的持久化中间件,越来越多的 Java开发人员把 H ibernate 作为企业应用和关系数据库之间的中间件,以节省和对象持久化有关的JDBC 编程工作量。2005 年,Hibernate 作为优秀的类库和组件,荣获了第1 5 届 Jolt 大奖,Hibernate 之所以流行,归功于它的以下优势:

(1)它是开放源代码的,允许开发人员在需要的时候研究源代码,改写源代码,定制客户化功能,具有可扩展性。

(2)具有详细的参考文档,使用方便,容易上手。

(3)对 JDBC 做了轻量级封装,必要的话,用户还可以绕过 Hibernate,直接访问 JDBC API。

(4)Hibernate 既适用于独立的 Java 程序,也适用于 Java Web 应用,而且还可以在 Java EE 架构中取代 CMP(容器管理持久化),完成对象持久化的重任。

(5)Hibernate 可以和多种 Web 服务器、应用服务器良好集成,并且支持几乎所有流行的数据库服务器。

在使用 Hibernate 作为数据持久方案的系统中,应用程序直接使用持久对象(Persistent Object)来操作数据库,而具体实现的细节则被 Hibernate 隐藏起来,可以通过 Hibernate.properties 和 XML 映像文件等配置文件处理具体的数据库操作。图3-6 主要展示了 Hibernate 的原理。

Java_EE_快速Web开发架构_总体设计

五、 Ajax 技术

AJAX(即 Asynchronous JavaScript and XML 的简写),是一种新的 Web 应用程序开发的手段,它采用客户端脚本与 Web 服务器交换数据。不刷新整个页面,就可以动态地更新 Web 页面。使用 Ajax,可以创建更加丰富、更加动态的 Web 应用程序用户界面,实时性与可用性甚至能够接近本机桌面应用程序。这使得 Web 应用的交互性得到了前所未有的提高,大大增强了应用的实用性和实时性。实际上 Ajax 并不是一个新的技术,而是几项技术按一定的方式组合在一起在相互协作中发挥各自的作用,它包括:

(1)使用 XHTML 和 CSS 标准化呈现;

(2)使用 DOM 实现动态显示和交互;

(3)使用 XML 和 XSLT 进行数据交换与处理;

(4)使用 XMLHttpRequest 进行异步数据读取;

(5)最后用 JavaScript 绑定和处理所有数据。

虽然 Ajax的技术有上面的 7 项,其实 Ajax核心只有 JavaScript、XMLH ttpRequest和 DOM,如果所用数据格式为 XML 的话,还可以再加上 XML 这一项(Ajax 从服务器端返回的数据可以是 XML 格式,也可以是文本等其他格式)。在 Ajax 之前,Web 应用采用同步的交互,这种情况下,用户发出的请求将直接

发给 Web 服务器,Web 服务器再进行处理,只有用户收到了 Web 服务器的响应数据才对整个页面进行刷新显示,而用户在收到数据之前的这段时间只能是等待,这样用户的动作总是与服务器的“思考时间”同步。采用超文本作为 Web 的传输和展示,是一直普遍使用的方式,但是事实上任何系统设计都不希望用户总是经历“请求—处理—等待—再请求—处理—再等待”这样的过程。与传统的方式不同,Ajax 采用了异步的交互过程。Ajax 在用户和 Web 服务器层之间加入了 Ajax 引擎,Ajax 引擎通常采用 JavaScript 编写,通常隐藏在一个隐藏的框架中,它负责用户与服务器之间的交互。Ajax 引擎允许用户与应用之间的交互异步进行。Ajax 采用与服务器异步通信的方式,使用户从请求/响应的循环等待中解脱出来。借助于 Ajax,可以在用户单击按钮时,使用 JavaScript 和DHTML 立即更新 UI,并向服务器发出异步请求,以执行更新或查询数据库。当请求返回时,就可以使用 JavaScript 和 CSS 来相应地更新 UI,而不是刷新整个页面。最重要的是,用户甚至不知道浏览器正在与服务器通信,Web 站点看起来是即时响应的。

相关文档