论基于构件的软件开发
来源:用户上传
作者: 靳桂珍
[摘 要]基于构件的软件开发是提高软件生产效率和软件产品质量的有效途径。本文结合我们的实践,以“在线学习支持服务平台”项目为例,讨论基于构件的软件开发的技术应用。
[关键词]基于构件;软件开发;技术应用
“在线学习支持服务平台”是对学生远程学习进行教学辅导。经过多年对远程教育模式的探索,确立了成熟的远程教育教学模式――利用先进的网络数字信息技术,为广大的学生提供开放的教育平台和最优秀的教育资源,突出个性、学生自主学习的教学。
“在线学习支持服务平台”是一个综合性的在线式基于WEB的远程教学平台,存储着核心信息数据,提供网上课程、信息发布、查询、BBS、VOD视频点播等教学服务,该系统的开发技术主要集软件复用、企业级应用程序开发于一体的“基于构件的软件开发”。系统运行于WINDOWS SERVER2000。用SQL SERVER 2000 为后台数据库,用ASP+IIS5.0来架构网站。
由于COM组件既可以被嵌入动态WEB面面,还可以在LAN或桌面环境的VB、VC等应用中使用。另外该组件之间是彼此独立的。当应用需求发生变更时,可能需要更换中间层的个别COM组件,但并不影响其他组件的继续使用。组件具有若干对外接口(属性和方法)。可以根据不同的应用需求,有选择地使用不同的接口。即使不再使用某些接口时,COM接口本身仍然可继续使用。同一COM组件可以在不同的应用环境中重复使用。因此,结合我们的实际情况,我们现有的各级软件系统都是基于微软Windows系统列平台,且开发人员对COM组件技术也较熟悉,对开发语言VB6也很熟悉,因此我们确定使用微软的COM组件技术来开发该平台。
该平台采用B/S结构进行设计,把整个系统分为三个层:数据库层,应用逻辑层,用户界面层。用户界面是浏览器(如IE等),并通过ASP语言来实现同应用逻辑层构件交互。应用逻辑层负责事务处理。应用逻辑层主要通过使用COM组件方式来实现,数据库层用SQL SERVER实现。
我们依据平台的主要功能,在平台开发中,如果采用传统的方法来开发,则每实现一个功能都要编写同样的代码,为了节省开发时间和提高维护效率,我们把共用的代码模块都做成组件,例如我们把记录操作(如记录的删除、增加、修改等)、数据库操作、查询做成用户管理组件,把用户身份认证和用户类型识别做成用户管理组件,把所有实现与数据库的连接做成连接组件,把用户的错误操作、与系统的的交互出错等做成错误处理组件。对于各组件我们采用VB6语言进行编写并生成DLL文件,通过注册成为COM程序,供各个组件调用。在数据库连接方面,我们采用了ADO技术。由于ADO采用了OLE―DB技术,使能访问各式各样的数据并提高了访问性能。
在该平台的开发过程中,我们主要设计和实现了以下一些COM组件:
1.用户管理组件,包括身份认证功能。我们主要定制COM组件用户管理组件UserCheck.dll进行用户管理处理。该组件主要完成两个功能:一是身份认证功能,主要是提供用户登录时验明身份,保证应用的安全性。二是根据用户所输入的账户名确定该用户的类别。
因此,该组件具有三个接口,每个接口代表组件的某个属性或方法。对用户的登录请求做出相应的处理:如果是学生登录则转入学生学习平台,如果是教师登录则转入教师平台,如果是管理员登录则转入管理员平台。
2.查询和提交信息组件。我们主要定制COM组件QuerySys.dll进行查询和提交信息处理。该组件主要完成两个功能:一是供学生用于查询学生成绩和查询课程信息;二是提交学生注册信息。
该组件具有两个接口,每个接口代表组件的某个属性或方法。如果学生的请求是查询功能(QueryInfo方法),则将查询信息请求做出相应的处理,并将查询结果集返回给学生。如果学生的请求是提交注册信息(Submitinfo方法),则将提交信息请求做出相应处理,并将信息提交返回给用户。
3.连接组件。我们主要定制COM组件Conector.dll,该组件主要完成与数据库的连接。该组件具有一个接口,那就是确定数据源,以便自动连接后台数据库。
4.错误处理组件。我们主要定制COM组件Cerror.dll,该组件主要确定错误类集,该组件具有一个接口,主要是输出错误信息,方便用户排错。
我们把编译好的组件,将其在MST中注册,并将其分布在服务器上,这样就可以在设计平台过程中进行调用这些组件了。在本系统中,我们通过以下几种方式把组件集成到系统中来:
一是连接集成,即我们将组件直接嵌入 ASP主页中,即在ASP脚本中通过SET对象名=Server.CreateObject(“类名”)来引用,使此二进制组件可以运行于服务器端。
二是容器集成,即如果一个组件需要调用另一个组件时,就在需调用的组件中引用另一个组件的方法。例如在使用查询和提交信息组件时就需要先调用连接组件。
我们结合连接集成和容器集成两种方式来组装系统,以登录界面为例,在客户端我们只提供两个输入项和一个提交信息的功能按钮,主要通过ASP来实现。在服务器端,主要根据用户输入的信息来进行相应的处理,这就要调用各种组件。如果学生以错误的学号和用户名登录进入学生平台,这就要调用用户管理组件,返回非法用户的信息。如果学用以合法的身份登录进入学生平台,这就要调用用户管理组件、连接组件。如果教师以合法的身份登录进入教师平台,也要调用用户管理组件、连接组件。
目前,该平台运行收到良好的效果,我们采用COM组件技术进行开发,减少了重复输入代码的工作,缩短软件的开发周期。同时,在进行系统维护时,我们只关心组件的接口参数,而不用再考虑组件内部的具体实现,提高了系统的强维护性。在以后的工作中,如果我们要扩展某些功能时,也可以重复利用这些组件,提高了系统的可复用性。目前该平台运行存在的缺点是:由于在ASP运行的COM组件是二进制代码,当COM组件工作出错时,ASP不能指出COM组件发生错误的具体位置,只能简单显示对象创建不成功。这样就给我们在调试该平台过程中增加了难度。□
(编辑/永安)
转载注明来源:https://www.xzbu.com/2/view-474266.htm