【PHP开源代码栏目提醒】:网学会员,鉴于大家对PHP开源代码十分关注,论文会员在此为大家搜集整理了“高校信息系统建设中的兼容性和可移植性策略研究 - 会议论文”一文,供大家参考学习!
中国高等教育学会教育信息化分会第九次学术年会论义集 ·l 88· 高校信息系统建设中的兼容性和可移植性策略 研究 高瑶,张计龙,高峰,宓泳 (复旦大学,上海,200433>摘要:本文主要讨论了在高校信息系统建设中的兼容性和町移植性策略,文章从操作系统、数据库、应用服务器、业务流程等儿个方面就这个问题进行了探讨,并结合复旦大学虚拟校园系统实例进行了分析和实践。
关键词:兼容性;可移植性;Hibernate:Spring1前言 近几年来,随着全球信息化技术的突飞猛进,信息技术已经广泛应用到社会的各个领域,中国高校信息化建设也随之逐步深入。
许多高校在信息系统建设方面投入了大量的人力物力,进行各种信息系统的建设以服务于高校的日常教学、科研、管理等领域。
常见的系统有oA系统、人事系统、学工系统、图书馆系统、教务系统等等,这些系统在绝大多数的高校中都有类似的需求。
如今,在这些系统的开发中,各个高校重复投入的人力、财力、物力都很大,如果一个高校开发出来的系统可以较为方便地移植到其他高校继续使用,那将减少大量的浪费,同时也能帮助缺乏条件的高校尽快完成初步的信息化。
然而,根据我们的实践经验,由于操作系统、数据库、应用服务器、工作流程等多方面的情况不同,要移植一个系统的工作量还是非常巨大的,如图l所示,存在大量不能完全互相兼容的环境因素。
在移植中所出现的种种问题,除了各个高校在工作流程方面存在差异这一点很难完全避免外,其他几个方面的问题都是可以在设计之初,通过精细设计来避免的。
qp务漉程 艨j}J服务器 数褥席 Apache.1lS。
Tomcat,JBo辐,Webaphere,GlassFish DB2,Oracle.SOL Server,MySQL… 掇纷系统 Wmdowso Linttx,Sularis.。
图1应用系统移植中常见的兼容性问题原因 在本文中所讨论的兼容性是针对高校的信息化应用而言的,主要是指应用程序是否可以在不经修改的情况下,在不同的部署环境中都能够正常运行并得到相同的结果。
同样,本文所讨论的可移植性同样也是针对高校信息化应用而言,主要是指将某个系统部署到另一个环境中的容易程度。
在很多情况下,这两个属性是紧密联系的,兼容性出色的应用一般可移植性也好;可移植性差的程序一般也不会有优秀的兼容性。
针对高校信息系统建设中的兼容性和可移植性策略问题,本文以复旦大学新版本的虚拟校园系统的设计为例,从操作系统、数据库、应用服务器、工作流程等几个方面分别进行分析,并提供一个便于移植的实现方案。
虚拟校园系统是一个网上虚拟社区体系结构的实现,主要包括网络课程、虚拟班级等网上信息发布、交流平台等。
面向的对织目前为全校的所有本科生和教师。
通过设计时的剧密考 中国高等教育学会教育信息化分会第九次学术年会
论文集 ·189·虑,以及实现中采用了Hibernate、Spring等技术较好解决了兼容性问题。
自2004年投入运行以来,复旦大学虚拟校园系统已经开设了1900多门
课程(并以每年250f2左右的速度递增),全校所有的教师学生均可使用。
在该系统的建设中,开发人员充分考虑了系统的兼容性和可移植性的策略,使仅需对系统进行少量个性化配置即可适用大部分高校需求。
2高校信息化建设中常见的兼容性、可移植性问题 对于高校信息化的建设,常见的兼容性、可移植性问题主要有以下三种情况: (1)操作系统级别的兼容性、可移植性问题 对于一般的高校信息化应用,通常使用的操作系统是Windows或者类Unix系统(包括Unix,LinUX,Solaris等)。
Windows和类Unix系统中的可执行程序通常都不能直接在另一个操作系统中直接运行。
(2)数据库级别的兼容性、可移植性问题 数据库的结构查询语句(SOL)是现在最为广泛使用的数据库操作手段。
虽然在历史上SOL早已形成了一系列的标准,例女nSQL-86,SQL-92等一系列ANSI和ISO标准。
但是,如果要在不同数据库直接进行系统迁移,几乎不可能在不更改SOL语句的方式完成。
其中的原因有很多,例如标准不是强制性的;各个数据库厂商为了保证产品的向后兼容而放弃完全符合标准;SQL标准本身也有一些未明确定义的地方。
例如
常用的Oracle数据库中,空字符串(长度为0的字符串)和空值(Nul 1)是等价的;而在其它数据库产品中,这两者一般是不等价的。
(3)应用服务器级别的兼容性、可移植性问题 由于各种原因,对于有些应用来说,不存在这个问题。
例如基于ASP和.NET的应用,基本上都会使用微软的IIS。
而对于如今常见的基于Java的应用
系统开发,由于其特有的开放性,存在着多种可供选择的应用服务器。
虽然JCP标准已经对JavaEE应用服务器进行了严格的规范定义,但是各个应用服务器生产厂商都会在自己的应用服务器中加入一些自己的特性和特殊的配置文件,例如在IBM Webspheren艮务器中部署时所需要的geronimo—web.xml文件。
以上是技术层面影响系统兼容性和可移植性得主要的三个方面
问题,其他方面的兼容性、可移植性问题还包括业务流程的可移植性等。
例如如何使得应用在不同的业务流程环境下,保持一定的可移植性。
这一点更严格一点来说应该是功能的可配置性,就是在设计中充分考虑模块的可插拔性,使得在部署应用时能够根据不同的环境需要对应用系统的工作流程进行微调。
3主要的针对兼容性、可移植性的解决方案 对于不同级别的兼容性问题,有着各种各样的解决方案,以下我们对这些解决方案分类进行讨论和分析3.1操作系统级别的兼容性、可移植性解决
方案 基于操作系统级别的兼容性、可移植性问题的解决方案主要有以下三种解决方法: (1)采用源
代码级兼容性 例如使用ANSI C语言编写系统,并在相应的源
代码中使用IFDEF等预编译命令保证系统在不同操作系统下的兼容性。
这种方法的缺点在于
代码兼容级别是源
代码级兼容,所以每当系统要部署到其它环境中时,可能需要重新编译源
代码。
此外,由于C语言的抽象层次较低,所以现在一般使用C语言来编写较为底层的
代码。
而常见的C/S或B/S系统则很少有使用C语言开发的。
(2)采用解释型的脚本语言 例如使用PHP,Perl等语言编写系统,由于这些语言本身就具有解释执行的特点,所以可以做到在不同操作系统之间的兼容性。
但由于解释型语言的特性,其处理速度相对较慢,不适用于性能要求较高、数据吞吐量较大、I/O操作较多的计算应用中。
另外,这些脚本语言的语法结构非常灵活,适用于需要进行快速开发的环境中:但对于那些结构化要求较高、需要进行I才|队协作开发的系统来说, 中国高等敦育学会敦育信息化分会第几次学术年会
论文集 ·190·会带来一定麻烦。
同时,目前国内高校很少有开设相关课程的,对于新开发者需要进行一定量的培训
工作。
(3)使用基于虚拟机的语言 例如使用Java语言编写系统。
这类编程语言基于虚拟机的概念,通过虚拟机来完成
代码在不同操作系统级别中的兼容性。
在编写
代码到执行的过程中,
代码先是编译成为独立于各个操作系统平台的字节码(bytecode),然后再以类似解释型的方式在虚拟机中执行。
这样,除了在编译环节稍稍耗时外,兼顾了编译型和解释型的优点。
更为重要的是,有大量已经开发成熟的Java类库可以在
网络上免费下载、使用,可以大大提高开发人员的工作效率。
而且,这些软件类库多数都带有源
代码,在必要的时候开发人员可以直接修改这些源
代码来提高系统的性能和安全性。
3.2数据库级别的兼容性、可移植性解决方案 当前解决数据库级别的兼容性、可移植性问题主要通过适用最d、SQL通用语言集和使用数据库抽象层来解决: (1)使用最d’SOL通用语言集 虽然各个数据库厂商产品之间的SQL语言有许多差异,但是还是存在一些最基本的语句是可以通用的。
如果在开发应用系统时,只采用这些最基本的SQL语句。
采用这个方案固然解决了数据库之间的兼容性问题,但同时也放弃了使用各个版本数据库的优秀特性,有的甚至是SQL标准中所描述的特性(并不是所有的数据库都实现了完整的SQL标准,更多的只是部分实现)。
(2)使用数据库抽象层 在数据库操作中加入一个抽象层,提供一个统一的接口给应用系统调用,绕开特定数据库的特定功能。
由于我们在开发时已经选用了Java语言作为开发语言,于是我们选用了
免费开源的Hibernate框架作为数据库封装层;如果使用.NET进行系统开发的,也可以选用ltibernate的姊妹产品NHibernate。
3.3应用服务器级别的兼容性、可移植性方案 由于不同的应用服务器其配置文件等都有所不同,管理方法也不同,目前只能在开发过程中完全依照JCP标准,并在具体部署时针对每个应用服务器都适当编写配置文件一种办法。
3.4其他方面的兼容性、可移植性问题 对于业务流程而言,在应用系统的开发过程中,应当对于各个业务模块进行可灵活配置的开发。
如此,便可以仅在少量修改配置文件的情况下大大改善业务流程方面的可移植性。
4复旦大学虚拟校园系统在兼容性、可移植性方面的探索4.1操作系统级别 基于此前的讨论,我们在
设计中选择TJava作为开发语言,这样就可以不用考虑操作系统直接的移植性,因为Java的虚拟机版本几乎涵盖了所有的常见平台。
同时,基于Java的一系列成熟的应用框架和
软件包也为我们的开发提供了很大的便利。
4.2数据库级别的兼容性 基于此前的讨论,我们在实践中采用了Hibernate框架来保证数据库层次的兼容性。
Hibernate的原理是将各种具体的数据库产品进行统一封装,提供给开发者一个统一的
程序接口,使得开发者可以专注于业务逻辑,而不用考虑具体使用的数据库,所起的作用如图2所示。
比如,Hibernate提供了一种数据库
查询语言HQL,这是一种和SQL语言基本类似的语言,但在语法规范上比SQL严格很多。
Hibernate提供了将HQL语句自动翻译成各种不同数据库下恰当SQL语句的方法。
这种方法与此前提到的使用最基本SOL语言方式不同,由于HQI在进行翻译执行时,能够通过配置文件得到目标数据库的相关信息,所以在翻译时,Hibernate将根据这些数据库的特性进行合适的转换。
例如,同样是数据表的自增长ID字段,对于DB2数据库,Hibernate将会使用普通的自增长字段:而对于Oracle数据库,I{ibernate就会使用更符合Oracle使用爿惯的Sequence。
中国高等教育学会教育信息化分会篇九次学术年会
论文集 ·19l· 图2 Hi bernate在应用系统中所处的位置 此外,Hibernate在提供统一数据库接口的同时,也提供了将二维结构化的数据库表数据根据定义转化为程序语言中对象的手段,可以减少程序员不少的工作量。
在我们的开发过程中,使用TgySQL数据库,于是在Hibernate的配置文件中这样定义: <property name=”hibernate.dialect”>org.hibernate.dialect.MySQLDialect</property> 当系统在正式环境中运行时使用了DB2数据库,只需将这一行配置换成 <property name=”hibernate.dialect”>org.hibernate.dialect.DB2Dialect</property> 然后,通过Hiberante提供的Ant脚本运行一次建表语句,就可以做到数据库层次的兼容性了。
同样的问题,如果我们不采用Hibernate进行管理的话,就需要对每一种可能用到的数据库产品维护一个SQL语句集,这将产生大量的额外工作。
4.3应用服务器级别的兼容性 鉴于目前多数的JavaEE应用服务器的JSP/Servlet容器都采用了ApacheTomcat。
所以,只要在应用中只使用〕avaEE框架中的JSP/Servlet部分,而不使用EJB之类的功能,就可以在很大程度上避免因为应用服务器提供了不同程度的JavaEE实现所带来的移植性困难。
而目前,业界对于JavaEE,尤其是EJB存在的必要性存在一定的质疑,认为EJB过于复杂,对于多数常见应用并没有足够的优势。
以Spring为代表的轻量级JavaEE框架也逐步被人们所接受。
因此,在我们的设计中,我们采用了最为普通的Apache Tomcat服务器作为开发环境,只使用Servlet/JSP或基于Servlet/JSP等基础JavaEE组件(实际开发中,我们还使用了Struts,同时由于Tomcat的开发也越来越成熟,使用JSF也不会有什么问题)。
同时,以多个种类的JavaEEn艮务器作为测试平台,确保在应用服务器这一层的兼容性。
5其他方面的兼容性问题5.1文件路径的兼容性 除了以上提到的几点兼容性问题以外,还有一些配置方面的兼容性需要考虑。
例如,Windows和类Unix系统下的路径名称是很不一样的。
在我们所开发的复旦大学虚拟校园系统中,由于牵涉到一系列储藏室的概念,需要在服务器端以文件夹形式储存大量的用户文件。
为了程序的灵活性,我们将这个服务器端的储存位置以Spring配置文件的方式保存起来。
并在服务启动时读取这个配置,使得系统在不同的环境下,只需修改一个配置文件中的一项即可达到管理文件存放根路径位置的目的。
5.2业务流程方面的兼容性 例如,在复旦大学虚拟校园的业务流程中,虚拟校园系统本身并不存有任何用户的密码信息,所 中国.白等敦育学会教育信息化分会第九次学术年会
论文集有的用户认证都由复旦大学统一身份认证系统(UIS)来进行管理,具体实现有Sun的IDS提供。
这样做可以实现单点登录功能,但并不是所有的高校都会采用UIS系统来进行用户的密码统一管理。
对于信息化建设还相对薄弱的学校,更多情况下还是使用数据库来进行用户密码管理。
所以,我们在设计系统时,将认证方式作为一个独立的配置参数由Spring框架进行管理。
除此之外,系统中还有很多其他的模块配置参数来调整系统的模块特性。
针对认证方式的兼容性,我们在数据库设计时,保留了用于密码的字段(实际存放的是密码的MD5散列值以保证安全性)。
在基于Spring的配置文件中,有这样一个参数设置: (property name=4 val idateType。
value=4 ids“b 这个设置说明采用了ids进行权限认证,如果要采用数据库方式进行认证,则只需要将这个值改为database即可。
6总结 通过以上的分析,我们可以看到要构建一个兼容性和可移植性俱佳的应用系统,需要多方面细致的考虑。
我们在这里所列出的也只是我们在实际工作中所设计到的一部分,也是许多高校在信息化建设中可能遇到的一些问题。
如果我们在兼容性和可移植性方面投入更多的经历,也就必将减少大量的重复建设,为中国的高校信息化建设节省出更多的资源。
参考文献〔1〕张计龙,张成洪。
复旦人学信息化校园建设规划及实施要点分析,教育信息化10 12一14。
〔2〕B.Christian,K.Gavin,Hibernate实战(第2版),人民邮电出版社。
2008年4月。
〔3〕http://www.hibernate.org。
〔4〕http://踟.springframework.org。