开发完整J2EE解决方案的八个步骤 |
作者:佚名 发布时间:2005-04-02 来源:不详
|
Java 2企业版本(The 规范,参考实现,兼容性测 最佳练习和设计指导方针。 基于Rational Unified Pro 解J2EE体系的许多重要主题 决各种特定的商业问题。
|
Java 2 Enterprise Edition,J 试包和BluePrints程序。BluePr 这篇文章介绍了一个由八个步骤 cess和BluePrints应用例子的。 ,并且可以应用这些知识来扩展
|
2EE)平台由4个主要的部分组成: ints描述了一个分布式组件体系的 组成的J2EE开发方法论,该方法是 通过这篇文章,你将可以更好地理 和修改这个简单的方法论,从而解
|
在商业领域,我们使用 为其它的商业项目提供联系 站,在其整个开发周期中, 和数据库专家参与进来。
|
Java 2企业版本(J2EE)来解决 的服务。如果一个公司要使用多 通常都需要经理、体系构建人员
|
商业问题,开发商业的软件,或者 层的体系来建立一个电子商务的网 、设计人员、编程人员、测试人员
|
为了让不同的部分可以 流程包括有瀑布模型、快速 个流行的软件设计流程--Ra 为不同的角色分配任务。它 件以符合用户的需要。
|
有效地工作,我们通常都需要一 应用开发(RAD)和最终编程。 tional Unified Process(RUP 的目标是在一个可预计进度和预
|
个软件开发流程。一个经典的开发 在这篇文章中,我们将集中介绍一 )。RUP提供了一个专门的方法来 算内,确保我们生产出高质量的软
|
我使用RUP作J2EE开发有三个方面的 全方位的开发之前,它首先开发出一个可 件的。该体系的基本通常是包含有一个架 响系统其它部分的基础上,自定义和扩展 言--UML,可以将系统的体系和组件以可 inception), 细化(elaboration), 构 章将从一个技术的观点来介绍J2EE开发的
|
原因。首先,RUP是以体系为中心的;在提交资源作 执行的体系原型。第二,RUP是迭代的而且是基于组 构,它可以方便地通过迭代地增加组件,从而在不影 一个系统的功能。第三。RUP使用一个工业标准的语 视化的模型展示。RUP有4个不同的开发阶段:初始( 建(construction)和转换(transition)。这篇文 8个基本步骤,它是维持以体系为中心的。
|
需求分析用来描述系统应该和不应该 业联系。你可以用商业的概念、该领域的 而非功能性的需求,例如性能和事务,可 创建高级别的UI模型,采取哪种方式,要
|
做什么,从而开发者和用户可以创建一个初始化的商 术语、框图或者其它方法将功能性的需求写成文档, 以写在附加的需求文档中。你可以用文本或者HTML来 看你在该项目中介入的深度。
|
图一展示了一个典型的 统,查看订单的列表,并且 产品目录,选择感兴趣的产
|
电子商务系统。viewOrder图说 可点击进去查看每张订单的细节 品,并且将它们加入到购买订单
|
明的是一个用户通过web登录至系 。addLineItems说明的是用户浏览 中。
|
分析产生问题域模型:类、对象和交 而应该包含有一个理想的模型。对象分析 须维护一个纯领域的模型,它不包含技术 多。
|
互。你的分析应该脱离任何的技术或者实现的细节, 可帮助你理解问题和获得问题领域方面的知识。你必 的细节,这是由于商业流程的改变要比信息技术慢得
|
上面的两步--需求分析 来说,都是很常见的。图2 它说明了我们由需求分析us 且确定它们的关系。
|
和面向对象的分析并不是J2EE特 展示了一个高级别的对象分析模 e cases中确定的主要概念。我
|
有的,对于许多面向对象的方法论 型,它是一个宠物店的例子应用。 们将这些概念模型化到对象中,并
|
需求和对象分析的结果 直的部分--通常是一个关键 和开发。(一个垂直的部分 子集,如图1所示,还有领 能的迷你系统,包括所有层 ,例如是Enterprise JavaB 用到域对象中,并且将这些
|
是J2EE体系开发的一个入门点。 的部分,例如是订单领域的对象 ,是一个RUP概念,是系统的一 域分析模型,如图三所示。一个 ,例如用户界面层的JavaServer eans (EJBs)和后台的数据库) 认识作为对象设计阶段的一个设
|
要开发一个体系,你可选择一个垂 模型--来作对象设计、实现、测试 小部分。开始点是use case的一个 垂直部分的实现就会产生一个全功 Pages(JSPs),中层的商业对象 。你可以将由原型中得到的经验应 计指导方针。
|
经过前面的两个步骤, 略和体系上。一个体系就是 进一步将一个体系划分为企
|
商业领域的问题和需求都应该清 各部分一起定义整个系统的蓝图 业和应用体系。
|
晰了。现在我们将集中讨论技术策 :结构,接口和通信技术。我们可
|
企业系统体系覆盖了硬件和软件架构 了一个企业的长线投资。在开发前,你需 J2EE的话,你可能会加入新的组件和升级 机,路由器、交换机和网络拓扑,因为它 的网络拓扑。
|
,网络拓扑,开发、测试和生产环境等。这些都反映 要评估现有的软件和硬件架构,如果它不能完全支持 你现有的系统。你需要彻底地评估硬件,包括有计算 们都会影响系统的性能和稳定,图4展示了一个多层
|
.Web浏览器客户端,它可能处在客户端公司的防火墙后面 |
.关系数据库管理系统(RDBMS)和数据库提供数据和数据逻辑 |
所使用的系统体系类型是根据你对安 的。要求很低时,你甚至可以使用一台二 放源代码的操作系统、Web服务器、应用 几百美金,当然,维护起来可能要麻烦一
|
全、性能、可靠性的需求以及你公司的财政状况而定 手的计算机和一条电话线。在Internet上,有许多开 服务器和数据库管理系统。这些系统的花费可能只有 点。
|
高端的客户,例如许多 付不可预计网络通信的系统 务器和应用服务器,并且设
|
华尔街的财政机构,它们需要的 。在这种情况下,你通常就需要 置为群集而达到容错的目的。
|
是一个支持安全、高吞吐量和可应 一个n层的体系,该体系带有Web服
|
你还需要评估软件架构 ,数据库管理系统和第三方 中,选择一个J2EE的生产商 有很大不同的,有一些仅支 的快不少。除了实现J2EE规 的J2EE厂家也是重要的,因 开发的功能包括有:
|
,包括Web服务器,安全管理软 的软件组件,如果你还没有购买 将是一个重要的部分。我要提醒 持旧的J2EE版本。此外,一些We 范外,许多的厂家还售卖J2EE体 为这样可以得到长久的支持。你
|
件,应用服务器,域名管理服务器 你的应用服务器,那么在评估过程 你一点,不同厂家对J2EE的实现是 b容器或者应用容器可能要比其它 系的组件或者架构。选择一个稳定 通常可以购买或者在系统体系级别
|
应用体系建立在企业系统体系之上, 系建立人员就会研究如何建立一个专门的 ,你可能就需要首先升级你的系统。如果 旧版本的技术限制下工作。重要的是,要 的需要。
|
指的是一个特别的项目或者应用。在架构完成后,体 应用。如果你的企业体系只是支持一个旧的J2EE版本 由于预算或者时间关系而不能做升级,那么就必须在 建立企业级的可重用组件。最终的目标是要满足客户
|
一个体系建立者并不是 是系统的主要结构、它的体 现的非功能性方面,而设计 型为一个技术对象模型的部 结构开发时要作出的决定包
|
一个设计者;体系和设计是两件 系设计模式以及你可以在上面增 是和商业的use cases有关,use 分。应用体系是项目的结构,一 括有:
|
不同的事情。一个应用体系的范围 加组件的架构。体系主要是涉及实 cases是指你应用来转换域对象模 个专门的应用。你通常在应用体系
|
图3中的订单域对象解 对象分布在几个地方,包括 务器中,或者作为存储过程
|
释了你如何做到模型化域对象。 有作为开发者管理的持续对象放 放在RDBMS主机中。
|
对于当前的Java技术,你可以将域 在Web容器中,作为EJB放在应用服
|
在宠物店的设计图中,我们将订单对 访问对象,如图5和后面的图6所示。当你 想一下为什么一个在分析模型的域对象被 发生什么事情。你也许已经听到过EJB的 区别的。当新技术到来时,在将其放在到 其实所谓体系的开发,就是将设计和实现
|
象设计为一个实体bean、一个细节的对象和一个数据 看到这些时,你将会认识到其体系的重要性。你可以 映射为这么多对象,以及如果改变该设计的话,将会 好处,不过要注意的是不同厂家实现起来的性能是有 一个系统之前,你需要做研究并且动手做一些测试。 域对象模型的垂直块转换为设计其它许多域对象。
|
在J2EE出现的早期,一 在层间传送。他们拥有非常 的网络通信造成的。由对象 一个新技术,这样通常都会
|
些面向对象的设计者尝试将域对 好的UML框图,不过得到的结果 分析直接进入对象设计,而没有 导致一个项目失败。
|
象映射到实体bean中,并且将它们 是一个慢的系统,这是由于不必要 一个体系的设计,没有清楚地理解
|
由于J2EE体系是一个相对新的主题, 物店的例子应用中,是很难看出体系在哪 检查、Model-View-Controller设计模式 码。没有UML框图。Sun的J2EE企业体系认 不过,这里仅表示为一个类框图、一个组 J2EE应用来说都是不足够的。要开始的话
|
因此一个可交付的J2EE体系并没有很好地定义。在宠 里结束和设计在哪里开始。文档由高级别的应用体系 的讨论和一个体系概览开始。低级别的文档就是源代 证的委派部分要求所有的可交付体系都用UML表示。 件框图和一些对象交互框图,。这些对于一个真正的 ,体系规范和流程至少需要以下的方面:
|
.一份系统体系文档,用来描述你现有的硬件、软件、网络拓扑和其它的组件 |
.一个应用体系文档, use case组件和以前的组件
|
用来描述应用的主要结构,包括 的一个逻辑视图
|
所有对于体系有重要作用的组件、
|
.一个新组件设计指导 并且说明如果选择其它的选 以便进行新组件的设计时可
|
方针,用来描述所有的设计方针 项会有什么可能的结果。这些方 遵从这些规定,以维持系统体系
|
和体系决定,解释全部这些决定, 针应该包含所有重要的基本决定, 的完整性
|
。一个工作体系原型来评估新的技术 ;通过测量性能、扩展性来预示所冒的风
|
;从开发和配置J2EE应用中获取经验;建立体系架构 险;还有向客户证明你的方法是可行的
|
在你开发过几个J2EE方 图和一些设计方针就可能已
|
案并且获得更多的经验后,原型 经足够了。
|
将不再那么重要,这时一些UML框
|
在体系规范的指导下,设计可在技术 化应该和技术的细节无关,而对象设计时 ,采用哪一类的平台、语言和厂家。理论 的属性和行为而必须这样做。
|
上扩展和适应分析的结果。分析阶段时,域对象模型 则是和技术因素密切相关的,包括在体系开发阶段时 上,你不要修改商业对象,除非是为了维护它们基本
|
在体系决议的指导下,一个详细的设 ,它们详细的接口和伪代码或者操作的纯 结合,就可得到所有必要的编程信息。在 框图中产生代码的框架。要注意的是stub 们对于设计者和编程者来说都是透明的。
|
计说明应该提到所有类的规范,包括必要的实现属性 文本描述。规范的详细程度应该达到只要和模型框图 许多自动化的软件生产流程中,你可以从面向对象的 和skeleton通常是无需在框图中展示出来的,因为它 我在图6中包含它们只是为了说明EJB的基本点。
|
在你完成详细的对象设 面向对象的方法论在目前是 客户的IT架构在许多方面都 型转换为关系模型或者数据 个好的关系数据库设计。
|
计后,你就完成了域对象的对象 比较先进的,不过最流行和持久 已经反映了现有的投资和商业RD 库表是非常重要的。有很多容器
|
相关映射。这样做的原因是,虽然 的商店都是关系型的。此外,一个 BMS厂家的选择。因此将域对象模 管理的工具,不过它们不能代替一
|
有了一个好的架构和细 阶段设计和实现了系统的一 公司中,开发者通常都是过 ,做其它的事情等于浪费公
|
节设计,实现将是一个很清晰的 个垂直部分,因此在实现阶段我 早进入实现阶段,特别是当经理 司的时间。
|
任务。此外,由于我们在体系原型 们不会碰到很多麻烦事情。在许多 在监视他们的时候,因为对于他们
|
结果是,不再花时间来画UML框图, 的时间,在这种情形下,所有的体系决议 会发现开发已经进入了一个错误的方向。
|
而是在代码开发中测试想法,这要花数星期和几个月 和设计都是在代码阶段作出的,通常要在几个月后才
|
确认包括有测试以验证该系统符合设 发和安装阶段。单元测试、集成测试和用
|
计并且满足需求。在整个开发周期中,验证发生在开 户容忍度测试都是重要的主题
|
组件装配和方案配置在 。如果EJB处在系统中,你 Web或者应用组件的配置对 任何厂家指定的代码实现。 支持增加配置新的或者旧的
|
J2EE的开发中是特别重要的。开 需要使用厂家的专门工具来提出 于不同的厂家都是不一样的。你 在一个可扩展的体系中,系统的 组件,而无需影响整个系统。
|
发和安装的环境可能是完全不同的 产生容器的类,上面我也提到过, 还必须考虑要配置的系统是否拥有 结构应该是稳定的,但是应该可以
|
在最后的阶段,应用交 发现问题和可能会提出新的 了配置一个新的组件或者替
|
付到用户的手中,你必须为他们 改进。你必须通过正确地修改管 换一个旧的组件而关闭一个正在
|
提供培训、文档和教育。用户将会 理过程来处理这些需求。你无需为 工作的系统。
|
我们必须做许多体系的 说,通常有许多应用项目, 在你的领域中,许多同样的 和可重用的体系,它们可能 求,可重用的软件架构可为
|
决定,因此我们必须整理出一个 其中的一些甚至会跨越几年,从 项目中都会出现同样的需求。你 在上个项目周期或者其它的项目 家族式的软件应用提供一个普遍
|
体系开发的流程。对于一个企业来 而导致系统围绕许多周期而变化。 应该很容易地重新使用一个扩展的 中。这样会有一个对普遍架构的需 的架构。
|
如果这是你的首个J2EE BluePrint提供了许多好的 系。要很快地提出一个好的 体系,然后插入到你自己的
|
项目,你的体系必须被原型化, 设计指导方针和最佳的练习,宠 并且是高质量的解决方案的有效 商业组件中。
|
进行测试、分析,然后再重复。 物店的例子也是一个很好的参考体 方法是使用和扩展BluePrint参考
|
就我的理解来说,宠物 这些模型应用到以Web-cent JSP表现。一个controller 们使用前台的servlet作为 件到指定的域对象controll 事件处理的结果,一个cont ,我们可以修改并且应用在
|
店体系的本质是Model-View-Con ric和EJB-centric的系统。对于 处理与商业相关的事件,而域对 中央的controller,以接收和解 ers,这些controllers可调用域 roller选择下一个显示的视图。 大部分的J2EE应用:
|
troller和Command模型。你可以将 每个域对象,一个视图是用嵌套的 象封装商业逻辑、事务和安全。我 释所有用户的操作。它分派商业事 对象来改变持续的状态。根据这个 以下的组件对于体系都是很重要的
|
MainServlet: 前台的组件是Web容器和该架构之间的接口 |
ModelUpdateListener: 是获取模型更新事件的对象的接口 |
ModelUpdateNotifier:在更新模型事件发生的时候通知监听者 |
RequestProcessor: 处理由MainServlet接收的全部请求 |
RequestHandler:plug-n-play请求处理器组件的接口 |
RequestHandlerMapping:包含有请求处理器映射规则 |
RequestToEventTranslator:根据请 到plug-n-play请求处理组件。到商业事
|
求处理器的映射规则,中央请求处理器委派请求处理 件的透明http请求
|
ShoppingClientContro
|
llerWebImpl: Proxy-to-EJB层
|
前台控制器
|
ScreenflowManager: 控制屏幕流,选择视图 |
ModelUpdateManager:
|
EJB层模型更新管理器,通报由
|
于一个事件而导致的模型修改
|
ShoppingClientControllerEJB: EJB
|
层前台,为EJB客户提供远程服务
|
StateMachine:中央事 plug-n-play处理器组件
|
件处理器,根据状态处理器的映
|
射规则,委派事件处理至
|
StateHandler: EJB层状态处理器接口 |
StateHandlerMapping: 包含状态处理器映射规则 |
BluePrint的例子应用是一个好的起 模型是可重用的微体系,你可以使用它来 J2EE模型目录,而23个“Gang of Four” 以支持工作流管理,你可以在配置或者运 央controller要求每个注册的事件处理器 达命令串末尾的信息。
|
点,你还应该修改它以配合不同的项目和领域。设计 扩展参考体系。BluePrint提供了一个非常有用的 模型都是极好的资源。例如,如果你想扩展参考体系 行时使用中央controller来动态注册事件处理器。中 处理一个事件,直到一个处理器返回一个指示已经到
|
J2EE技术对于每个人都 。一旦你建立了一个基本的 域工作。你可以通过选择一 可带来明显的技术上的冒险 端的设计模型,就象我们在 地运作。如果所有都如设想 测试以扩展体系的覆盖。在 认识到哪些组件是可以购买 一步就是软件设计,你可以
|
是一样的,但是对于不同的领域 J2EE框架,你就必须利用一些us 些情形,最好是该系统的一个重 的情形。由域分析模型开始,然 图5和6中的所示。实现低级别的 般运作,你就可以再重复上一步 经过反复的验证后,初始化的体 的,旧系统的哪些方面是应该保 使用设计指南中指定的类似方法
|
,我们需要解决的问题都是不同的 e cases来展示该体系可为你的领 要的功能,或者使用得最多的而且 后尝试映射你的域对象到高端和低 设计模型,并且测试看它是否真正 ,即找冒险的情形、更多的设想来 系原型应该就会变得稳定。你可以 留的,以及如何为它们做接口。下 和流程来进行继续的开发。
|
我们使用了一个流程的 地理解和解决它们。在这篇 计。我这里介绍了重要的体 可交付。
|
形式,将一个复杂的问题分解为 文章中,我们将J2EE的开发分解 系主题和作出体系决定的一个流
|
几个小的部分,以便我们能更容易 为8个步骤,集中介绍了体系和设 程。我还讨论了J2EE体系的角色和
|
学习通过这些步骤来开发J2EE的方案 习基本的舞步。一旦你熟悉了它们,你就 大小、速度、流和节奏。不过你不应该被 展该流程来满足你的特定需要。要记住, 的客户需求。
|
就象学习舞蹈一样。你首先需要自觉和坚持不懈地练 会想到将它们放在一起,并且更集中在曲子里每步的 一个流程来限制你的创造力。相反,你应该使用和扩 你的最终目标是设计出一个完整的J2EE方案来满足你
| |
|
|
|
|