J2EE多层模型研究

时间:2022-04-13 03:21:35

J2EE多层模型研究

摘 要:J2EE为搭建分布式系统提供了良好的整套机制。典型的J2EE结构的应用程序包括四层:客户层、表示逻辑层、业务逻辑层和企业信息系统层,每一层多有核心技术对其开发提供支持,比如Servlets、EJB、JDBC、JNDI、Java RMI等。MVC设计模式是目前最流行的J2EE开发模式,而Struts技术已经成为实现该模式的最流行框架方案。

关键词:多层体系结构; J2EE; MVC; Struts

DOI:10.16640/ki.37-1222/t.2017.04.184

0 引言

针对传统的客户机/服务器体系结构的种种缺点,计算机科学家提出了三层或多层分布式系统模型[1]。随着不断改进和发展,多层分布式系统逐渐形成了三种具有代表性的主流技术,即CORBA、COM/DCOM和J2EE(Java2 Platform Enterprise Edition)。J2EE为搭建具有可伸缩性、灵活性、易维护性的分布式系统提供了良好的整套机制。

1 多层体系结构模型

三层架构就是将整个系统业务应用划分为三个层次,即:客户层、业务逻辑层、数据访问层。业务逻辑层又可由多个子层组成,具体要看系统的复杂程度。这样就形成了多层分布式体系结构,分布性可以体现在软件上,也可以是硬件,具体模型如图1所示。

多层体系结构模型将表示和业务处理分开,缩减了客户端的规模,又将相关业务和资源分开,降低了服务器的负载,避免了服务器的性能缺陷对整个系统性能的影响。这种在多个服务器上分布应用程序处理的多层可变结构比二层体系结构的伸缩性和扩展性有了很大加强。同时多层体系结构解决了客户机/服务器结构的维护成本问题,改善客户机/服务器结构延展性问题。客户机/服务器结构支持的用户人数有一定限额,这种结构限制了internet/intranet及电子商务的发展。

2 J2EE多层模型

为实现企业级分布式应用,J2EE定义了丰富的技术标准、符合标准的开发工具和API为开发企业级应用提供技术支持,这些技术涵盖数据库访问、分布式通信和安全等。

2.1 J2EE多层模型介绍

J2EE是一个基于Java的适合服务器端的、结合了Java Enterprise API的完整的企业级应用系统开发平台或中间件体系结构,它通过提供一组应用组件和运行时环境来构造可伸缩的企业应用。典型的J2EE结构的应用程序包括四层:客户层、表示逻辑层、业务逻辑层和数据访问层,如图2所示[2]。

客户端层用来实现企业级应用系统的操作界面和显示层。表示逻辑层由web服务器和web组件组成。web组件包括JSP页面和servlets。表示逻辑层也可以包括一些JavaBeans,这一层主要用来处理客户请求,调用相应的逻辑模块,并把结果以动态网页的形式返回到客户端。业务逻辑层也叫ejb层或应用层,由ejb服务器和ejb组件组成,用来实现企业级信息系统的业务逻辑,这是企业级应用的核心。ejb要运行在容器中,容器解决了底层的问题,如事务处理、状态管理、多线程、安全管理、资源池等。表示逻辑层和业务逻辑层也可以合称中间层。数据访问层处理企业系统软件,包括企业基础系统、数据库系统及其它遗留的系统。

2.2 J2EE核心技术

在J2EE中,开发者可以用来实现多层结构的核心技术应该包括Servlets、EJB、JDBC、JNDI、Java RMI等[3]。

Java Servlet是一项服务器端技术,它接收来自Web浏览器的HTTP请求并返回HTTP响应。首先,请求被提交给Servlet引擎,然后Servlet引擎执行适当的Servlet,访问响应对象,并向客户端返回一个响应。

ejb定义了如何编写服务器端M件,并为服务器端组件和管理这些组件的应用服务器之间提供了标准协议,开发者可以利用这些组件象搭积木一样建立自己的分布式应用程序。ejb并不是一个单独的文件,它由一些类、接口、描述文件和其它一些资源文件组成。ejb组件有三种类型:会话Bean、实体Bean、消息驱动Bean。会话Bean用于管理实体Bean和其它会话Bean的交互、访问资源,通常代表客户机执行任务。实体Bean用于表示数据库中的数据,向JDBC或其它一些后端API经常访问的数据提供了一个面向对象的接口。消息驱动Bean响应JMS消息。

JDBC是Java程序与数据库通信的标准API,使Java开发者能够用纯Java API编写数据库应用程序。和ODBC一样,JDBC为开发人员隐藏了不同数据库的不同特性。另外,由于JDBC建立在Java的基础上,因此还提供了数据库存取的平立性。

JNDI是Java对对象名字和目录服务的“中央注册表”,管理着对构建分布式应用程序所需的核心组件的引用。当创建访问远程对象的应用程序时,JNDI以查找返回该对象地址的方式提供对该对象的引用。应用程序首先在WebLogic Server部署中需要的对象,而WebLogic Server服务将返回应用程序访问该对象时所需要的一切属性。

