一些主流的架构模式,总结一下:
宏观上讲,我们采用了分层的架构,将软件分为如下的层次:
在具体的实现中,表现层可为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自身效率不高,无状态,安全性差
分享到:
相关推荐
web j2ee开发有详细的介绍总结学习过程
常见开发架构大总结,呵呵.可能不入高手的法眼,但是相信对初学者有用
本书所介绍的内容是作者多年J2EE开发经验的总结,内容涉及Struts、 Hibernate和Spring三个开源 框架,还介绍了Tomcat和Jetty两个开源Web服务器的详细用法,以及J2EE应用的几种常用架构。
本书所介绍的内容是作者多年J2EE开发经验的总结,内容涉及Struts、 Hibernate和Spring三个开源框架,还介绍了Tomcat和Jetty两个开源Web服务器的详细用法,以及J2EE应用的几种常用架构。 本书不仅是一本J2EE入门图书...
本书所介绍的内容是作者多年J2EE开发经验的总结,内容涉及Srruts、Hibernate和Spring三个开源框架,还介绍了Tomcat和Jetty两个开源Web服务器的详细用法,以及J2EE应用的集中常用架构。 本书不仅是一本J2EE入门图书,...
本书所介绍的内容是作者多年J2EE 开发经验的总结,内容涉及Struts 、Hibernate 和Spring 三个开源 框架,还介绍了Tomcat 和Jetty 两个开源Web 服务器的详细用法,以及J2EE 应用的几种常用架构。 本书不仅是一本J2EE ...
本书所介绍的内容是作者多年J2EE开发经验的总结,内容涉及三个开源框架:Struts、Hibernate和Spring,还介绍了Tomcat和Jetty两个开源Web服务器的详细用法,以及J2EE应用的几种常用架构。 本书不仅仅是一本J2EE...
本书所介绍的内容是作者多年J2EE开发经验的总结,内容涉及三个开源框架:Struts、Hibernate和Spring,还介绍了Tomcat和Jetty两个开源Web服务器的详细用法,以及J2EE应用的几种常用架构。 本书不仅仅是一本J2EE...
本书所介绍的内容是作者多年J2EE开发经验的总结,内容涉及三个开源框架:Struts、Hibernate和Spring,还介绍了Tomcat和Jetty两个开源Web服务器的详细用法,以及J2EE应用的几种常用架构。 本书不仅仅是一本J2EE...
本书所介绍的内容是作者多年J2EE开发经验的总结,内容涉及三个开源框架:Struts、Hibernate和Spring,还介绍了Tomcat和Jetty两个开源Web服务器的详细用法,以及J2EE应用的几种常用架构。 本书不仅仅是一本J2EE...
本书所介绍的内容是作者多年J2EE开发经验的总结,内容涉及三个开源框架:Struts、Hibernate和Spring,还介绍了Tomcat和Jetty两个开源Web服务器的详细用法,以及J2EE应用的几种常用架构。 本书不仅仅是一本J2EE...
本书所介绍的内容是作者多年J2EE开发经验的总结,内容涉及三个开源框架:Struts、Hibernate和Spring,还介绍了Tomcat和Jetty两个开源Web服务器的详细用法,以及J2EE应用的几种常用架构。 本书不仅仅是一本J2EE...
本书所介绍的内容是作者多年J2EE 开发经验的总结,内容涉及Struts 、Hibernate 和Spring 三个开源框架,还介绍了Tomcat 和Jetty 两个开源Web 服务器的详细用法,以及J2EE 应用的几种常用架构。 本书不仅是一本J2EE...
本书所介绍的内容是作者多年J2EE 开发经验的总结,内容涉及Struts 、Hibernate 和Spring 三个开源框架,还介绍了Tomcat 和Jetty 两个开源Web 服务器的详细用法,以及J2EE 应用的几种常用架构。 本书不仅是一本J2EE...
摘要:本文首先分析了J2EE的优势,然后总结J2EE有那些企业级Web应用结构,帮助企业选择最适合自身的开发方式,创造更多效益。关键词:J2EE架构;分布式企业
本书所介绍的内容是作者多年J2EE 开发经验的总结,内容涉及Struts 、Hibernate 和Spring 三个开源 框架,还介绍了Tomcat 和Jetty 两个开源Web 服务器的详细用法,以及J2EE 应用的几种常用架构。 本书不仅是一...
本书所介绍的内容是作者多年J2EE 开发经验的总结,内容涉及Struts 、Hibernate 和Spring 三个开源 框架,还介绍了Tomcat 和Jetty 两个开源Web 服务器的详细用法,以及J2EE 应用的几种常用架构。 本书不仅是一...
本书所介绍的内容是作者多年J2EE 开发经验的总结,内容涉及Struts 、Hibernate 和Spring 三个开源 框架,还介绍了Tomcat 和Jetty 两个开源Web 服务器的详细用法,以及J2EE 应用的几种常用架构。 本书不仅是一...
本书所介绍的内容是作者多年J2EE 开发经验的总结,内容涉及 Struts 、 Hibernate 和 Spring 三个 开源框架,还介绍了 Tomcat 和 Jetty 两个开源 Web 服务器的详细用法,以及 J2EE 应用的几种常用 架构。 详尽而...