欢迎来到论文网! 识人者智,自知者明,通过生日认识自己! 生日公历:
网站地图 | Tags标签 | RSS
论文网 论文网8200余万篇毕业论文、各种论文格式和论文范文以及9千多种期刊杂志的论文征稿及论文投稿信息,是论文写作、论文投稿和论文发表的论文参考网站,也是科研人员论文检测和发表论文的理想平台。lunwenf@yeah.net。
您当前的位置:首页 > 毕业论文 > 计算机毕业论文

插件式框架设计在网上评教系统重构中的运用_实现

时间:2012-04-01  作者:方党生

论文导读::我院的学生网上评教系统采用流行的ASP.NET2.0技术开发。并对信息进行快速的分析和相关报表的输出。要想实现系统的功能扩展。
论文关键词:评教系统,分析,插件控件设计,实现
 

1 引言

当前我国高职教育规模的日益扩大,高职院校的教学管理任务日趋繁重,多层次、信息网络化的教学质量评价及数据分析系统在各院校的教务管理工作中显得十分重要。我院的学生网上评教系统采用流行的ASP.NET2.0技术开发,该系统方便广大学生,只要可以上Internet,则可以对其任课教师进行评教;同时快速集中收集各方面的评教信息,辅助教务人员完成繁琐的资料统计工作,并对信息进行快速的分析和相关报表的输出,节省大量的人力和物力,为学校领导提供相关决策支持。

随着学院网上评教系统的长期运行,各种相应的不足已渐渐暴露出来,那就是不能随着业务的修订而进行自由扩展,例如:由于每年的评教结果的计算方法都会因各种不同的原因发生变化(学生参评人数的百分比控制、统计成绩时上下扣除的比例等)。为了提升系统的性能,网上评教系统通过编译在学院网络中心的Web服务器上发布,每次修改源代码都需要重新发布实现,其中包括数据库的附加与分离,稍不留意,就会形成新的错误。为此,决定对学院网上评教系统进行重构,利用插件式框架设计完成对新需求的扩展,而不是每次都去修订源代码。

2 分析设计

按照面向对象的设计原则,要想实现系统的功能扩展,各个类之间应该是高内聚低耦合的,同时由于总评成绩的计算方法是一个可变的因素,而界面是依赖于这个方法而显示其结果,要想实现动态更改其计算方法,必须将其泛化为一个抽象类或接口,让界面依赖其抽象的类,我们知道,抽象的东西才是稳定的,而实现是千变万化的,这就是所谓的“依赖反转”原则,通过这种方法可有效的解决上面提到的问题,系统框架的结构设计方案如下:

实现

图1 框架设计图

由于要实现动态扩展系统的功能,即不改变系统的原始代码结构的基础上更改系统的功能,而原有的系统已经发布,其内部的代码现已为动态链接库的形式而存在。根据.NET的引用机制,可将计算方法实现类实现为DLL动态链接库形式,然而实现类是实现教师总评成绩计算接口的类,因此必须将接口类也实现为DLL动态链接库形式杂志网

通过这样的分析后发现,整个系统有三部分组成,分别是网站界面部门,接口DLL和计算方法实现类DLL。这样框架布局使得评教系统在编译发布之后,如果想要进行教师总评成绩计算功能的扩充,不必要修改代码重新编译发布。只需按照预先定义好系统的总评成绩计算接口进行插件的编写独立的动态链接库文件,就可以实现系统的扩展功能。

3 实现过程

在.NET框架中实现,要实现上述框架,如果想让教师总评成绩计算方法用成绩计算方法2类实现,用newCtotal_Cal2()的方法实现肯定是不行的,因为实现类的名字出现在系统代码上,并已经编译到目标代码中。必须采用一种灵活的方式去实现,否则上述的框架只是起到了代码模块化的作用,根本不能担负起插件式自动扩展的功能。这时可采用.NET的配置文件和反射机制来完成。

.NET中提供了一种便捷的保存项目配置信息的办法,那就是利用配置文件基于XML的Web.config配置文件。在发布Web应用程序时web.config文件并不编译进dll文件中。如果将来客户端发生了变化,仅仅需要用记事本打开web.config文件编辑相关设置就可以重新正常使用,非常方便。同时.NET框架对于配置文件进行了封装,形成了以Configuration为基本类一系列类,从而方便对配置文件的管理。比如可以将插件动态库的文件名和对应的类名称分别保存到<appSettings>中,这样就可利用ConfigurationSettings.AppSettings进行访问。

