八个步骤开发完整地J2EE解决方案设计设计_第1页
八个步骤开发完整地J2EE解决方案设计设计_第2页
八个步骤开发完整地J2EE解决方案设计设计_第3页
八个步骤开发完整地J2EE解决方案设计设计_第4页
八个步骤开发完整地J2EE解决方案设计设计_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实用标准文案八个步骤开发完整的J2EE解决方案J2EE平台由四个关键的部分定义:规范,实现参考, 兼容性测试例和蓝图计划(BluePrint )。蓝图描述分布式组件架构的最佳实践和设计指导方针。本文介绍了基于 Rational统一开发过程(Rational Unified Process )和设计图 应用实例的八个步骤的J2EE开发。通过阅读本文,你将更好地懂得许多重要的 J2EE架构方面的主题,并能够将这些知识应用于扩展和修改这个简单的实例以 解决你特定的逻辑问题(September 28 ,2001)在商业世界里, 我们使用J2EE解决商业问题来开发商业软件或给别的商业 项目提供约定服务。

2、 如果一个公司想利用多层架构开发一个电子商务站点,整 个开发生命周期通常包括管理员,架构师,设计师,程序员,测试者,和数据库专家。为了使各个不同的部分能更有效的协同工作, 他们通常需要遵循一定的软件 开发流程。 经典的开发流程包括瀑布模型, 快速原型开发(RAD )和极限编 程(XP)。在本文中我们将聚焦于统一开发过程(RUP)。RUP提供一种经 过检验的方法来分配任务和责任给不同的角色。 其目标是保证我们生产出可预 期,可预算,符合我们需求的高质量的软件。我之所以喜欢在J2EE的开发过程中使用RUP出于以下三个原因:首先,RUP是以架构为中心的;它在为大规模开发提交资源之前开发出一个可执行的

3、架构原型。其次,RUP是基于迭代并基于架构的。其架构通常包括框架和基础结构,可以反复地加入新的组件来定制的扩充系统的功能,而这些都不会影 响到系统的其它部分。最后RUP使用行业标准语言一UML来为系统架构和组 件建模。RUP有四个不同的开发阶段: 初始阶段,细化阶段,构造阶段,和 交付阶段。本文从技术的观点出发, 着重强调架构的思想, 涵盖了 J2EE开发 所涉及到的八个基本的步骤。1需求分析需求分析描述了系统应该做什么, 不应该做什么, 在此基础上 开发者和客户可以达成共识。 你可以将功能性的需求如业务概念, 领域术语, 用例和用户界面(UI)形成文档。 非功能性的需求, 例如性能,事务等可

4、以 在辅助性的需求文档中指出。 你可以在纸上或者以HTML的形式创建高水准的 用户界面, 这取决于你参与项目的深度。图1表示一个典型的电子商务系统中的两个示例性的用例图。viewOrder用例告诉我们用户通过 Web界面登录系统, 查看订单列表,点击一个链接查 看购物订单的详细内容。addLi neltems用例则告诉我们用户浏览商品目录, 选 择自己感兴趣的商品, 将它们添加到购物清单中。2面向对象的分析分析员产生如下问题域模型:类,对象和交互。你的分析应该独立于任何技术或实现细节,包含概念上的模型。对象分析理解问题并获得问题域的相关知识。由于业务过程的变化比信息技术慢得多,你得确保你的域模

5、型不涉及技术细节。上述两个步骤一需求分析和面向对象分析一不是J2EE规范;它们在许多面向对象方法论中很常见。图2更为详细地显示了一个宠物商店应用实例的对象 分析模型。它图解了我们可以从需求分析用例图中所能得到的一些主要的概念。我们将这些概念以对象和他们之间的关系将之模型化。Figure 2.更高层分析模型:宠物店领域需求分析和对象分析的结果是J2EE架构开发的切入点。为了开发一个架构, 你应当选择纵向联合部分一通常是一个主要部分,例如订单域对象模型一作为对象设计, 实现,测试和部署(vertical piece , 一个RUP概念,是系统的 一部分。起始点是用例图的一个子集,例如图1所示,和图

6、3所示的域分析模型。Vertical piece的实施结果是一个功能齐全的小的系统,它包括所有层,例如UI层的JSP,中间业务层对象如EJB,还有数据库)。你可以将原型系统中的经验应用于域对象,让它作为对象设计阶段的设计指导方针。Figure 3.详细对象分析模型:购物单3架构规格说明经过了以上两步,业务域中的问题和需求应该很清晰了。现在我们将精力转向技术策略和架构。架构是一个总体设计,它包括系统中一起 定义的所有部分:结构,接口和通信机制。 我们可以更进一步将架构分为企业级架构和应用级架构。企业级系统架构:企业型架构覆盖了硬件,软件,网络技术,开发,测试,产品环境等等。 这是企业的长远投资。

