科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道J2EE项目危机2

J2EE项目危机2

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

本文将揭示影响企业级Java项目的10项危险。一些危险只是简单的延迟项目进度,一些却是错误的征兆,而还有一些使项目彻底没有成功的希望。

来源:IT专家网 2008年5月12日

关键字: 危机 项目 J2EE java

  • 评论
  • 分享微博
  • 分享邮件
  解决:

  学习J2EE关键组件以及每个组件所能带来的优势和劣势。依次涉及各项服务,此处知识和能力一样重要。

  :

  只有知识能解决这些问题。好的Java 开发者造就好的EJB开发者??一步步地可以完美地成为J2EE领袖的人。你获得越多的Java/J2EE知识,你在设计和实现方面的能力越强.Things will start to slot into place for you at design time.(想了半天也不知道怎么翻译:-{ )

  危机2:过度设计(无论是否是对于EJB)

  项目阶段:设计

  所涉及的项目阶段:开发

  受影响的系统特性:可维护性,可测量性(scalability),可执行性

  征兆:

  特大型EJBs
  开发者无法解释他们的EJBs做什么和它们之间的关系
  不可重用的EJBs,组件,或服务??当它们应该重用时
  当已经存在的事务可以完成任务时,EJBs 启动新的事务
  数据独立性被设定的太高(为了安全的目的)

  解决:

  解决过度设计的方法可以直接从XP(extreme programming)中找到:局部范围内,设计和编码实现最小的暴露的[bare minimum]部分来满足需求,而不要做的过多。当你需要意识到将来的需求,比如平均负载需求和在系统负载顶峰时候的行为,不要试图“第二次猜测”[second-guess]系统将来需要成为的样子。另外,J2EE平台为你定义了特性如可测度性和服务器底层需要捕获的任务错误。

  :

  除了上面的解决方式,使用设计模式??它们会显著的提高你的系统设计。EJB模型本身广泛地使用设计模式。如,每个EJB里的Home接口是一个寻找者和工厂模式的例子[Finder and Factory pattern].一个EJB的远程接口担当实际bean的实现的代理,也是容器截取调用和提供服务如透明化负载均衡的能力关键。忽略设计模式的价值是危险的。
  我不断强调的另一种危险是:为使用EJB而使用。你的应用的一些部分在不适合被当作EJB模型时候而被设计为EJB模型,你的整个应用似乎使用EJBs将获得无限价值。这是极度的过分设计,我曾看到完美的servlet 和 JavaBean 应用在并没有好的技术方面的原因而使用EJBs时,变的乱七八糟,不得不重新设计。

 危机3:未分离表示逻辑和商业逻辑

  项目阶段:设计

  所涉及的项目阶段:开发

  所影响的系统性能:可维护性,可扩展性,可执行性

  症状:

  大型且笨拙的JSPs
  当商业逻辑改变时,你发现你需要编辑JSP文件
  显示需求的改变迫使你编辑和重新部署EJBs和后台组件

  解决:

  J2EE平台给你将表示逻辑同导航和控制分离并最终与商业逻辑分离的机会,这被称为Model2 结构(参见 Resources )。如果你已经掉进圈套,一种比较呆板的做法或许有用。你应该至少使 那些大部分自我包含的片断保持“垂直瘦小”[thin vertical slices](这是说,我如何布局的一个片断要同如何更改我的用户名和密码分开)。在你系统中使用这种方式来重新组织。

  :

  在你的工程中使用一种连接UI框架(如标签库)坚固的设计将帮助你避免逻辑分离问题,不要为你自己需要的GUI框架设计而烦恼,这会为你带来诸多执行方面的好处。依次评估每一种框架,然后选择最适合你的那种。

  危机4 :未在你开发的地方部署

  项目阶段:开发

  所影响的项目阶段:稳定阶段,并行阶段,存在阶段

  所影响的系统特性:正常的心智(Your sanity)

  征兆:

  持续多日及1周的向真正应用系统的迁移
  关于运行期的风险是固有的,伴随着诸多未测试的不清晰和主要的情节
  在运行期系统上的数据和开发及稳定期间的数据不相同
  在开发者机器上无法运行构建[builds]
  应用的行为在开发环境、稳定性环境、产品环境不一致

  解决:

  危机4的解决办法是将你产品的环境如实地复制到你的开发环境。在你打算放置产品的确切的环境上开发??不要在Red Hat Linux 上用JDK1.3开发,然后却布置到 JDK 1.2.2 和 Solaris 7 上。进一步,不要在这个应用服务器上开发却部署到另外的服务器上。同时,得到你产品的数据库的数据的大致印象,并且在其上进行测试,不要依赖人工创造的数据。如果产品数据是敏感的[sensitive],减少其敏感性,装载它。意想不到的产品数据将打破:

  数据有效性规则
  已经测试的系统行为
  系统组件间的契约(尤其是EJB-EJB和EJB-DB之间)
  最坏的情况,每一项均会导致异常,空指针和你以前从未见过的行为。

  :

  开发者经常到稳定阶段才想起安全性(“耶!屏幕正常,让我们把用户加为确认的员工”)。花费同样的时间来避免这种圈套实现安全性,就像你分离商业逻辑时候做的那样。
  实施是一个复杂的过程,充满政治问题和技术问题。你将会碰到你不期望的问题;这就是实施的全部。开发环境和稳定性环境给你在实施前犯错误和找到问题的空间,利用这点,将减少应用实施过程中你的痛苦和风险。
  你经历的项目越多,你就越容易知道什么能运行什么不能,为你和你的同伴保留一本项目记事本。在实施过程,你的目标应该是同样的错误不犯两次。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章