J2EE开发架构大总结

一些主流的架构模式,总结一下:

 宏观上讲,我们采用了分层的架构,将软件分为如下的层次:
 
 在具体的实现中,表现层可为Struts/JSF等,业务层、访问层可为JavaBean或EJB等,资源层一般为数据库。
 宏观上的层次就是这样,在具体现实中,有如下几种实现形式:

1, 轻量级实现
 
表现层使用基于MVC的框架,比如Struts或JSF
业务层使用JavaBean(就是常说的Service)
访问层使用JavaBean(就是常说的DAO)
优点:
 轻量级实现,简单明了

缺点:
 难以无法实现分布式应用
 以下功能必须通过编程实现
 事务控制
 资源管理(包括组件的创建)
 线程安全问题
 安全性

2, 重量级J2EE实现
 
表现层依然是基于MVC的框架
访问层采用实体Bean实现,如果可能最好采用CMP,实现起来更简洁。此处的实体Bean可以考虑采用本地接口
业务层一分为二,服务控制器可以由会话Bean充当,用来封装业务流程(相当于轻量级实现中的Service),也可以考虑采用本地接口;门面也可以由会话Bean充当(一般来说无状态会话Bean足矣),作为业务层的入口,应该采用远程接口。
优点:
 以下功能可由EJB容器自动实现,或通过配置实现
 事务控制
 远程访问
 线程安全
 资源管理
 安全性
 可以进行分布式应用
 因为采用了EJB,故部分特征可以由装配人员来配置(比如事务,安全性等),不需要在软件中硬编码
 EJB组件有更好的重用性
 可利用容器提供的其他企业级的功能(比如集群,容错,灾难恢复等)
 可以加入MDB(实现异步通讯)等技术
缺点:
 开发难度较高
 如果不恰当的使用实体Bean,会造成效率低下。如果采用CMP,则很多数据访问的操作不能直接实现。
 缺少良好的开发环境
 软件可能依赖于具体的EJB容器
 EJB容器可能很贵,开发软件也可能很贵

3, 轻量级和重量级J2EE的切换
 
如果项目有需求,并有充分的时间,还可以通过在表现层和业务层的交界处加入“业务代表”(JavaBean + 服务定位器实现)来对表现层隐藏对业务层访问的细节(JavaBean和EJB的访问方式显然不同),只需替换“业务代表”就可以切换轻量级和重量级两种实现。举例说明,一般电话上都有一个P/T开关(脉冲/音频开关),随着开关状态的不同,拨号时电话机会判断是使用脉冲拨号还是音频拨号。

这种架构唯一的缺点就是必须写两套实现代码……

4, 轻量级J2EE实现
 
访问层通过JavaBean调用ORM框架实现(Hibernate,iBatis等),代码简洁,功能完备(相对于EJB 2.x而言),如果用的是Hibernate,可以忽略底层数据库的差异,如果用的是iBatis,则方便对SQL进行优化。

业务层和访问层依靠AOP框架(如Spring)可以在切面中实现事务,安全性等功能,同时不影响业务代码。如果采用Spring,其中已经内置了事物切面,并可以轻易的与主流ORM框架进行整合,实现声明式的事物管理。当然,更可以使用IoC模式降低组件间的耦合性。
优点:
 可以通过AOP框架实现事物、安全性等功能,同时不影响业务代码
 ORM框架比CMP更灵活,比BMP更简洁(相对于EJB 2.x而言),运行效率也比较高
 如果使用Spring,可以用更简单的方式实现J2EE中比较复杂的功能
 无需额外的容器
 ORM和AOP框架可以找到免费的开源实现,降低项目成本(不过也有人认为采用开源项目可能综合成本更高)
缺点:
 非官方框架,缺少文档、技术支持和业界经验
 采用技术太多,学习曲线较高,难以招到合适的程序员(咱们学员可以考虑在这方面下点功夫,呵呵)
 某些企业级的功能轻量级框架还不能实现(或独立实现)
 测试、调试均比较复杂

5, 其他另类实现
 
另类之处:
 使用BMP + Hibernate(具体做法为BMP中的持久化方法,比如ejbLoad, ejbStore等都委托给Hibernate实现)
优点:
 借助于Hibernate强大的ORM功能弥补CMP的不足(特别是EJB-QL)

缺点:
 事物不好控制
 不伦不类,容易发生未知的错误(比如Hibernate自身的缓存可能会于容易提供的缓存冲突)

 
另类之处:
 将业务层(也可能包含访问层)包装成Web Services,支持远程调用
优点:
 借助于Web Services可以实现松散耦合分布式应用,说的大一点,就是传说中的SOA,呵呵

缺点:
 Web Services自身效率不高,无状态,安全性差

 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
J2EE开发技术实验中,我获得了以下收获: 1. 深入理解J2EE架构:通过实验,我对J2EE的体系结构有了更深入的理解。我了解到J2EE是一个基于分层架构的企业级应用开发平台,包括Web层、业务逻辑层和数据访问层等组件。我学会了如何使用J2EE提供的各种技术和规范来构建可扩展、可维护的企业级应用程序。 2. 掌握Java Servlet和JSP技术:在实验中,我学会了使用Java Servlet和JSP技术来开发Web应用程序。我了解到Servlet是在服务器端运行的Java程序,可以接收和处理HTTP请求,并生成响应。而JSP是一种将动态内容嵌入到静态页面中的技术,可以方便地生成动态的Web页面。 3. 熟悉数据库访问技术:在实验中,我学习了如何使用JDBC(Java Database Connectivity)技术来连接和操作数据库。我了解到如何编写Java代码来执行SQL查询、插入、更新和删除等操作,以及如何处理数据库事务。 4. 学会使用企业级Java框架:在实验中,我还学习了一些常见的企业级Java框架,如SpringHibernate。这些框架提供了更高级别的抽象和功能,可以加快开发速度并提高应用程序的可维护性。 5. 实践项目开发:通过实验,我有机会参与到一个完整的项目开发过程中。我学会了需求分析、系统设计、编码、测试和部署等环节,并且在实践中体验到了团队合作和沟通的重要性。 总的来说,J2EE开发技术实验让我对企业级应用开发有了更深入的了解,并且掌握了一些常用的技术和工具。这些知识和技能对于我今后在Java开发和企业级应用开发领域的工作将会非常有用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值