7、 在开发之前,你的评估一下现有 的软硬件设施,如果它们不能很好地支持J2EE可能还得增加一些新的组件或者 升级现有的系统。你得彻底地对调查硬件环境,包括电脑,路由器,交换机和网络的拓扑结构,它们都有可能对系统的性能和可靠性带来影响。图4显示了一个可能存在的多层网络拓扑结构。Figure 4.企业级架构:网络拓扑结构图4所示的多层企业级架构有如下主要的组成部分:*客户端的Web浏览器,它有可能位于客户端所在组织的 防火墙的后面?* HTTP服务器是面向公众的服务器端?它通常位于子网之中?* Web容器,包含表示层,可能还有业务逻辑组件?*应用服务器,包含业务逻辑组件?*关系数据库管理系统(RDB

8、MS)和数据库,包含数据和数据逻辑?你所用的系统架构取决于你对于 安全,性能,可靠性的要求,当然还得考虑组 织的经济状况.对于最低端的应用,你可以合理地在仓库里使用二手电脑,用电 话线连接网上有许多开源的操作系统,Web服务器,应用服务器,数据库管理 系统可用那么这个系统你可能只需要付出几百美元和熬几个通宵而已 对于高端客户,例如华尔街上的金融机构,可能要求系统能持续地支持安全, 高吞吐量的事务处理,和不可预知的网络流量.在这种情况下,通常你需要由包 含Web服务器和应用服务器的n层架构来配置成集群以提高容错性.同样你也得考虑软件组织,包括Web服务器,安全管理软件,应用服务器, 域名管理服务

9、器,数据库管理系统,和第三方软件组件如果你还没有购买应用 服务器,选择一个J2EE提供商是整个评估过程中的一个重要方面.不同的提供 商对于J2EE的实施区别很大,有些提供商仅仅支持J2EE的旧版本.另外,有些 Web容器和应用容器可能比较超前.与J2EE规范的实施不同的是,许多提供商 可能也同时卖J2EE组件或框架.选择一个提供支持的稳定的J2EE供应商也很关 键你能购买或开发的系统级常用功能包括:事务?网络化和本地化?集群和对象分布?会话管理?应用性能的衡量和profilling?消息?工作流管理?入口和个性化管理?层与层之间的通信 协议?安全和防火墙?应用级架构构建于企业级系统架构之上的应

10、用架构与特定的项目或应用有关.基础组织完成后,架构师就得考虑特定的应用了 如果你的企业架构只是部分支持 J2EE 的旧版本,你可能得首先升级你的系统如果你基于预算或时间的考虑不能升级 你的系统,你就得考虑清楚由于使用旧版本带来的一些限制构建可复用的企业 级组建也很重要,在考虑它的可用性之前你就得考虑其可复用性.最终的目标是 满足客户的需求一在某个时间完成项目.架构师不是设计师;架构和设计是两个不同的概念.应用架构的范围包括系 统的主要结构,架构设计模式和框架,依赖于这些你可以添加组件.架构所关注 的是非功能性的,而设计关注的是你将域对象模型转换为技术上的对象模型所 用到的逻辑用例.应用架构是项

11、目结构,特殊的应用应用架构开发过程中通常 需考虑的部分包括:层之间的功能?模型域对象?可继承的系统保存什么(What legacy system to save)?购买什么样的软件组件?购买什么组件?如何集成第三方组件?图3所示购物单域对象示范了如何对域对象建模如今的Java技术允许你进 行分布式开发,域对象作为开发者管理的持久化对象位于 Web容器,应用服务 器包含EJB,关系数据库管理系统存储数据.在宠物商店BluePrint中,我们将订单对象设计为一个实体 Bean, 个详细 的对象,一个数据访问对象,如图5和其后的图6所示.当你看到这些的时候, 你可能就明白了架构的重要性试问一下在模型

