基于J2EE的数字校园系统架构解决方案
摘 要:
数字化校园建设已经成为目前高等院校发展信息化建设的一个重要目标,如何构建一个稳定、灵活、安全的数字校园系统是一项核心的工作。本文针对此问题,提出了一个基于J2EE的数字校园系统架构解决方案。
关键词:数字校园,J2EE,MVC,系统架构,设计模式
1.引言
教育信息化是当前我国高校教学改革的一项重要内容,在教育信息化进程中,大学数字校园建设已受到各个学校的高度重视。
数字校园是以网络为基础,利用先进的信息化手段和工具,实现从环境(包括设备、教室等)、资源(如图书、讲义、课件等)到活动(包括教、学、管理、服务、办公等)的全部数字化,在传统校园的基础上构建一个数字空间,以拓展现实校园的时间和空间维度,提升传统校园的效率,扩展传统校园的功能,最终实现教育过程的全面信息化,从而达到提高教育管理水平和效率的目的。
在数字校园系统建设中,最核心的内容是:应用支撑系统、信息服务系统和个性化门户,这三部分可以称之为大学资源计划(URP,University Resource Planning)。
URP是校园网上各种应用系统的集成,包括能够将这些应用系统集成的基础系统。可简单概括为:一个基础平台、一个门户和N个应用系统。一个基础平台(URP公共平台):解决信息服务多元化问题和应用系统之间的数据共享、一致性问题。一个门户(个性化门户):将应用集成起来,为用户提供单一访问点的个性化服务。N个应用系统:解决业务逻辑和信息服务的需求,是校园信息化建设的支撑。数字校园系统是一个业务繁杂,信息流量大,多层结构的企业级系统,系统架构的设计直接关系到以后系统的稳定性、安全性、可维护性和可扩展性,甚至关系到整个数字校园项目的成败。
2.J2EE框架与组件技术
J2EE(Java2 Platform Enterprise Edition)是SUN公司定义的一套开发分布式企业级应用的规范,它提供了一个多层分布式系统的开发模型和一系列技术规范的支持。基于J2EE可以简化许多与开发、部署和管理中相关的复杂问题,同时具有构件复用,一致的安全模型和灵活的事务控制,与平台无关性等优势。J2EE技术的核心是基于组件/容器的应用,根据所开发系统要实现的功能把应用逻辑分成多个层次,对每个层次提供相应的服务器和组件支持,容器间通过相关协议进行通讯,从而实现组件之间的相互调用,这样极大地方便了Internet/Intranet应用的开发。
一个典型的J2EE平台包括了一个或多个容器。J2EE容器是一个用来管理应用程序组件,提供访问J2EE API的运行环境。图1展示了J2EE的体系结构,在这个结构里面有两个容器:一个Web容器,其中容纳Java Servlet和JSP组件;一个EJB容器,其中容纳各种企业级JavaBean组件(EJB)。因此,J2EE技术是目前满足企业级应用分布式系统需要的最好途径之一。
3.系统架构方案
结合数字校园系统的本身特点与J2EE 组件化的体系结构,设计了一套使用闭合层方法的多层体系架构方案,如图2 所示。之所以说是个闭合层方法,是因为每层只能直接与相邻层交流。表示层只能与业务层交流,业务层只能与表示层和数据层交流,只有数据层才能访问所有企业数据源。如此一来,各层的改变将不会导致跨层影响,便于系统的维护和扩展。
另外在每一层的设计中,还采用了目前流行的J2EE 设计模式,设计模式可以帮助进行软件设计和更好地设计软件。
在系统架构方案中,将系统分为:表示层、业务层和数据持久层。表示层主要用来处理客户请求,调用相应的逻辑模块,并把结果以动态网页的形式返回到客户端,可采用的Web组件包括JSP、Servlets。业务层主要用来实现应用系统具体的业务逻辑,这是系统应用的核心,可采用调用EJB组件来实现。数据持久层主要包括数据库系统、事务处理等系统。
3.1 表示层
设计Web应用程序的一个难点是创建结构合理的整洁的瘦客户机层,难点在于组合正确的外观和行为,同时包装表示逻辑,不把任何业务逻辑放到这一层中,并创建易于阅读和易于维护的代码。
模型视图控制器(MVC ,Model View Controller)模式是第一个分开表示逻辑与业务逻辑的设计模式。MVC引入视图(表示层)、模型(数据)和协调两者的控制器。模型保存了数据,视图获得数据并产生一个动态的显示,而控制器向模型和视图提供逻辑处理层和授权。
随着J2EE设计模式的引入,程序设计人员可以选择各种方案,解决多个问题。这里采用基于MVC思想的Service-to-Worker设计模式,此模式将两个子模式汇编成一个微框架,即Front Controller与View Helper,其参与者是控制器、派遣器、视图和帮助器的组合。图3表示了Service-to-Worker设计模式的结构。
将这些模式汇编成可行框架可以充分利用每个模式的长处。Service-to-Worker设计模式集中控制并在中央位置放上多个请求的系统服务与业务逻辑,从而提高模块化和复用性,并把视图中的非表示逻辑分离到帮助类中,分开模型与视图。
3.2 业务层
在软件系统中,业务逻辑层是一个非常复杂的部分,这里采用Business Delegate模式和Session fa?ade模式来实现。
3.2.1 Business Delegate模式
作为多层、分布式企业级应用系统,必然需要远程方法调用来在层间发送和接收数据,如果表示层和业务层直接进行交互,会很容易把业务服务API的底层实现细节暴露给表示层。结果会造成,当业务对象的实现发生变化时,在表示层中相应的代码也要同时进行改变。此外,表示层对业务层的调用一般都是网络级远程调用,如果没有一定的缓冲机制,性能的开销也是相当大的。为此,在表示层和业务层之间插入一个代理对象,这样表示层就可以不需要知道业务对象本身。Business Delegate模式实现了这样一种更高级别的分离。这里举专业教学计划管理代理为例来说明Business Delegate执行过程,如图4所示。
3.2.2 Session fa?ade模式
Business Delegate模式仅仅解决了表示层与业务层的交互的分离,在数字校园系统业务繁杂的情况下,如果没有一个很好的客户访问策略,缺乏对业务对象EJB的管理,多次调用业务对象同样会造成巨大网络开销。如果把这种对业务对象的多次调用交互移到服务器上,采用本地的调用,从而有效避免了多个网络调用。Session Fa?ade模式可以解决这个问题, Session Fa?ade管理业务对象,并且向客户端提供统一的粗粒度服务访问层,向客户端隐藏了后台的复杂交互活动。比如在数字校园系统中的教学运行管理就涉及到教学计划大纲、专业教学计划、教师信息、教室信息、学生信息等业务对象,设计时只需一个教学运行管理的Fa?ade粗粒度地提供给客户端,而内部的那些业务对象的交互由这个Fa?ade来调用和管理,做到业务对客户端的真正透明性。
3.3 数据持久层
目前,人们都十分重视表示层与业务层的分离。却很少考虑用正规的数据持久性框架建立数据层,这直接导致系统长期维护的巨大成本。这里采用DAO模式、值对象模式和Service Locator模式来实现数据持久层。
3.3.1 Data Access Object模式
DAO模式在业务逻辑与持久性逻辑组件之间使用Java接口的一个抽象层,这些接口的实现处理持久性逻辑。由于当底层数据源实现变化时,DAO向客户端提供的接口不会变化,所以该模式允许DAO调整到不同的存储模式,而不会影响其客户端或业务组件。图5说明了DAO模式是怎样向业务层隐藏后台数据存取的。从图中可以看到业务层调用一个实现DAOInterface接口的DAO,而DAO既可以通过JDBC访问RDBMS也可以通过实体组件层来访问RDBMS。
3.3.2 Value Object模式
在数字校园系统中,对业务对象的每个方法调用一般都是远程的。因此,在EJB应用程序中这就需要用到网络服务,而不关心客户端与企业bean的直接交互,这样就会带来一定的网络负载。即使调用企业bean的客户端和企业bean运行在同一个容器JVM中,这些企业bean方法的调用都将会遍及整个系统的网络层。此时,可能会想到绕过网络或者采用更直接的方式来访问以降低网络负载。但只要是远程调用存在,随着远程方法调用逐渐增加,对单个属性值的get()或set()方法的调用都将使得性能急剧下降。Value Object模式可以减少网络开销,通过值对象可以填入用户请求的所有数据,然后把数值对象发送给调用程序。调用程序处理数值对象后可以获得其表示的实体数据。
3.3.3 Service Locator模式
在J2EE平台下,取得与EJB的交互和通过数据连接池取得数据源的连接都需要获得相应的JNDI(Java Naming Directory Interface)。创建JNDI初始环境和在EJB本地对象上执行查找都会占用大量的资源。如果多个客户端反复地请求相同的企业bean本地对象,这将会严重影响到系统的性能。Service Locator模式抽象后台的所有JNDI查找,这里使用Service Locator来读取EJBHome和数据源的连接。同时,在ServiceLocator中通过一个HashMap来缓存首次获得的EJBHome接口和数据源对象,以避免当客户端再次需要本地对象时重新进行JNDI查找。
3.4 系统安全性
由于Java本身是一种跨平台的安全型语言, 因此J2EE 在安全上可以得到满足, 这是J2EE 先天的优势, 其次由于前台门户系统采用单点登录技术, 这种技术不但能在不同的数据库上运行, 而且单点登录技术满足JAAS(Java Authentication Authorization Service)得到Java 验证和授权的API, 当用户登录时, 相关API的参数被传至Servlet 和EJB 层。远程Session EJBs 在EJB 层检查安全性和许可证, 使Session EJBs 不能在别处复制。本地Session EJBs将商业逻辑展示给其他的Session EJBs 而不必检查安全性, 因为他们不能被远程调用。也就是说在表示层和业务层都有相应的标准可实现基于角色的对资源的访问权限控制, 通过相应的容器配置, 可以方便的进行权限分配和控制, 将安全配置工作和安全执行工作分开, 防止不安全的操作。
4.结语
本文基于J2EE 技术, 给出了一个数字校园系统架构,将系统分为表示层、业务层和数据持久层,并分别在每一层中采用了J2EE设计模式,提高了软件设计效率和软件质量。随着J2EE技术的日臻成熟与新技术、架构的出现和日益完善, 基于Java的技术手段也越来越丰富,分布式应用系统的开发也越来越方便快捷。