关闭

JavaEE知识整理系列(一)JavaEE概述 .

647人阅读 评论(0) 收藏 举报

1.        JavaEE基本概念

JavaEE 是 J2EE的一个新的名称,之所以改名,目的还是让大家清楚J2EE只是Java企业应用。但那是需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本,因此J2EE改名为Java EE,实际也反映出业界这种共同心声。JavaEE应该是J2EE的延伸。

J2EE是一个标准,这个标准不仅定义了基本的规范和接口,也有一些比较固定的架构模型。J2EE使用多层的分布式应用模型,应用逻辑按功能划分为组件,各个应用组件根据他们所在的层分布在不同的机器上。

       在传统的不分层的软件架构中,客户端担当了过多的角色而显得庞大而且不容易进行维护和修改,扩展性非常差,它使得重用业务逻辑和界面逻辑非常困难。现在JavaEE 的多层企业级应用模型将两层化模型中的不同层面切分成许多层。一个多层化应用能够为不同的每种服务提供一个独立的层。使得扩展性和重用性得到大大的提高。

2.        JavaEE架构

2.1.        JavaEE架构图

2.2.        JavaEE架构理解

       (1)Client tier客户层,运行在客户端机器上。客户层普遍地支持HTTP协议,也称客户代理。具体表现为Java  Applet程序、Java桌面程序、浏览器等。

    (2)WEB tier WEB应用层,运行在JavaEE服务器上。在JavaEE中,这一层由WEB 容器运行,它包括JSP, SERVLET等WEB部件。这里的WEB容器具体表现为Tomcat等。

    (3)EJB tier 企业组件层,运行在JavaEE服务器上。企业组件层由EJB容器运行,支持EJB等服务和技术。这里的EJB容器具体表现为JBoss等

    (4)EIS tier 企业信息系统(Enterprise information system)层,运行在EIS服务器上。企业信息系统包含企业内传统信息系统如财务,CRM等,特点是有数据库系统的支持。一般中小型系统直接表现为数据库系统。

        JavaEE的整个应用程序是由组件构成的,JavaEE组件是具有独立功能的软件单元。JavaEE的四层模型的每一层都也是对相近功能的组件的封装。下面对这个架构图谈谈个人的理解:

(1)       在C/S架构的客户层、Applet为表现形式的客户层、Web层、EJB层都可能需要J2SE支持。

(2)       在C/S架构的客户层、Web层、EJB层可以调用JavaEE的基本组件和服务,比如JTA、JPA、JNDI、JMS等等。

(3)       如果是C/S架构,那么客户层直接和EJB层或者直接和企业信息系统(最典型的是DB)交互(当然这种直接和DB交互的架构也无所谓分层了),当然这里的EJB层也可以不部署EJB容器,直接为Java服务端,这也是最原始、简单的C/S应用模式。

(4)       如果是B/S架构,那么客户层直接Web层交互,Web层又可以和EJB层交互。

2.3.        JavaEE架构与分层的Web结构

三层结构:在C/S或B/S架构的应用中,为了提供程序的可扩展性,一般需要将表示与业务逻辑分离,业务逻辑和数据处理分离,因此一般分为三层结构:表示层业务逻辑层数据访问层(数据持久)。在java开发过程中一般 将对应的packet分别命名为ui(view),business(service),dao。

MVC模式:然而在B/S的Web程序中(其实C/S的应用程序也是如此),为了进步提高可扩展性、复用性,真正实现表示层和业务逻辑层的分离,一般使用MVC设计模式,将表示层业务逻辑层分为:视图(View)控制(Control)模型(Model)(有人将表示层和业务逻辑层之间的这部分形象的称为灰色地带)。MVC其实是一种设计思想,这种思想强调实现模型(Model)、视图(View)和控制器(Control)的分离。这种思想是如何作用于Web就是在Web开发中引入MVC思想,想要达到的目的是: 实现表示层(UI)和业务逻辑层分离——控制器是为了实现上述目的而存在的!基于这中设计思想的典型框架就是Spring、Strucs框架MVC部分。或许我们会发现,在数据访问层通过持久化技术解决后,我们所说的UI层和MVC中的View是一回事,我们的所说的业务逻辑层和MVC中的Model指的是一回事。MVC提供了让模型和视图相分离的思路——引入控制器。我们把页面跳转关系管理、表单数据的封装及验证、国际化等任务交给控制器处理。因此,也不难理解为什么流行的MVC框架都具有管理页面跳转关系、表单数据的封装及验证、国际化等特性。

对应关系:因此,分层的Web架构和具体组件对应如下:

1)        表示层:Struts-MVC、Spring-MVC、ActionServlet、Struts-Action、JSP、XML、JS等

2)        业务逻辑层:Spring-Ioc、Spring-Transaction等

3)        数据持久层:Hibernate、连接池、JDBC等

Java Web架构:根据技术的发展,Java的Web架构可以有如下选择

1)        JSP(原始社会UI和业务逻辑处理都在里面) 

2)        JSP+JavaBean(UI和业务逻辑相对分离,但是分离不够明显)

3)        JSP+JavaBean+Servlet(使用Servlet进行跳转和事件的分发,逻辑进一步清晰)

4)        JSP+JavaBean+Struts(Struts提供了一个框架处理跳转等等)

5)        JSP+JavaBean+Struts+hibernate(由JDBC改为hibernate持久化)

6)        JSP+JavaBean+Spring(Spring提供了一个框架处理跳转等等)

7)        JSP+JavaBean+ Spring +hibernate(由JDBC改为hibernate持久化)

8)        JSP+JavaBean+ Struts+Spring(Struts处理表示层和相关控制,Spring专门处理业务逻辑)

9)        JSP+JavaBean+ Struts+Spring+Hibernate(Struts处理表示层和相关控制,Spring专门处理业务逻辑,Hibernate负责持久化)

10)     上面的框架中可以使用JS或者JS框架来处理负责的表示层逻辑处理。

注意,这里struts包含了struts1.0和struts2.0,这两字是有差异的。

JavaEE架构和分层的Web结构关系:至于上面的的分层结构和JavaEE的分层关系应该比较清楚了。如果B/S架构中没有EJB这一层,那么上面的分层结构应该都可以部署在JavaEE的Web层,当然如果需要EJB这层,那么业务处理和持久化也可以部署在EJB这层。

 

 

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:10385次
    • 积分:290
    • 等级:
    • 排名:千里之外
    • 原创:18篇
    • 转载:11篇
    • 译文:0篇
    • 评论:1条
    文章存档
    最新评论