论文部分内容阅读
摘要:在分析分布式体系结构及其特点的基础上,利用Delphi对CORBA技术及Web应用系统开发的支持,将CORBA技术应用于网络教学平台的开发,实现了分布式多层Web应用系统,提高系统的稳定性、延展性和执行效率,解决了大型Web应用系统中存在的负载瓶颈问题。
关键词:CORBA;Delphi;分布式Web应用系统
中图分类号:G434文献标识码:A文章编号:1009-3044(2008)36-3038-03
Applying CORBA Distributed Technique to the Network Teaching System Based on Web
LI Xin-xiao
(Department of Electronic and Computer Science, Guilin University of Technology, Guilin 541004, China)
Abstract: Based on the analysis of the distributed architecture and its characteristic, this paper presents the design and development of a network teaching web application system using CORBA technique which is supported by Delphi. By adopting distributed architecture, we can improve the stability, tractility and processing capability of the system, and also can solve the burden bottleneck problem in large web application systems.
Key words: CORBA; Delphi; distributed web application system
1 引言
随着网络技术的发展及计算机的普及应用,网络教学作为一种可以突破时间和地域限制的教学手段,对传统教学起到了较好的辅助教学效果,发挥了越来越重要的作用。在国内外,很多学校都建立了校园网,并开发远程教学平台,为师生提供教学资源发布、教学点播、交流互动、在线测试等服务。随着宽带网络的应用,对于运行在校园网之上的教学平台,网络速度已经不是影响教学平台使用的关键因素。随着网络教学平台提供服务的多样性、丰富性、功能复杂性的提高以及教学平台本身具有的终端用户数量庞大等特征,特别是教学系统向智能化发展后,增加了智能组卷、在线测试、测评结果分析、试卷质量分析、教案生成等应用服务,这些应用服务的实现涉及的数据量大、算法复杂,执行起来比较耗费资源。因而,应用服务器的性能与负载能力成了网络教学平台应用的瓶颈,当同时访问系统的用户量增加到一定规模,应用服务器超负载运行,教学系统的执行效率就开始明显的下降,甚至导致系统崩溃。所以需要使用更具延展性的分布式结构来克服服务器的瓶颈问题,将应用均衡分布在多台服务器上,实现负载均衡,提高系统的可靠性和保障系统的执行效率。
2 CORBA分布式技术概述
目前分布式体系结构使用的核心技术主要有三种:Microsoft 的COM/DCOM 技术、SUN 的EJB 技术和OMG的CORBA(Common Object Request Broker Architecture)。这三种分布式技术各有优缺点,但总体而言,在集成性、互操作性、开放性和成熟度方面,CORBA较优于其他两者。
CORBA是由OMG提出的应用软件体系结构和对象技术规范,其核心是一套标准的语言、接口和协议,以支持异构分布应用程序间的互操作性及獨立于平台和编程语言的对象重用。CORBA体系主要由ORB(Object Request Broker)、对象服务、公共设施、领域接口及应用对象等组成。其主要特点是:1) 引入中间件作为事务代理;2) 实现客户与服务对象的完全分开;3) 提供总线机制,使得软件只要符合接口规范的定义,均能够集成到分布式系统中;4) 采用面向对象的软件实现方法开发应用[1]。
Delphi支持CORBA标准,并为分布式应用程序开发提供了优良的环境,其Object Pascal的CORBA IDL 编译器还可以让Delphi的客户端应用程序和UNIX/Linux的CORBA服务器沟通[2]。Delphi提供了符合CORBA规范的产品VisiBroker,其实现了CORBA中的ORB核心技术,它包含了一些非常重要的应用程序,其中OsAgent提供CORBA对象搜索的功能;OAD提供了注册CORBA对象及自动地维护所有注册CORBA类别信息的功能;IREP维护接口库从而可以使用DLL的方式调用CORBA对象。这些应用程序提供了基本的CORBA支持机制,简化了CORBA多层分布式应用系统的开发[3]。
3 CORBA在网络教学平台中的应用
3.1 系统设计概述
运行在校园网上的网络教学平台采用支持CORBA分布式体系结构的Delphi工具开发。系统使用面向对象的方法进行分析和建模,利用Delphi提供的WebBroker和InternetExpress组件对网页动态功能和数据更新的支持,开发出Web应用模式的分布式网络教学平台系统。并将CORBA技术与多层架构相结合,使用CORBA对象封装业务逻辑及数据处理,分割表示逻辑、企业逻辑和数据逻辑,实现了客户端Web应用程序、应用程序服务器、数据库服务器的多层分布式体系结构。系统实现了教学资源发布、教学点播、知识库维护、教学交流、在线测试等一系列教学辅助功能。这里以教学点播子系统中的在线测试模块的实现过程来说明采用CORBA技术开发分布式Web应用系统的方法。
3.2 系统结构
基于Web的分布式网络教学平台系统结构如图1所示。
图2 用户选择测试知识点请求试卷生成页面
图3 在线测试模块组件图
数据库服务器:使用SQL SERVER 2005构建,主要接受应用服务器的数据查询和数据操作请求,并将数据查询或操作结果返回给应用服务器。
CORBA应用服务器:主要实现系统中的各种业务逻辑,将组卷算法、知识搜索、试卷评分及一些数据查询、数据操作的公共数据处理封装成企业对象,在应用服务器上发布,由客户端应用程序即Web应用程序进行调用。
客户端应用程序(Web服务器):主要接受客户机的HTTP请求,并根据请求实现Web页面上的动态的数据显示,调用应用服务器的CORBA对象完成业务处理,对操作流程进行控制和对错误信息进行判别等。
客户机:即用户使用浏览器,对Web服务器的页面进行浏览或输入数据,使用系统功能。
整个系统的运行处理过程为:由用户在远程从Web页面上发出请求,触发客户端Web应用程序的Action事件,Action先在应用程序客户端进行必要的数据处理,然后根据用户的具体请求,通过Smart Agent与服务器端对象通讯,把处理的要求和相应的数据提交到服务器端,服务器端完成用户请求后,把处理的结果反馈回Web服务器,最后,再把Web应用程序处理的结果页面回传给客户机。
3.3 CORBA应用服务器开发
创建Application应用程序,加入CORBA数据模块,在数据模块中加入TDatabase 控件,用于链接SQL Server中的网络教学平台所用的数据库,加入所需的TQuery和TCommand等DataSet控件,用于进行数据库查询及获取查询结果记录集,或执行数据的添加、删除和修改操作。加入TDataSetProvider 控件,设置DataSet属性为相应的DataSet控件。
在应用程序服务器中再创建其他的CORBA对象,并建立方法,编写方法代码,将组卷算法、知识搜索、试卷评分及一些数据处理等代码分别实现为各对象的方法,这样就利用CORBA对象实现了业务逻辑的封装。在编写企业对象时,可以先用向导创建CORBA对象,产生对象的骨架程序代码后,再给对象提供客户端调用的方法及可以存取的属性。创建CORBA对象的方法为:在菜单中选“View”中的“Type Library”,选择“New”的“Method”,给方法命名,系统便创建了一个新方法并产生该方法的框架代码,在此基础上编写该方法的程序代码,实现方法的功能。如在本系统中,创建了OnlineTest CORBA对象,实现了findQuest(试题查找),giveMark(评分),createQuest(生成试题),createPaper(组卷)等方法,供客户端应用程序调用。
3.4 客户端应用程序(Web应用程序)开发
新建一个Web应用程序(Web Server Application),在该Web数据模块中加入TCORBAConnection控件,设置RespositoryId 属性值为以上所建立的CORBA服务器中的CORBA对象,用于连接CORBA 应用程序服务器。加入TClientDataSet,其RomoteServer 属性的值为TCORBAConnection 组件;其 ProviderName 属性的值为应用程序服务器中TDataSetProvider 组件,用于从服务器获取数据结果。
对于Web页面的开发,可利用Delphi对Web和电子商务的开发支持,使用InternetExpress提供的TMIDASPageProducer 组件获取数据信息或程序处理结果,将它们显示在该组件指定的页面上,也可从TXMLBroker组件取得以XML封装的数据,产生以XML格式封装的页面内容。通过使用TMIDASPageProducer 等InternetExpress组件,集成用DREAMWEAVER等工具设计的样板HTML页面,以及内嵌的JavaScript脚本语言,进而汇整成一个有效的动态Web页面。图2为用户选择测试知识点进行试卷生成请求的页面。
Web应用程序接受用户请求调用服务器的CORBA对象服务,主要是通过创建Action来实现的。用户通过Web页面发送請求后,应用程序相应的action事件被触发,action根据用户要求,调用服务器端的CORBA对象的方法进行业务处理。以下为应用程序根据用户请求,调用了服务器的OnlineTest CORBA对象的createpaper方法实现试卷生成的action事件代码。
procedure TWebModule1.WebModule1cs_zhscsjAction(Sender: TObject;
Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
var
st_html: OleVariant;
begin
DYCS:=TOnlineTestCorbaFactory.CreateInstance(’’);//建立一个CORBA对象。
textlist:=Tstringlist.create; // 用于存放返回HTML页面的字符串
st_html:=’’;
DYCS.createpaper(request.contentfields.values[’sjbh’], st_html); //调用OnlineTest CORBA对象的createpaper方法实现了试卷生成功能,在此调用该方法生成选中的试卷,返回的试卷的HTML字符串
textlist.add(st_html);
mppcy.htmlfile:=sstr ’jxdb\zhcs\ttsj.htm’;
response.content:=mppcy.content;
end;
在线测试模块的组件图如图3所示。
ServerModule.pas 提供的是Corba_server的数据模块,xscy_method.pas实现的是OnlineTest CORBA对象,它们都是CORBA对象的pas源代码文件;Corba_server.exe是应用程序服务器,包括了上述两个pas文件,即两个CORBA对象。Corba_server.idl和Corba_server_TLB是实现CORBA连接的基础文件,分别由系统自动生成。client_pro.pas是实现浏览器与应用程序接口的源代码文件,client_pro.exe是其编译之后的执行程序。
4 结束语
利用Delphi对CORBA分布式技术及Web应用系统开发的支持,结合Delphi提供的强大的数据库应用开发工具,可以有效的开发出完备的基于Web的多层分布式系统,将表示逻辑、业务逻辑及数据逻辑进行分割,并可将业务逻辑封装成企业对象,利用负载平衡策略,在多台应用服务器上实现业务处理的负载平衡。随着应用程序业务逻辑复杂性的提高及需求的扩展,利用多层分布式技术可以增强系统的灵活性和开放性,提高系统运行效率,较好的解决应用服务器负载瓶颈问题。
参考文献:
[1] 飞思科技研究中心.Delphi 7组件与分布式应用开发[M].北京:电子工业出版社,2003.
[2] 李维.Delphi分布式多层应用系统篇[M].北京:机械工业出版社,2000.
[3] 黄汝维,陈宁江,苏德富.Delphi中三层结构与CORBA的应用研究[J].计算机应用研究,2002(8):94-96.
关键词:CORBA;Delphi;分布式Web应用系统
中图分类号:G434文献标识码:A文章编号:1009-3044(2008)36-3038-03
Applying CORBA Distributed Technique to the Network Teaching System Based on Web
LI Xin-xiao
(Department of Electronic and Computer Science, Guilin University of Technology, Guilin 541004, China)
Abstract: Based on the analysis of the distributed architecture and its characteristic, this paper presents the design and development of a network teaching web application system using CORBA technique which is supported by Delphi. By adopting distributed architecture, we can improve the stability, tractility and processing capability of the system, and also can solve the burden bottleneck problem in large web application systems.
Key words: CORBA; Delphi; distributed web application system
1 引言
随着网络技术的发展及计算机的普及应用,网络教学作为一种可以突破时间和地域限制的教学手段,对传统教学起到了较好的辅助教学效果,发挥了越来越重要的作用。在国内外,很多学校都建立了校园网,并开发远程教学平台,为师生提供教学资源发布、教学点播、交流互动、在线测试等服务。随着宽带网络的应用,对于运行在校园网之上的教学平台,网络速度已经不是影响教学平台使用的关键因素。随着网络教学平台提供服务的多样性、丰富性、功能复杂性的提高以及教学平台本身具有的终端用户数量庞大等特征,特别是教学系统向智能化发展后,增加了智能组卷、在线测试、测评结果分析、试卷质量分析、教案生成等应用服务,这些应用服务的实现涉及的数据量大、算法复杂,执行起来比较耗费资源。因而,应用服务器的性能与负载能力成了网络教学平台应用的瓶颈,当同时访问系统的用户量增加到一定规模,应用服务器超负载运行,教学系统的执行效率就开始明显的下降,甚至导致系统崩溃。所以需要使用更具延展性的分布式结构来克服服务器的瓶颈问题,将应用均衡分布在多台服务器上,实现负载均衡,提高系统的可靠性和保障系统的执行效率。
2 CORBA分布式技术概述
目前分布式体系结构使用的核心技术主要有三种:Microsoft 的COM/DCOM 技术、SUN 的EJB 技术和OMG的CORBA(Common Object Request Broker Architecture)。这三种分布式技术各有优缺点,但总体而言,在集成性、互操作性、开放性和成熟度方面,CORBA较优于其他两者。
CORBA是由OMG提出的应用软件体系结构和对象技术规范,其核心是一套标准的语言、接口和协议,以支持异构分布应用程序间的互操作性及獨立于平台和编程语言的对象重用。CORBA体系主要由ORB(Object Request Broker)、对象服务、公共设施、领域接口及应用对象等组成。其主要特点是:1) 引入中间件作为事务代理;2) 实现客户与服务对象的完全分开;3) 提供总线机制,使得软件只要符合接口规范的定义,均能够集成到分布式系统中;4) 采用面向对象的软件实现方法开发应用[1]。
Delphi支持CORBA标准,并为分布式应用程序开发提供了优良的环境,其Object Pascal的CORBA IDL 编译器还可以让Delphi的客户端应用程序和UNIX/Linux的CORBA服务器沟通[2]。Delphi提供了符合CORBA规范的产品VisiBroker,其实现了CORBA中的ORB核心技术,它包含了一些非常重要的应用程序,其中OsAgent提供CORBA对象搜索的功能;OAD提供了注册CORBA对象及自动地维护所有注册CORBA类别信息的功能;IREP维护接口库从而可以使用DLL的方式调用CORBA对象。这些应用程序提供了基本的CORBA支持机制,简化了CORBA多层分布式应用系统的开发[3]。
3 CORBA在网络教学平台中的应用
3.1 系统设计概述
运行在校园网上的网络教学平台采用支持CORBA分布式体系结构的Delphi工具开发。系统使用面向对象的方法进行分析和建模,利用Delphi提供的WebBroker和InternetExpress组件对网页动态功能和数据更新的支持,开发出Web应用模式的分布式网络教学平台系统。并将CORBA技术与多层架构相结合,使用CORBA对象封装业务逻辑及数据处理,分割表示逻辑、企业逻辑和数据逻辑,实现了客户端Web应用程序、应用程序服务器、数据库服务器的多层分布式体系结构。系统实现了教学资源发布、教学点播、知识库维护、教学交流、在线测试等一系列教学辅助功能。这里以教学点播子系统中的在线测试模块的实现过程来说明采用CORBA技术开发分布式Web应用系统的方法。
3.2 系统结构
基于Web的分布式网络教学平台系统结构如图1所示。
图2 用户选择测试知识点请求试卷生成页面
图3 在线测试模块组件图
数据库服务器:使用SQL SERVER 2005构建,主要接受应用服务器的数据查询和数据操作请求,并将数据查询或操作结果返回给应用服务器。
CORBA应用服务器:主要实现系统中的各种业务逻辑,将组卷算法、知识搜索、试卷评分及一些数据查询、数据操作的公共数据处理封装成企业对象,在应用服务器上发布,由客户端应用程序即Web应用程序进行调用。
客户端应用程序(Web服务器):主要接受客户机的HTTP请求,并根据请求实现Web页面上的动态的数据显示,调用应用服务器的CORBA对象完成业务处理,对操作流程进行控制和对错误信息进行判别等。
客户机:即用户使用浏览器,对Web服务器的页面进行浏览或输入数据,使用系统功能。
整个系统的运行处理过程为:由用户在远程从Web页面上发出请求,触发客户端Web应用程序的Action事件,Action先在应用程序客户端进行必要的数据处理,然后根据用户的具体请求,通过Smart Agent与服务器端对象通讯,把处理的要求和相应的数据提交到服务器端,服务器端完成用户请求后,把处理的结果反馈回Web服务器,最后,再把Web应用程序处理的结果页面回传给客户机。
3.3 CORBA应用服务器开发
创建Application应用程序,加入CORBA数据模块,在数据模块中加入TDatabase 控件,用于链接SQL Server中的网络教学平台所用的数据库,加入所需的TQuery和TCommand等DataSet控件,用于进行数据库查询及获取查询结果记录集,或执行数据的添加、删除和修改操作。加入TDataSetProvider 控件,设置DataSet属性为相应的DataSet控件。
在应用程序服务器中再创建其他的CORBA对象,并建立方法,编写方法代码,将组卷算法、知识搜索、试卷评分及一些数据处理等代码分别实现为各对象的方法,这样就利用CORBA对象实现了业务逻辑的封装。在编写企业对象时,可以先用向导创建CORBA对象,产生对象的骨架程序代码后,再给对象提供客户端调用的方法及可以存取的属性。创建CORBA对象的方法为:在菜单中选“View”中的“Type Library”,选择“New”的“Method”,给方法命名,系统便创建了一个新方法并产生该方法的框架代码,在此基础上编写该方法的程序代码,实现方法的功能。如在本系统中,创建了OnlineTest CORBA对象,实现了findQuest(试题查找),giveMark(评分),createQuest(生成试题),createPaper(组卷)等方法,供客户端应用程序调用。
3.4 客户端应用程序(Web应用程序)开发
新建一个Web应用程序(Web Server Application),在该Web数据模块中加入TCORBAConnection控件,设置RespositoryId 属性值为以上所建立的CORBA服务器中的CORBA对象,用于连接CORBA 应用程序服务器。加入TClientDataSet,其RomoteServer 属性的值为TCORBAConnection 组件;其 ProviderName 属性的值为应用程序服务器中TDataSetProvider 组件,用于从服务器获取数据结果。
对于Web页面的开发,可利用Delphi对Web和电子商务的开发支持,使用InternetExpress提供的TMIDASPageProducer 组件获取数据信息或程序处理结果,将它们显示在该组件指定的页面上,也可从TXMLBroker组件取得以XML封装的数据,产生以XML格式封装的页面内容。通过使用TMIDASPageProducer 等InternetExpress组件,集成用DREAMWEAVER等工具设计的样板HTML页面,以及内嵌的JavaScript脚本语言,进而汇整成一个有效的动态Web页面。图2为用户选择测试知识点进行试卷生成请求的页面。
Web应用程序接受用户请求调用服务器的CORBA对象服务,主要是通过创建Action来实现的。用户通过Web页面发送請求后,应用程序相应的action事件被触发,action根据用户要求,调用服务器端的CORBA对象的方法进行业务处理。以下为应用程序根据用户请求,调用了服务器的OnlineTest CORBA对象的createpaper方法实现试卷生成的action事件代码。
procedure TWebModule1.WebModule1cs_zhscsjAction(Sender: TObject;
Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
var
st_html: OleVariant;
begin
DYCS:=TOnlineTestCorbaFactory.CreateInstance(’’);//建立一个CORBA对象。
textlist:=Tstringlist.create; // 用于存放返回HTML页面的字符串
st_html:=’’;
DYCS.createpaper(request.contentfields.values[’sjbh’], st_html); //调用OnlineTest CORBA对象的createpaper方法实现了试卷生成功能,在此调用该方法生成选中的试卷,返回的试卷的HTML字符串
textlist.add(st_html);
mppcy.htmlfile:=sstr ’jxdb\zhcs\ttsj.htm’;
response.content:=mppcy.content;
end;
在线测试模块的组件图如图3所示。
ServerModule.pas 提供的是Corba_server的数据模块,xscy_method.pas实现的是OnlineTest CORBA对象,它们都是CORBA对象的pas源代码文件;Corba_server.exe是应用程序服务器,包括了上述两个pas文件,即两个CORBA对象。Corba_server.idl和Corba_server_TLB是实现CORBA连接的基础文件,分别由系统自动生成。client_pro.pas是实现浏览器与应用程序接口的源代码文件,client_pro.exe是其编译之后的执行程序。
4 结束语
利用Delphi对CORBA分布式技术及Web应用系统开发的支持,结合Delphi提供的强大的数据库应用开发工具,可以有效的开发出完备的基于Web的多层分布式系统,将表示逻辑、业务逻辑及数据逻辑进行分割,并可将业务逻辑封装成企业对象,利用负载平衡策略,在多台应用服务器上实现业务处理的负载平衡。随着应用程序业务逻辑复杂性的提高及需求的扩展,利用多层分布式技术可以增强系统的灵活性和开放性,提高系统运行效率,较好的解决应用服务器负载瓶颈问题。
参考文献:
[1] 飞思科技研究中心.Delphi 7组件与分布式应用开发[M].北京:电子工业出版社,2003.
[2] 李维.Delphi分布式多层应用系统篇[M].北京:机械工业出版社,2000.
[3] 黄汝维,陈宁江,苏德富.Delphi中三层结构与CORBA的应用研究[J].计算机应用研究,2002(8):94-96.