一些主流的架构模式,总结一下:
宏观上讲,我们采用了分层的架构,将软件分为如下的层次:
在具体的实现中,表现层可为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自身效率不高,无状态,安全性差
分享到:
相关推荐
《深入解析J2EE开发架构:从宏观到微观的全面剖析》 J2EE,即Java 2 Platform, Enterprise Edition,是Sun Microsystems公司为大型企业级应用开发而设计的平台,其核心价值在于提供了一套标准,使得开发者能够构建...
总结来说,J2EE项目开发涵盖了从架构设计、Web应用结构、XML处理、HTTP请求处理、Servlet编程、会话管理到Web应用上下文等多个方面。深入理解并熟练运用这些知识点,对于成功地开发和维护J2EE应用至关重要。
1. 复杂性:由于其采用了众多的技术和协议,学习和掌握J2EE开发需要较高的成本。 2. 性能开销:相对于某些其他架构,J2EE在性能上可能存在一定的开销,尤其是在高并发场景下。 3. 学习曲线:由于J2EE涉及的技术和...
在J2EE开发中,开发者经常遇到一系列的问题,这些问题不仅涉及技术细节,还关乎架构设计和应用部署。本文将深入探讨这些常见问题,帮助开发者提升开发效率和解决问题的能力。 1. **容器管理与生命周期**: J2EE...
《J2EE系统架构师参考手册》不仅为读者提供了全面的J2EE应用开发知识体系,还通过丰富的案例分析和实践经验分享,帮助读者在实践中更好地理解和应用这些知识。无论是初学者还是资深开发者,都能从中获得宝贵的启发和...
总结而言,Hibernate作为J2EE中的一个重要组成部分,极大地简化了数据库访问层的开发工作,使开发者能够更加专注于业务逻辑的实现。随着框架的不断发展和完善,Hibernate将继续在企业级应用开发中发挥重要作用。
首先,Struts是J2EE架构中的一个MVC(Model-View-Controller)框架,用于处理Web应用程序的用户界面和业务逻辑。它通过分离表现层、业务逻辑层和数据访问层,提高了代码的可维护性和可扩展性。在Struts中,模型负责...
常见开发架构大总结,呵呵.可能不入高手的法眼,但是相信对初学者有用
**EJB编程及J2EE系统架构和设计** 在企业级Java应用开发中,Enterprise JavaBeans(EJB)是核心组件之一,它为构建可扩展、安全和事务处理的分布式应用提供了框架。EJB规范定义了一组接口和API,允许开发者创建...
本文旨在探讨当前Web开发的困境,通过对B/S架构的演变历程进行分析,对比C/S与B/S模式,提出一种基于J2EE架构的新开发思维,旨在解决现有问题并提高开发效率。 **Web开发的困境** 2.1 概述 Web开发的困境主要体现...
以上仅是J2EE开发项目中的一部分风险,每个风险都可能导致项目偏离轨道。通过预先识别和规划,采取有效的应对策略,可以显著提高项目成功的概率。在项目执行过程中,持续监控和调整风险管理体系,将有助于确保项目的...
- **预备知识**:要充分理解和使用J2EE开发指南,读者需要具备一定的Java语言基础、SQL知识以及对关系型数据库的理解。此外,了解J2EE相关的其他技术,如JDBC、JSP、Servlets等也是很有帮助的。 #### 四、J2EE开发...
Spring框架是J2EE开发中的重要工具,它简化了企业级应用的开发流程。Spring的核心特性包括依赖注入(DI)和面向切面编程(AOP)。依赖注入允许开发者解耦代码,提高模块化程度;AOP则用于实现横切关注点,如日志记录...
J2EE是一个为企业级应用开发提供多层分布式架构的标准平台,它提供了丰富的组件模型,如Servlet、JSP、EJB等,用于构建可复用、可扩展和高可用性的应用。在人事管理系统中,J2EE架构能够确保系统具备良好的可维护性...
现代J2EE开发中,许多开源框架简化了开发流程,如Spring Framework、Struts、Hibernate、MyBatis、Apache Maven等。这些框架提供了更高级别的抽象,降低了开发难度,提高了开发效率。 总结,J2EE是一个强大而全面的...
下面将详细阐述这些书籍所涵盖的关键技术领域及其在J2EE开发中的应用。 ### Java基础理论 - **《深入理解Java》**:这本书是Java初学者的必读之作,不仅讲解了Java语言的基础知识,还深入探讨了面向对象编程的思想...
J2EE架构设计是企业级Java应用程序开发的关键,它涉及多个层次和组件的协同工作,以构建高性能、可扩展和易于维护的系统。...理解并掌握这些核心概念和技术,对于任何从事J2EE开发的程序员都至关重要。
在IT行业中,J2EE(Java 2 ...总结来说,J2EE结合五层Web开发架构,为大型企业级应用提供了一个高效、稳定且易于扩展的开发模型。通过理解并熟练掌握这些知识点,开发者可以构建出满足复杂需求的高质量Web应用。