内容简介
前 言 开发大型企业应用程序涉及到一些过程和技术,包括创建真正可扩展、可维护及可伸缩的面向对象的体系结构。为了使应用程序既能够满足提出的业务目标,又能够连续使用数年而不需要进行重大的重新设计,必须保证应用程序是一个开放的、灵活的、标准友好的体系结构。对问题域和客户需求进行详细的阐述只是确保所创建的体系结构能够满足业务当前和将来需要的一部分工作。问题域的定义也必须成为指导设计的方法和开发过程。我们应该由设计和开发产品追溯到最初的要求,以便保证声明的要求与实际交付结果之间的一致性。这种要求和其他与项目相关的产品之间的可追溯性确保了系统的设计视图与其用例视图的一致。 创建系统的用例视图是一个十分仔细的过程,信息体系结构在这个过程中也起了重要作用。将用例视图转换成相应的多层体系结构的设计视图需要进行渐近性、迭代式的域建模过程,业务层处理建模,实现表示语义—— 这些都将包括在设计的上下文中,该上下文将允许在应用程序的所有层中进行最大数量的重用。当在这个纲要中加入其他条目,如需要理解基本的组件技术并且需要按照管理项目生命周期的开发方法学和过程进行操作时,可以看出,创建一个用于验证大型解决方案的原型应用程序需要学习极多的内容。虽然我们刚才讨论的解决所有不同方面的问题所需的处理和技术在许多书中都有详细的介绍,但是,让所有的J2EE狂热者在能实际创建端到端的解决方案之前通读每本都是几百页的书是不实际的。连续学习软件开发的每一原则的效率也不高,因为这会占用更多时间,而且我们无法将暂时不用的信息保留很长时间。本书使用“学以致用”的方法,为大部分基于Web应用程序的基本体系结构的创建提供了蓝图。这种方法为J2EE狂热者提供了机会,使他们可以很快地使用所学的概念解决现实世界的问题。它还为有志成为体系结构设计师的开发人员和学生提供了下列内容: ● 用例驱动型建模和开发 ● 用例细节中信息体系结构的角色 ● 阐明应用程序中的安全策略 ● 理解表示框架在MVC(模型-视图-控制器)体系结构的上下文中的需要 ● 使用Struts框架 ● 确定使用一致的方式启用Struts的实现模式 ● 运用类图表示设计视图的静态方面,用序列图表示其动态方面 ● 使用最好的实践设计模式为表示层组件之间,业务层组件之间以及中间层组件之间(在表示层和业务层之间)的交互关系建模 ● 使用J2EE组件技术实现设计视图 ● 使用J2EE组件技术实现Web服务 0.1 本书读者对象 本书的第Ⅰ部分对体系结构设计师,开发人员,项目经理,质量评估小组,信息体系结构设计师以及任何其他要了解需求分析过程的人很有益处。本书其余部分适合想在J2EE平台上构建企业级业务应用程序的初级体系结构设计师、团队开发人员和学生使用。本书第Ⅱ部分要求读者熟悉面向对象的原理及概念,并且最起码要了解UML(统一建模语言)。本书假定读者已熟悉基本的J2EE概念和开发,以及J2EE组件的开发。 为项目创建参考体系结构或者原型编程模型的技术团队。将从示例应用程序中得到数个通过无数次实践检验的J2EE设计模式,以及它们的交互和依赖。示例应用程序为基于项目特定的要求来开发编程模型提供了很好的起点。那些需要了解表示层架构体系结构及其使用原理的技术团队将从对Struts的讨论中获益。 本书重点强调体系结构和设计而不是强调编程方面等内容,因为这不是一本囊括所有关于J2EE平台或者Struts框架的书。本书对设计模式的介绍也并非详尽,因为设计模式的相关主题较多,也有很多书籍介绍设计模式,同时还有很多专门讨论设计模式的网站。本书中实现的 Web服务基于 BEA WebLogic Workshop,它提供基于 JAX-RPC API的抽象, 诸如此类的使用 JAX-RPC API进行的编程将不在本书中作介绍。 0.2 如何使用本书 由于本书的编写是连贯性的,所以最好从头至尾阅读本书。本书第1章首先开发了示例应用程序 GreaterCause的用例,然后在第2章中讨论了信息体系结构对开发用例的影响。第3章是可选读的,但是我们鼓励读者浏览一下应用程序体系结构部分,因为它为学习本书其余部分打下了基础。如果您已经熟悉了Struts和相关的体系结构,那么可以跳过第4章。第5~7章为应用程序的每一层建立组件,同时实现了相关的用例。第8章使用第6,7章开发的组件实现了 Web服务。请注意第8章的Web服务的实现是基于BEA WebLogic Workshop的。第9章提供了安装和练习示例应用程序的信息。如果您选择WebLogic作为应用程序服务器,那么我们在第9章还将循序渐进地指导如何安装WebLogic Server 7.0以及部署和实践示例应用程序。 0.3 相关Web站点和下载 附带二进制库源文件、文档和勘误表链接的示例应用程序可从上获得。请按照Osborne Media提供的说明找到本书的具体链接。关于本书源文件的发布请参考源文件下载包。要获得下载包的全部信息,请参考第9章。 0.4 本书主要内容 第Ⅰ部分(第1~3章)—— 需求和体系结构定义 第1章—— “使用用例进行需求分析”以系统用例视图的形式解释了定义问题域的过程。示例应用程序被分解成独立的功能单元,而每一个功能单元又被描述成独立的用例。每个用例使用标准模板进行解释,这些模板从与用例交互的外部实体的角度解释系统行为。用例视图对于业务域专家、应用程序设计师和开发人员对系统行为有一个基本了解是十分重要的,而这里不指定如何实现该行为。示例应用程序的用例视图的开发是理解其他章节的前提。 第2章—— “用例细节的信息体系结构”说明了信息体系结构对概括定义用例的影响。在本章中,我们将通过更加明确地解释系统与用户的交互以及相关联的交互语义,详细描述示例应用程序的用例。信息体系结构对组织,标注,导航,索引和搜索内容的模式设计是至关重要的。这些方面在创建系统UI的原型视图时会被汇集到一个情节板中。使用站点流程图说明了应用程序的导航语义,它明确地表示了与用户动作有关的页面转换,这部分信息将在配置Struts架构时用到。 第3章—— “应用程序的体系结构、安全性和缓存”介绍了应用程序体系结构的重要方面,因为这些适用于J2EE平台(但是示例应用程序的实际体系结构是使用用例驱动型方法一步一步建立起来的)。本章讨论了安全性,在突出技术和规范的上下文中作了高度概括,这可以帮助读者确定他们独特的安全基础构造的需求,最终选择最好的解决方案。本章同时介绍了基于Project Liberty体系结构的联合网络身份。本章结束部分讨论了缓存,解释了常见的缓存解决方法并说明了基本的缓存体系结构。 第Ⅱ部分(第4~9章)—— 设计和构造 第4章—— “基于Struts的应用程序体系结构”讨论了对基于MVC(模型-视图-控制器)体系结构的表示层框架的益处及其设计考虑。本章还讨论这种框架在Struts 上下文中的重要方面。我们将从Struts的不同方面研究Struts体系结构,其实现和配置语义及基本使用方法,以便读者快速熟悉Struts。书中的内容提供了读者关于Struts的基本知识,使读者能够具有必要的背景知识来衡量其在问题域中的可应用性。本章提供的内容足够让读者理解第5章中的用例。 第5章—— “表示层的设计与实现”主要讨论了示例应用程序中表示层功能的用例实现。重点就是在使用最好的J2EE实践设计模型实现客户端语义时,创建了系统的静态和动态模型。本章也确定了Struts的实现模式,提供了解决复杂用户交互的可重用解决方案。我们可以从这些模式派生出模板,帮助开发小组建立一致的设计词汇表,以及跨所有用例的实现,从而提高了代码的可读性和可维护性。今后将以这些模式为起点继续开发。 第6章—— “域模型的设计与实现”重点介绍了创建域模型和永久保留域对象的相应数据库模式。在本章中,我们将要标识域实体及其关系。我们使用J2EE容器服务对域实体及其关系进行访问和保存。本章同时介绍了容器管理持久性的实体bean的容器管理域和容器管理关系的配置问题。本章实现的域模型构成了第7章中实现业务层组件的基础。 第7章—— “业务层的设计与实现”主要介绍示例应用程序的业务层功能的用例实现。本章讨论并实现了一些最好的业务层设计模式。本章的重点是在问题域的上下文中决定适当的设计模式,以及这些模式的应用程序用来解决业务层的设计和开发时遇到的常见问题。除此以外,本章还介绍了有状态和无状态的会话bean的配置以及与Enterprise JavaBean有关的事务语义。 第8章—— “使用Web 服务进行应用程序集成”介绍了Web服务技术及其相关的标准。其中提到了WSDL(Web服务描述语言)和SOAP(简单对象访问协议)规范的一些重点,以便读者理解WSDL结构和相应的SOAP消息结构之间的关系。本章所学的概念将在使用BEA WebLogic Workshop的示例应用程序的上下文中创建Web服务时使用。 第9章—— “应用程序的装配与部署”主要介绍如何安装和配置WebLogic Platform 7.0以及如何部署GreaterCause示例应用程序。