12、分析中一个域对象映射到那么 多对象,如果你改变了设计会发生什么你可能听说了一些EJB的优点,也明白 不同提供商的实现的性能也是大不相同一项新技术出现后,在利用其进行大规 模设计之前你需要进行研究并做一些辅助性的工作你可以将在设计和实现域对象模型的vertical pieces中学到的知识应用于许多其它的域对象的设计之中 这就是架构开发相关内容.Figure 5.购物单对项涉及模型在J2EE的早期,有些面向对象设计师试图将域对象映射为实体Bean并通过层传递它们.他们设计出不错的UML图,但结果由于不必要的网络流量导致 系统速度非常慢如果在对象分析后不进行架构开发,缺乏对新技术的完全理解就直接进

13、入对 象设计,几乎总是会导致项目的失败.架构交付由于J2EE架构是一个相对较新的课题,J2EE架构的交付不太好定义.以宠物 商店的应用为例,很难明确什么时候架构开发结束,设计开始文档开始于对应 用架构所作的高级别的检查,对MVC设计模式的讨论和对架构的总体理解低 层次的文档适用于源程序.Sun的J2EE企业架构设计证明要求UML图中包括所 有可交付部分然而这些符号只存在于类图,组件图,和一些对象交互图中这 在现实世界中的J2EE应用中远远不够.为了开始,架构规范和过程至少需要下 面的部分:*系统架构系统,描述已有的硬件,?软件,网络技术和其他组件*应用架构文档,描述应用的主要结构,包括所有架构

14、中所有重要组件的逻 辑试图,用例,可复用的组件?*新组件的设计指导方针,?描述所有涉及指导方针,架构定义,解释所有定 义,描述如果应用替代品时应采用的时序这些指导方针应当包括所有重要的,基本的,决定性的部分,使 得新的组件设计不会影响现有系统的架构完整性.* 一个用于评估新技术的可运行的架构原型;在开发和部署J2EE应用中获得经验;创建架构的框架;通过?权衡性能,可测量性,难易度来评估风险;向项目客户提供方案可行性报告在解决了一些J2EE问题,获得了更多的经验后,原型就变得不是很重要了, 一些UML图和一些设计指导方针就足够了 .4.对象设计设计技术以架构规范作指导,是分析结果的扩充和进一步体

15、现分析阶段的 域对象模型与技术细节无关,而对象设计则与技术要素有着密切的关系,包括平 台类型,语言,架构开发阶段所选择的提供商分析阶段可能只关注目标,但设 计阶段就得脚踏实地了 除非必须保持基本属性和行为,否则不要轻易让你的设 计受到业务对象的影响以架构设计为指导,详细设计应考虑到所有类的式样,包括实现细节,详细 的接口,操作的伪代码或者解释的文字性描述说明书要足够详细,包括模型图, 它提供所有必要的编码信息.有些开发工具有自动生成的功能,你可以根据面向 对象图表生成代码骨架.图5和图6分别在较高层次和详细的对象设计层次上图 示了一些域模型.注意由于存根和骨架对于设计师和程序员是透明的因而它们

16、 通常不出现在图表中.我将它们包含在图6中用于阐述EJB基本概念.IMG upload/forum/20031219172210.jpg/IMGFigure 6.对项涉及模型:订单EJB详细设计在详细的对象设计完成后,你也就完成了域对象的对象关系映射.这么做的 理由是尽管面向对象方法论现在比较先进,但最流行,最成熟的持久化存储还是 关系型的另外在许多案例中客户先期所用的是关系数据库管理系统 ,最好能保 留他们的已有投资所以将于对象模型转换为关系模型或数据表是很重要的 有 许多容器管理的持久化工具,但它们还是不能替代好的关系数据库设计5实现有了好的架构和详细设计后,实现应该是一个明确的任务。另外