远程方法调用(Remote Method Invocation, RMI)大大增强了Java开发分布式应用的能力,支持存储于不同地址空间的程序级对象之间彼此进行通信,实现远程对象之间的无缝调用。RMI目前使用Java远程消息交换协议JRMP进行通信,JRMP是专为Java调用远程对象制定的协议。因此,Java RMI具有Java的“Write Once, Run Anywhere”的优点,用Java RMI开发的应用系统可以部署在任何支持Java运行环境的平台上。但由于JRMP是专为Java对象制定的,因此,RMI对于用非Java语言开发的应用系统支持不足,不能与用非Java语言编写的对象进行通信,其实也可以把它看作是RPC的Java版本。

3 MVC在J2EE中的应用

J2EE能使遵从这个规定的开发者得到行业的广泛支持,使企业级应用的开发变得简单、快速。然而在实际的开发过程中,设计者往往忽略了Java语言面向对象的特性,模糊了web系统三层之间的界限,从而使整个系统貌似神离,不能获得预期地优越的性能。这就要对J2EE开发模式的理论进行探讨,目前最流行的就是MVC(Model/View/Controller)设计模式,structs、spring、hibernate、JSF等则是实现MVC模式最流行的框架方案[4]。

设计模式就是软件人员在面向对象软件设计中经多次验证的成功解的记录与提炼,是在特定上下文情形下解决一般设计问题的类和相互通信对象的描述,是针对问题和解的抽象,是对一系列具有共性的问题的完整的解决方案。设计模式有效地避免了设计损害了系统的复用性,是可复用面向对象软件的基础。MVC是一个强大的模型,基于功能清楚地分开了代码,修改在某一层上的应用程序不会影响到其它层。代码分布到多个逻辑层和物理层执行,每一层对应于一个特定的应用程序功能,它们之间使用定义明确的、可判定的方式进行通信。通过响应用户和程序输入,在层与层之间传递信号和数据来完成应用程序的功能。

MVC设计模式具有设计清晰、易于扩展、运用可分布的特点,因此在构建Web应用中具有显著的优势。MVC可适用于多用户的、可扩展的、可维护的、具有很高交互性的系统,如电子商务平台、CRM系统和ERP系统等。MVC可以很好的表达用户与系统的交互,可以很方便的用多个视图来显示多种数据,从而可以使系统能方便的支持其它新的客户端类型,如PDA、WAP等。MVC的另一个好处就是将开发团队依照专业技术方向分开。这样,GUI设计专家可以在视图层工作,负责具体功能开发的领域专家在控制层工作,数据库专家在模型层工作。这种明确分工可有效提高开发团队所有成员的效率,从而提高整个开发团队的生产能力。

MVC在J2EE下开发已经成为了开发的主流模式。目前实现MVC模式比较好的框架有structs、spring、hibernate、JSF等。这些框架都提供了很好的层次分隔功能,其中Struts技术是构建J2EE分布式程序的最流行框架方案。

Struts的开发模型分model 1和model 2两种。model 1模式在进行快速和小规模的应用开发时是具有非常大的优势,但是从工程化的角度考虑,它也有一些不足之处,主要在于不方便应用扩展,以及不利于应用系统业务的复用。大型web应用必须采用不同的Model 2设计模式。Model 2是基于MVC模式的框架,"Model"代表的是应用的业务逻辑(通过JavaBean、ejb组件实现),"View"是应用的表示层(由JSP页面产生),"Controller"是提供应用的处理过程控制(一般是Servlet)。这种设计模型把应用逻辑、处理过程和显示逻辑分成不同的组件实现,这些组件可以进行交互和复用。Model 2具有组件化的优点,从而更有利于大规模系统的开发和管理。Struts是一组相互f作的类、Servlet和JSP标记,它们组成一个可复用的Model 2设计。这个定义表示Struts是一个框架,而不是一个库。但Struts也包含了丰富的标记库和独立于该框架工作的实用程序类库。Struts利用taglib获得可重用代码和抽象Java代码,利用Action Servlet配合Struts-config.xml实现对整个系统的导航。Struts增强了开发人员对系统的整体把握,提高了系统的可维护性和可扩充性。

4 结束语

J2EE为搭建多层分布式系统提供了良好的整套机制,包括了J2EE的相关实现技术和应用开发的一般过程。通过多个具体项目的应用研究,开发者可以逐步完善该体系结构,逐步积累各层次的组件,直至最后建立J2EE业务组件库,从而达到提高研发分布式系统的能力、效率和规范软件的研发过程。

参考文献:

[1]梁维海.三层体系结构无关性的研究及实现[D].四川:成都理工大学,2004:1-4.

[2]闫|,郭D.基于Eclipse开发环境的J2EE编程技术[J].河北:唐山职业技术学院学报,2008,6(04):45-46.

[3]王仕超.基于JAVA的MVC模型框架研究[D].江苏:南京理工大学,2003:11-16.

[4]陆荣幸,郁洲,阮永良,王志强.J2EE平台上MVC设计模式的研究与实现[J].四川:计算机应用研究,2003(03):144-146.

作者简介:贾素来(1979-),男,江苏泰州人,硕士研究生,讲师,研究方向:软件工程,信息系统设计。

上一篇:实训工厂模式的现代学徒制实践与认识 下一篇:地方应用型高校教师实践教学能力的现状和原因...