J2EE培训 百分网手机站

J2EE项目开发10大风险盘点(2)

时间:2018-04-22 09:48:42 J2EE培训 我要投稿

J2EE项目开发10大风险盘点

  EJB没有依照规范定义(fire线程, 加载了本地库,试图执行I/O,等等)

  解决方案:

  要改进关于EJB方面的知识,可以找一个周末来阅读EJB规范 (1.1版有314页),然后阅读2.0规范(524页!),这样可以了解到1.1没有定义到的而在2.0规范中补充的内容。EJB开发者从18.1及18.2章节开始阅读是比较合适的。

  备注:

  不要从提供商的角度去看EJB,要确切地知道规范所支持的标准EJB模型和基于这些模型的特殊应用之间的区别。这也会有助于你迁移到别的提供商的时候所用。

  描述: 没有真正理解J2EE

  项目阶段:

  设计

  影响阶段:

  开发

  对系统的影响:

  维护、扩展性、性能

  症状:

  "Everything is an EJB"的设计方式

  用手工事务管理取代了容器-提供的机制

  自定义方式的安全处理 -- J2EE平台在企业级计算中,从表示逻辑到后台处理,已具有最完整的集成安全架构;但很少用到其全部功能。

  解决方案:

  学习J2EE的关键组件,并且了解它们的优缺点,依次用它们替代每一个服务;“知识就是力量”在这里是行之有效的。

  备注:

  只有知识能够弥补这些问题。好的Java开发者会成为好的EJB开发者,此后也应逐渐成为J2EE得道高手。Java和J2EE知识掌握得越多,设计和开发工作就会越出色。在设计阶段一切都会有条不紊。

  --------------------------------------------------------------------------------

  风险2: 过度设计(Over-engineering) (采用 EJB或者不采用EJB)

  项目阶段:

  设计

  影响的.项目阶段:

  开发

  对系统的影响:

  维护、扩展性、性能

  症状:

  过于庞大的EJB

  开发者无法解释EJB做什么,以及其间的联系

  无法重复使用的EJB、组件或者服务

  EJB启动了新的事务,而该事务本该由一个已存在的EJB启动

  为了安全,把数据分离级别定得太高

  解决方案:

  过度工程化的解决之道直接来自于极限编程 (XP)方法:用最小的设计和编程来满足需求,除此之外别无它干。除非你需要明确知道今后可能的需求,如将来的负载要求,或者系统在最高负载下的表现,否则大可不必为系统将来的情况做太多考虑或猜测。另外,J2EE平台已经定义了可伸缩性及出错恢复等特性,可以让服务器系统为你进行处理。

  在最小的系统中,只包含一个个小组件,这些组件只做一件事,只要把这些要求做到的进行实现,系统稳定性就已经得到了提高,而且,你的系统的可维护性会变得很强,在未来要增加功能以满足新的需求也将变得容易。

  备注:

  除了上面所列方案之外,可以推行设计模式 -- 它们可以显著地改进你的系统设计。EJB模型本身也广泛使用了设计模式。例如,每个EJB所带的Home 接口就是Finder和Factory模式的实例。EJB的remote接口扮演了一种实际bean实现的代理,并且对于提供容器的能力也是至关重要的,这些容器截取调用信号并提供诸如透明(transparent)负载均衡的服务。忽视设计模式也是危险的一部分。

  我常提到要反对的另外一种危险是:仅仅是为了使用EJB而使用EJB。在你的应用中的某一部分可能并不需要EJB,甚至你的整个应用都不需要。这是过度工程化所走的极端,而且我确实也目睹了一些良好的servlet和JavaBean应用被重构为EJB,而这样做并没有很好的技术上的理由。

  --------------------------------------------------------------------------------

  风险3: 没有将业务规则和逻辑表现形式相分离

  项目阶段:

  设计

  影响的项目阶段:

  开发

  对系统的影响:

  维护、扩展性、性能

  症状:

  过于庞大、没有边际的JSP程序

  在业务逻辑改变的时候必须修改JSP

  在要求改变界面显示的时候需要修改并重新配置EJB和其它后台组件

  规避方案:

  J2EE平台使你有机会将表示逻辑和导航控制相分离,进而与业务规则相分离。这被称为模式2结构。

  备注:

  可以使用具有一致性的设计来进行用户界面框架的连接。(例如可以使用taglib),这将帮助你避免逻辑分离的问题。有许多现成的好的方法可供选择。对每一个分别进行评估,然后采用最合适的框架。

  --------------------------------------------------------------------------------

  风险4: 没有在开发环境中进行适当的配置

  项目阶段:

  开发

  影响的项目阶段:

  稳定化、并发、成熟期

  对系统的影响:

  你的权衡

  症状:

  经过多日或数周的时间才能过渡到成熟系统

  风险存在与过渡期,带有很多不确定性,有些主要的功能场景没有被测试到

  实际系统中的数据和开发、测试中的数据不同

  无法在开发者机器上进行组建

  应用行为在开发、稳定化及产品环境中各不相同

  规避方案:

  解决之道是忠实地在开发环境中配置实际的环境,让开发所用环境接近于要实施产品的环境。如果未来环境是JDK 1.2.2及Solaris 7,那么不要在JDK 1.3及Red Hat Linux上进行开发。对于所用的应用服务器也是如此。同样,要快速地看一下产品数据库中的数据,并将这样的数据用于测试。不要依赖于人工创建的数据。如果产品数据很敏感,则要使之变得不敏感,然后把它配置起来。开发中未能预期到的产品数据将对以下过程产生破坏:

  数据检验规则

  系统测试行为

  系统组件构建(特别地包括:EJB-EJB以及EJB-数据库)