1、附录一:文献资料 原文 J2EE WEB 应用架构分析 1、架构概述 J2EE 体系包括 java server pages(JSP) ,java SERVLET, enterprise bean,WEB service 等技术。这些技术的出现给电子商务时代的 WEB 应用程序的开发提供了一个非常有竞争力的选择。怎样把这些技术组合起来形成一个适应项目需要的稳定架构是项目开发过程中一个非常重要的步骤。完成这个步骤可以形成一个主要里程碑基线。形成这个基线有很多好处: 各种因数初步确定:为了形成架构基线,架构设计师要对平台(体系)中的技术进行筛选,各种利弊的权衡。往往架构设计师在这个过程中要阅读大量
2、的技术资料,听取项目组成员的建议,考虑领域专家的需求,考虑赞助商成本(包括开发成本和运行维护成本)限额。一旦架构设计经过评审,这些因数初步地就有了在整个项目过程中的对项目起多大作用的 定位。 定向技术培训:一旦架构师设计的架构得到了批准形成了基线,项目开发和运行所采用的技术基本确定下来了。众多的项目经理都会对预备项目组成员的技术功底感到担心;他们需要培训部门提供培训,但就架构师面对的技术海洋,项目经理根本就提不出明确的技术培训需求。怎不能够对体系中所有技术都进行培训吧!有了架构里程碑基线,项目经理能确定这个项目开发会采用什么技术,这是提出培训需求应该是最精确的。不过在实际项目开发中,技术培训可
3、以在基线确定之前与架构设计并发进行。 角色分工:有了一个好的架构蓝图,我们就能准确划分工作。如网 页设计,JSP 标签处理类设计, SERVLET 设计, session bean 设计,还有各种实现。这些任务在架构蓝图上都可以清晰地标出位置,使得项目组成员能很好地定位自己的任务。一个好的架构蓝图同时也能规范化任务,能很好地把任务划分为几类,在同一类中的任务的工作量和性质相同或相似。这样工作量估计起来有一个非常好的基础。 运行维护:前面说过各个任务在架构图上都有比较好的定位。任何人能借助它很快地熟悉整个项目的运行情况,错误出现时能比较快速地定位错误点。另外,有了清晰的架构图,项目版本管理也有很
4、好的版本树躯干。 扩展性:架构犹如一颗参天大树的躯干,只要躯干根系牢,树干粗,长一些旁支,加一些树叶轻而易举无疑。同样,有一个稳定的经得起考验的架构,增加一两个业务组件是非常快速和容易的。 大家都知道这些好处,一心想形成一个这样的 J2EE 应用程序架构(就像在windows 平台中的 MFC)。在这个路程中经历了两个大的阶段: 模型 1 模型 1 其实不是一个什么稳定架构,甚至谈不上形成了架构。模型 1 的基础是 JSP 文件。它从 HTTP 的请求中提取参数,调用相应的业务逻辑,处理 HTTP会话,最后生成 HTTP 文档。一系列这样的 JSP 文件形成 一个完整的模型 1 应用,当然可能
5、会有其他辅助类或文件。早期的 ASP 和 PHP 技术就属于这个情况。 总的看来,这个模型的好处是简单,但是它把业务逻辑和表现混在一块,对大应用来说,这个缺点是令人容忍不了的。 模型 2 在经过一番实践,并广泛借鉴和总结经验教训之后, J2EE 应用程序终于迎来了 MVC(模型 -视图 -控制)模式。 MVC 模式并不是 J2EE 行业人士标新立异的,所以前面我谈到广发借鉴。 MVC 的核心就是做到三层甚至多层的松散耦合。这对基于组件的,所覆盖的技术不断膨胀的 J2EE 体系来说真是福音和救星。 它在浏览器(本文对客户代理都称浏览器)和 JSP 或 SERVLET 之间插入一个控制组件。这个控
6、制组件集中了处理浏览器发过来的 HTTP 请求的分发逻辑,也就是说,它会根据 HTTP 请求的 URL,输入参数,和目前应用的内部状态,把请求分发给相应的 WEB 层的 JSP 或 SERVLET。 另外它也负责选择下一个视图(在 J2EE 中, JSP,SERVLET 会生成回给浏览器的 html 从而形成视图)。集中的控制组件也有利于安全验证,日志纪录,有时也封装请求数据给下面的 WEB tier 层。这一套逻辑的实现形成了一个像 MFC 的应用框架 。 2、候选方案 目前,实现模型 2 的框架也在不断的涌现,下面列出比较有名的框架。 2.1、 Apache Struts Struts 是
7、一个免费的开源的 WEB 层的应用框架, apache 软件基金致力于struts 的开发。 Struts 具是高可配置的性,和有一个不断增长的特性列表。一个前端控制组件,一系列动作类,动作映射,处理 XML 的实用工具类,服务器端java bean 的自动填充,支持验证的 WEB 表单,国际化支持,生成 HTML,实现表现逻辑和模版组成了 struts 的灵魂。 模型:模型以一个或几个 java bean 的形式存在。这些 bean 分为三种: Form beans(表单 Beans),它保存了 HTTP post 请求传来的数据,在 Struts 里,所有的 Form beans 都是 A
8、ctionFrom 类的子类。业务逻辑 beans,专门用来处理业务逻辑。系统状态 beans,它保存了跨越多个 HTTP 请求的单个客户的会话信息,还有系统状态。 视图:控制组件续传 HTTP 请求给实现了视图的 JSP 文件。 JSP 能访问 beans 并生成结果文档反馈到客户。 Struts 提供 JSP 标签库: Html, Bean, Logic,Template 等来达到这个目的,并有利于分开表现逻辑和程序逻辑。 2.2、 JATO JATO 应用程序框架是 iPlanet 应用程序框架的旧名。它是一个成熟的、强大的,基于 J2EE 标准的面向于开发 WEB 应用程序的应用框架。结合了显示字段、应用程序事件、组件层次和以页面为中心的开发方法、以及 MVC 和服务到工作者service-to-workers 的设计模式等概念。 JATO 可适用于中、大、超大规模的 WEB 应用。但是它也不是一个企业层的应用框架,也就是说它不会直接提供创建 EJB, WEB services 等企业层组件的方法,但用它可以构造出访问企业层组件的客户应用。 这个框架功能主要有三部分组成: iPlanet 应用框架核心; iPlanet 应用框架组件; iPlanet 应用框架扩展。 译文 Analysis of J2EE WEB application construction