17、,因为我们 设计和实现架构原型阶段的纵向联合部分,所以实现阶段应该更没有什么值得惊 讶的。在许多组织中,开发者经常过早地到达实现阶段。尤其当管理者盯着开发 人员确保在编码,而不是做他们认为在浪费公司时间的其他事情时,这种情况变得更加严重。结果,不再花数小时或数天绘出 UML草图,而是通常在花费数周或数月编 码的同时测试自己的想法。由于在这种情况下,所有的架构决定和设计都是在编 码阶段做出来的,所以经常过了数月后才发现开发的方向出错了。6. 验证验证包括测试验证系统按设计要求运行并满足需求。验证过程发生在整个开 发生命周期的开发和产品环境中。单元测试、集成测试和用户测试本身就是非常 重要的主题。

18、7. 装配和部署构件装配和解决方案部署在 J2EE开发中特别重要。开发和产品环境可能非常不同。如果EJB在系统中,你需要使用供应商特定的工具得到容器自动生成的类,因为,正如我以 前指出的,Web和应用程序构件配置对不同的供应商来说是不同的。你也必须考虑要部署 的系统是否含有供应商特定代码实现。在可扩展架构中,系统结构应该是稳定的但也应该在不影响整个系统的条件下支持新或老构件的增量部署。8.运行和维护在最后阶段,应用程序到了用户手中,你必须给他们提供培训和文档。用户会发现错误并可能要求新特性。你必须适当地改变管理过程来处理这些情况。你不必为了部署一个新构件或取代老构件而关闭一个正在运行的系统。架

19、构开发过程知道了必须做出许多架构决定,因此我们必须为架构开发描绘一个过程。对于一个企业来说通常有许多应用项目,它们中的一些可能跨越数年,结果是系统演化包含许多周期。在你的领域里存在着许多跨越多个项目的通用需求。你应该不费力地在它的生命周期或其他项目中使用以前项目周期的可扩展且可重用的架构。为一系列软件应用提供同属结构和行为的通用框架和可重用软件架构是非常需要的。如果是第一个J2EE项目,架构必须做原型、测试、度量、分析并在迭代中进行推敲。蓝图提供了许多好的设计指导和实践,宠物店示例程序可以作为一个很好的参考架构。最有效地快速、高质量发布好的解决方案的方法是接受和扩展蓝图参考架构并插入你自己的业

20、务构 件。你最后要做的就是改造车轮。接受一个参考架构就我的理解,宠物店架构的精华是模型-视图-控制和命令模式。你可以将这些模式应用到以Web为中心和以EJB为中心的系统中。对于每个领域对象,视图用嵌套的JSP表示。控制器处理相关的业务事件,领域对象封装业务逻辑、事物和安全。我们使用门户servlet作为中心控制器接受和截获所有用户的动作。它将业务事件分发给特定的调用领域对象改变持续状态的领域对象控制器。依靠事件处理结果,控制器选择下一个要展现的视图。下面是我们可以修改并在大多数J2EE应用程序中使用的主要构件:a、MainServlet :门户构件, Web容器和框架之间的接口b、 Model

21、UpdateListener:获得模型更新事件对象的接口c、ModelUpdateNotifier :当更新模型事件发生时通知侦听器d、 RequestProcessor :处理所有从 MainServlet来的请求。e、RequestHa ndler :即插即用请求处理构件接口f、RequestHa ndlerMappi ng:包含请求处理映射规则g、 RequestToEventTranslator:中心请求处理器根据请求处理映射规则代理即插即用请求处理构件的请求。将http请求转换为业务事件h、EstoreEvent :业务事件i、 ShoppingClientControllerWeb

22、lmpI:代理 EJB 层门户控制器j、 Scree nflowMa nager:控制屏幕流,选择视图k、ModelUpdateManager: EJB层模型更新管理器,通知什么模型由于事件发生了改变l、 ShoppingClientControllerEJB: EJB 层门户,为 EJB 客户提供远程服务m、 StateMachine :中心事件处理器,根据状态处理映射规则代理即插即用处理构件的事件处理n、StateHandler : EJB 层状态处理接口o、 StateHandlerMapping:包含状态处理映射规则扩展参考架构虽然蓝图示例程序是一个好的起点,但应该根据每个项目或领域修改它。设计模式是可重用的微体系结构,可以使用它扩展参考架构。提供了一组有用的J2EE模式目录的蓝图和23

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论