.NET还提供了审查元数据并收集关于它的类型信息的能力的反射机制,动态发现类型信息的能力。有助于在程序运行时利用一些信息去动态地使用类型,这些信息在设计时是未知的,这种能力类型相当于程序设计语言的后期绑定,同时反射还能在运行时动态创建新类型,并且对这些新类型的操作进行调用。结合程序集Assembly的相关方法进行动态加载动态库控件和Activator类的CreateInstance 方法等动态生成插件类对象,从而调用插件实现类的方法,到达扩展系统功能的功效杂志网。

为了使代码更简洁,在下述的实现过程中,省略了具体实现教师总评成绩的计算算法过程,只是显示框架的构建过程。具体如下:

(1)创建报表接口的类库文件Itotal_Cal,其代码如下:

namespace Itotal_Cal

{public interfaceTotal_Cal()

{Table Total_Cal();}

}

将其编译成Itotal_Cal.dll动态链接库文件。

(2)创建报表实现类的类库文件Ctotal_Cal2,其关键代码如下:

using Itotal_Cal;

namespace Ctotal_Cal2

{public class Ctotal_Cal2:Itotal_Cal

{public Table Total_Cal ()

{//省略其实现代码}

}}

在实现过程中,要添加对报表接口Itotal_Cal.dll的引用,将其编译成Ctotal_Cal2动态链接库文件。

(3)系统代码布局:在学院网上评教系统中,添加对Itotal_Cal.dll文件的引用,同时在使用教师总评成绩计算功能的页面文件中using Itotal_Cal引用报表的名字空间,以方便代码的书写。为了实现自动找到对应的扩展动态库文件,可以将编译生成的扩展动态库文件拷贝到评教系统的bin目录下实现,同时修改web.config文件如下:

<appSettings>

<addkey='ass_name' value=' Ctotal_Cal2'/>

//其中Ctotal_Cal2为插件动态库文件名称

<addkey='class_name' value= Ctotal_Cal2. Ctotal_Cal2'/>

//其中Ctotal_Cal2. Ctotal_Cal2的形式是:名字空间.类名

</appSettings>

在代码实现上,关键代码如下:

string ass_name= ConfigurationSettings.AppSettings['ass_name'];

stringclass_name = ConfigurationSettings.AppSettings['class_name'];

//访问系统配置文件中存放的插件动态库文件名和具体实现类名称

Assembly ass =System.Reflection.Assembly.Load(ass_name);

//动态加载插件动态库文件

Type type =ass.GetType(class_name);

Total_Cal obj =(Total_Cal)Activator.CreateInstance(type);

//调用obj.Total_Cal (),实现系统的动态更新。

4 小结

通过上述插件式框架的设计和实现,如果要更新教师总评成绩的计算方法,只需要按照框架规定的接口编写新的总评成绩计算方法实现类,将其编译成动态链接库,然后将其发送给系统管理员,拷贝到系统的bin目录下,同时对系统配置文件web.config文件进行必要的更改,从而实现不重新编译原来的系统代码,即可实现系统的扩展。当然,也可以此为锲机,将评教系统的各种需求进行深入的分析,估计其风险,对相关类进行泛化提升,抽象出接口,对相应模块进行重构,从而全面提升系统的扩展性,灵活地应对系统需求的变化。

作者:方党生

 

 

查看相关论文专题
加入收藏  打印本文
上一篇论文:安全监督检查信息管理系统的研究_毕业论文ppt
下一篇论文:基于PDM的产品图档管理系统的研制与开发_图档搜索
毕业论文分类
行政管理毕业论文 工商管理毕业论文
护理毕业论文 会计毕业论文
会计专业毕业论文 英语专业毕业论文
大学毕业论文 硕士毕业论文
计算机毕业论文 市场营销毕业论文
物流管理毕业论文 法学毕业论文
相关计算机毕业论文
最新计算机毕业论文
读者推荐的计算机毕业论文