摘要 本文介绍了组件以及ActiveX技术,分析了Browser/Server体系结构开发应用软件的特点和不足。提出了克服该不足的一种方法。最后给出了一个应用实例。
关键词 WEB ,COM ,应用软件,服务器
1 引言
由于客户服务器两层结构存在灵活性差、升级困难、维护工作量大等缺陷,已较难适应当前信息技术与网络技术发展的需要。随着WEB技术的日益成熟,Browse/Server(简称B/S)结构已成为取代Browser/Server(简称C/S)结构的一种全新技术。采用该结构软件的优势在于:(1)无须开发客户端软件,维护和升级方便;(2)可跨平台操作,任何一台机器只要装有WWW浏览器软件,均可作为客户机来访问系统;(3)具有良好的开放性和可扩充性;(4)可采用防火墙技术来保证系统的安全性,有效地适应了当前用户对管理信息系统的新需求。因此该结构在管理信息系统开发领域中获得飞速发展,成为应用软件研制中一种流行的体系结构。
本文在对B/S体系结构分析的基础上,提出了一种新的体系结构,把B/S与C/S相结合,将组件技术和ActiveX技术分别应用在服务器端和客户端,开发高效、安全的应用系统。最后给出了一个应用实例。
2 . COM组件技术和ActiveX技术
COM是一种技术标准。它是由微软公司创建,提供了使多个应用程序或组件对象协同工作并相互通信的能力。COM组件是遵循COM规范编写、以WIN32动态链接库(DLL)或可执行文件(EXE)的形式发布的可执行的二进制代码。遵循COM的规范标准,使组件与应用、组件与组件之间可以相互操作,极其方便地建立可伸缩的应用系统。从工程的角度看,组件在应用开发方面具有以下特点:
(1) 组件与开发的工具语言无关。开发人员可以根据需要和爱好选择特定语言工具实现组件的开发。常用的开发工具是VB、VC和Delphi。将组件编译成DLL或EXE置于服务器端。可有效保护商业秘密。
(2) 通过接口有效保证了组件的复用性。一个组件具有若干个接口,每个接口代表组件的某个属性或方法。其它组件或应用程序可以设置或调用这些属性和方法来进行特定的逻辑处理。组件和应用程序的连接是通过其接口实现的。负责集成的开发人员无须了解组件功能的如何实现,而只须创建组件对象与其接口建立连接。在保证接口一致性的前提下,可以调换组件、更新版本,也可以将组件应用在不同的系统中。
(3) 组件运行效率高、便于使用和管理。因为组件是二进制代码,比ASP脚本运行效率高,所以核心的商务逻辑计算任务必须由组件来负责,ASP脚本只起组装组件的角色。而且组件在网络上的位置可被透明地分配,组件和使用它的程序既能在同一进程中运行,也可在不同进程或不同的机器上运行。组件之间是相互分离和独立的。利用MTS或COM+对组件管理更加方便。
ActiveX是遵循COM/DCOM规程而开发的用于INTERNET的一种对象链接与嵌入技术(OLE)。COM是应OLE设计者的需求而诞生的。其基本的出发点是想让某个软件通过一个通用的机构为另一个软件提供服务。对于基于WEB的应用而言,它提供了使组件嵌入到WEB页面以扩展交互功能的应用机制。客户端控件是面向用户的,以可视化的图形视频或文字界面、或者音频形式在浏览器上出现。但它可能并不是浏览器的组成部分。这些控件原先是放在服务器上的。当浏览器发出请求时,WEB服务器回传页面,由浏览器负责解释。在解释过程中,若发现页面中要求调用ActiveX控件时,则用该控件的在页面中注明的ID值先在本地的注册表内进行查询。若已经存在,则说明该控件已经在本地安装,然后通过注册表中的相关信息直接使用该控件;否则就要根据页面中所提示的该控件所在的服务器上的路径到服务器上去下载并且自动完成在本地的安装注册,使该控件成为本地资源,供今后使用,这就是所谓“一次下载,永久使用“。客户端控件一旦在本地安装完毕,就等价于一个可执行的应用程序,它能访问使用本地的资源,甚至进行远程访问。当然,这可能带来了安全性问题。
3 基于B/S体系结构开发应用系统
3.1 B/S三层体系结构
在B/S体系结构系统中,用户通过浏览器向分布在网络上的许多服务器发出请求,服务器对浏览器的请求进行处理,将用户所需信息返回到浏览器。B/S结构简化了客户机的工作,客户机上只需配置少量的客户端软件。服务器将担负更多的工作,对数据库的访问和应用程序的执行将在服务器上完成。浏览器发出请求,而其余如数据请求、加工、结果返回以及动态网页生成等工作全部由Web Server完成。实际上B/S体系结构是把二层C/S结构的事务处理逻辑模块从客户机的任务中分离出来,由Web服务器单独组成一层来负担其任务,这样客户机的压力减轻了,把负荷分配给了Web服务器。这种三层体系结构如图1所示。
这种结构不仅把客户机从沉重的负担和不断对其提高的性能的要求中解放出来,也把技术维护人员从繁重的维护升级工作中解脱出来。由于客户机把事务处理逻辑部分分给了功能服务器,使客户机一下子"苗条"了许多,不再负责处理复杂计算和数据访问等关键事务,只负责显示部分,所以维护人员不再为程序的维护工作奔波于每个客户机之间,而把主要精力放在功能服务器上程序的更新工作。这种三层结构在层与层之间相互独立,任何一层的改变不会影响其它层的功能。
3.2 B/S三层体系结构的不足
经过近一两年的应用,B/S体系结构也暴露出了许多不足地方,具体表现在以下几个方面:
(1) 由于浏览器只是为了进行WEB浏览而设计的,当其应用于WEB应用系统时,许多功能不能实现或实现起来比较困难。比如通过浏览器进行大量的数据输入,或进行报表的应答都是比较困难和不便的。
(2) 复杂的应用构造困难。虽然可以用ActiveX、Java等技术开发较为复杂的应用,但是相对于发展已非常成熟C/S的一系列应用工具来说,这些技术的开发复杂,并没有完全成熟的技术供使用。
(3) HTTP可靠性低有可能造成应用故障,特别是对于管理者来说,采用浏览器方式进行系统的维护是非常不安全与不方便的。
(4) WEB服务器成为对数据库的唯一的客户端,所有对数据库的连接都通过该服务器实现。WEB服务器同时要处理与客户请求以及与数据库的连接,当访问量大时,服务器端负载过重。
(5) 由于业务逻辑和数据访问程序一般由JavaScript、VBScript等嵌入式小程序实现,分散在各个页面里,难以实现共享,给升级和维护也带来了不便。同时由于源代码的开放性,使得商业规则很容易暴露,而商业规则对应用程序来说则是非常重要的。
为克服以上不足,在原有B/S体系结构基础上,采用一种新的体系结构,如图2所示。
在该种结构体系中,一些需要用WEB处理的,满足大多数访问者请求的功能界面(如信息发布查询界面)采用B/S结构。后台只需少数人使用的功能应用(如数据库管理维护界面)采用C/S结构。组件位于WEB应用程序中,客户端发出HTTP请求到WEB SERVER。WEB SERVER将请求传送给WEB应用程序。WEB应用程序将数据请求传送给数据库服务器,数据库服务器将数据返回WEB应用程序。然后再由WEB SERVER将数据传送给客户端。对于一些实现起来困难的功能或一些需要丰富的HTML页面,通过在页面中嵌入ActiveX控件来实现。
采用这种结构优点在于:(1)充分发挥了充分了B/S与C/S体系结构的优势,弥补了二者不足。充分考虑用户利益,保证浏览查询者方便操作的同时也使得系统更新简单,维护简单灵活,易于操作。(2)信息发布采用B/S结构,保持了瘦客户端的优点。装入客户机的软件可以采用统一的WWW浏览器。而且由于WWW浏览器和网络综合服务器都是基于工业标准,可以在所有的平台上工作。(3)数据库端采用C/S结构,通过ODBC/JDBC连接。这一部分只涉及到系统维护、数据更新等,不存在完全采用C/S结构带来的客户端维护工作量大等缺点。并且在客户端可以构造非常复杂的应用,界面友好灵活,易于操作,能解决许多B/S存在的固有的缺点。(4)对于原有基于C/S体系结构的应用,可以非常容易地升级到这种体系结构,只需开发用于发布的WWW界面,可以保留原有的C/S结构的某些子系统,充分地利用现有系统的资源。使得现有系统或资源无需大的改造即可以连接使用,保护了用户以往的投资(5)通过在浏览器中嵌入ActiveX控件可以实现在浏览器中不能实现或实现起来比较困难的功能。比如通过浏览器进行报表的应答。另外,在客户端ActiveX控件的加盟,可以丰富HTML页面,产生另人惊奇的效果。(6)将服务器端划分为WEB服务器和WEB应用程序两部分。WEB应用程序采用组件技术实现三层体系结中的商业逻辑部分,达到封装源代码,保护知识产权的目的。Internet应用程序大部分属于分布式应用程序,采用组件技术一个重要特点就是它的处理能力能够随着用户数量、数据量所需性能的提高而增加。COM的无逢扩展集COM+,有着如内存数据库、负载平衡等强大的功能。
4 实例
下面以某学校学生管理系统为例说明B/S结构软件的设计方法,该系统采用B/S体系结构与COM+技术相结合。通过该系统管理人员可以对学生的学籍、学生的日常表现、学生的学习成绩、学校教师、学校的资产进行管理与维护。任课教师可以通过浏览器查询所教班级学生各种相关信息。学校管理人员通过浏览器对学校的学生、教师等信息进行管理与维护以及有关查询统计功能。学校资产管理人员通过C/S体系结构实现对学校资产的管理维护。
本系统结合了ASP技术和COM+技术,是一个三层结构。表示层由ASP页面组成,用以实现WEB页面显示和调用COM+组件,业务逻辑和数据访问由一组用VC实现的COM+组件构成。为了便于维护、升级和实现分布式应用,在实现过程中,又将业务逻辑层和数据访问层分离开,ASP页面不直接调用数据访问层,而是通过业务逻辑层来调用数据库。
4.1 COM组件技术应用
该系统的实现主要分为三个部分:数据库、COM+组件和ASP页面。其中数据库与ASP页面的实现与一般B/S结构的WEB应用相似。COM+实现可分为三个步骤:COM+组件的设计、COM+应用程序的生成和组件注册、基于属性编程。该管理系统利用VC中的ATL开发COM+组件。下面是该系统中一个定制组件部分主要代码
在showscore.asp页面中接受、辨别用户的查询请求,做出不同的查询处理。当客户的身分为教师或教务员时,可以查询所有学生的成绩;当客户的身分为学生时,只能查询本人的成绩。
定制COM组件Score.dll进行查询处理。首先设计该组件的接口,为组件设计四个属性:SubjNo(课程号),Term(课程所属学期),ClassNo(班级号)和StuNo(学号)。定义两个方法RequeryScores和RequeryAllScores,分别对教师、教务部门和学生的请求做出相应的处理,并将查询结果集返回给用户。
以下是实现该组件Score.dll接口描述以及实现方法的部分代码,从中可以看到组件的接口是如何实现的:
import "ocidl.idl";
[
object,
uuid(46C01798-BE39-4FC0-A25D-718BA31DFADC),
dual,
helpstring("IStudentScore Interface"),
pointer_default(unique)
]
interface IStudentScore : IDispatch{
[propget, id(1), helpstring("课程号")] HRESULT SubjNo([out, retval] BSTR *pVal);
[propput, id(1), helpstring("课程号")] HRESULT SubjNo([in] BSTR newVal);
//其它接口部分从略
[id(5), helpstring("method RequeryScores")] HRESULT RequeryScores(([out,retval]LPDISPATCH* ppRecordset));
};
STDMETHODIMP CStudentScore::RequeryScores()
{
HRESULT hr=S_OK;
IobjectContext* m_spObjectContext=NULL;
//利用ADO访问数据库
::CoInitialize(NULL);
_RecordsetPtr pRecordSet=NULL,pRecordSetClone=NULL;
BSTR bstrDSN=::SysAllocString(L"Provider=SQLOLEDB.1;Persist Security Info=True;
Password=;Initial Catalog=pubs;Data Source=zhudamiing;User ID=sa");
BSTR bstrSQL;
try{
GetObjectContext(&m_spObjectContext);
pRecordSet.CreateInstance(__uuidof(Recordset));
//根据查询要求(查询所有课程、查询特定学期所有课程、查询指定课程、查询
//特定学期某一课程)进行不同操作生成相应SQL语句,程序具体处理从略
pRecordSet->CursorLocation = adUseClient;
pRecordSet->Open(bstrSQL,bstrDSN,adOpenKeyset,adLockOptimistic,adCmdText);
pRecordSet->PutRefActiveConnection(NULL);
pRecordSetClone = pRecordSet->Clone(adLockOptimistic);
pRecordSetClone->QueryInterface(IID_IDispatch, (void**)ppRecordset);
pRecordSet->Close();
pRecordSet = NULL;
::SysFreeString(bstrDSN);
::SysFreeString(bstrSQL);
//事物成功完成,则提交该事物
I f(m_spObjectContext-)
m_spObjectContext->SetComplete();
}
catch(_com_error &e){
if(m_spObjectContext) //事物失败,回滚事物处理
m_spObjectContext->SetAbort()
// 其他错误处理,从略
}
return hr;
}
RequeryAllScores()实现部分从略。另外ASP调用实现部分比较简单从略。
组件编译结束后可以用COM+组件服务管理工具来管理COM+组件及其所在的应用程序。COM+组件服务是个图形界面的管理工具,利用它可以安装和发布组件、配置组件及其所在应用程序的属性,以实现组件安全性、MTS支持、排对组件、设置组件构造参数等。
4。2 ActiveX技术应用
在本系统中许多报表的打印如学生成绩打印、学籍报表、学籍卡打印等需要特殊的格式。而浏览器所提供的打印功能无法实现。为此可采用ActiveX技术,实现在WEB环境下的本地端打印和报表生成。具体实现过程为:(1)WWW服务器在接到用户请求后调用WEB应用程序中的相应组件,通过组件访问数据库,对数据处理生成报表数据,以文件形式存储于WEB服务器中相应目录下。(2)WWW服务器向用户浏览器发送内嵌ActiveX控件的HTML页面,并在HTML页面里的(OBJECT)标志中的param属性里指明数据文件的URL地址。(3)HTML页面根据所提供的ActiveX标志从WWW服务器上下载ActiveX控件到本地端,并在浏览器里执行。ActiveX控件在客户浏览器里完成初始化工作以后,则需直接与服务器端联系,以获取报表数据。ActiveX控件与服务器端的连接采用HTTP协议所提供的GET方法,根据数据文件在WWW服务器上的URL地址,直接将数据文件从WWW服务器下载到本地端。(4)对数据文件进行解析,输入到控件的存储显示模块里,用以存储显示。(5)当用户按下打印按钮时,ActiveX调用打印模块进行打印输出。
5 结束语
随着INTERNET普及,基于B/S体系结构开发应用程序变为流行的方式。将组件技术应用到B/S体系结构中,实现业务逻辑封装,提高软件的可重性和可维护性。
参考文献:
[1]余英 ,梁刚 VC实践与提高COM和COM+篇. 中国铁道出版社
[2]林子禹等 基于WEB与组件技术的企业应用系统设计模型 计算机工程与应用 2000.6.
[3]夏骄雄等 基于Intranet的管理信息系统 小型微型计算机系统 2001、4
[4]楼伟进,应飚.COM/DCOM/COM+组件技术 :计算机应用2000、4.
[5]张震、张曾科 一种新的WEB数据库系统结构 小型微型计算机系统 2001、5