论文部分内容阅读
摘要:在线学习技术是现代教育发展的一个方向,如何有效地对学员进行管理也成为在线学习模式下一个亟待解决了问题。本文对在线学习模式下考勤管理进行了深入研究,针对在线学习中的学员流动频繁,考勤的实时性要求比较高的特点,以基于.NET的在线学习系统的实际开发为例,从考勤模块的总体设计到考勤信息的实时存取实现方法等方面进行了详细阐述。
关键词:在线学习;E-learning;在线考勤
中图分类号:TP393文献标识码:A文章编号:1009-3044(2008)20-30264-03
Research of Real-time Attendance Method for E-learning System Based on .NET Framework
XIONG Shu-feng, CHU Long-xian, LI Bo
(Software College of Pingdingshan University, Pingdingshan 467000, China)
Abstract: E-learning technology is the direction of modern education development. How to manage the students effectively in E-learning is the next problem that has to be solved imperatively. In this article, it had done a deep research for attendance management in E-learning pattern. The research took an E-learning system's actual development with .NET platform as an example and aimed at the characteristic that the students flowed frequently and the attendance required timeliness in order to expatiate the system design of attendance module and the accessing method of attendance information.
Key words: online study; e-learning; online attendance
1 引言
目前,多数高等院校都架设了校园网,校园网不但是高校师生获取信息的便捷手段,也是提高办公效率, 实现无纸化办公的重要手段, 同时随着高等教育改革的进一步发展,建立在计算机网络基础上的“在线学习”技术(e-learning)正日益成为教育发展的一个方向, 在线学习技术的出现使得网络教学、远程教学成为可能[1]。在线学习系统中,以学员自主学习为主,但不排除个别学员旷课,迟到等情况。因此为在线学习系统增加一个考勤模块,便可以实时掌握学员的考勤情况[2]。本文结合实际应用,深入讨论在线学习模式下的实时考勤方法。
2 考勤模块总体设计
在实际应用中,考勤信息结构主要包括学号、姓名、登录时间、签到时间、位置、IP地址、班级号等。每天学员上课登录系统后,系统自动在签到用户列表中加入学员登录情况信息,登录流程如图1所示。
当教师需要掌握学员考勤情况时,可以向学员发出指令要求学员点击系统提供的“签到”按钮。学员签到后,考勤信息表中“签到时间”和“位置”自动更新为当前时间和学员当前位置。考勤模块提供的主要方法及描述如下:
(1)InsertOnlineUser():插入一条新的登录学员信息;
(2)UpdateOnline():更新学员的签到时间和位置;
(3)DeleteOnlineUser():删除一位学员信息;
(4)ClearExptionUser():清除超时学员信息;
(5)GetOnlineUserTable():获取满足条件的在线学员信息表;
(6)GetPlace():获取学员当前所在位置。
3 考勤信息保存方式
目前WEB应用中对于用户在线状态的监控,通常使用session方式。session机制是一种服务器端的机制,服务器使用一种类似于散列表的结构来保存信息。程序一般都是在用户做log off的时候发个指令去删除session,然而浏览器从来不会主动在关闭之前通知服务器它将要被关闭,因此服务器根本不会有机会知道浏览器已经关闭。服务器会一直保留这个会话对象直到它处于非活动状态超过设定的间隔为止。在线学习系统中对学员考勤信息的实时性要求比较高,无法使用session方式,因此信息表的保存方式是考勤模块实现过程中需要解决的一个关键问题。本文针对实时考勤的特点,提出了3种候选解决方法:
(1)采用静态变量方式;
(2)缓存数据表方式;
(3)数据库存储方式。
3.1 采用静态变量方式
静态变量存放在内存的全局数据区,在程序整个运行期间都不释放,因此当在线学习系统执行服务时,可以使用静态变量保存用户考勤信息。首先定义在线学员数据结构,用于存储每一位学员的考勤信息,结构如下:
public struct learner
{
public string number; //學号
public string name;//姓名
public DateTime lasttime;//签到时间
public DateTime curtime; //登录时间
public string ip;//IP地址
public string location;//位置
public int class_id;//班级号
}
其次,声明ArrayList类型静态变量_allusert和_activeuser,分别用于存储所有已登录用户和活动用户。当用户登录后,调用AddUserToOnline()方法将当前用户加入_activeuser列表。类中定义ClearExptionUser()方法,用于检测清理非活动用户(用户签到时间在某个时限之外,则被置为非活动用户),当用户签到时间超过时限时,调用MoveUser()方法,将用户从_activeuser转移到_alluser中。类中的其他方法执行时,首先调用ClearExptionUser()方法,清理非活动用户。
asp.net应用程序运行在应用程序域中,每次应用程序域重启,程序中的静态变量都会重置。因此,此种方式稳定性受应用程序域影响。重启有很多原因,有些因素由服务器控制,也有些是网站原因,比如,网站的目录被修改,web.config 被修改等等。
3.2 缓存数据表方式
ASP.NET 提供了两种可以用来创建高性能Web应用程序的缓存类型。第一种叫做输出缓存,它允许将动态页或用户控件响应存储在输出流(从发起服务器到请求浏览器)中任何具备HTTP 1.1缓存功能的设备上。当后面的请求发生时,不执行页或用户控件代码,缓存的输出用于满足该请求[3]。第二种类型的缓存是传统的应用程序数据缓存,可以使用它以编程方式将任意对象(例如数据集)存储到服务器内存,这样应用程序可以节省重新创建这些对象所需的时间和资源。本文使用应用程序数据缓存。
在类中定义方法BuildCacheOnlineTable(),该方法内声明一张DataTable,用于保存学员信息,并调用HttpRuntime.Cache.Add()方法将DataTable添加到HttpRuntime.Cache对象中,该对象具有依赖项、过期和优先级策略以及一个委托。类中声明一个OnRemove()方法,做为缓存被移除时的回调方法,在OnRemove()方法中向应用程序日志中插入一条记录,记录缓存被移除的时间及原因等。
BuildCacheOnlineTable()部分代码如下:
DataTable dt = new DataTable(); //声明数据表
DataColumn col1 = dt.Columns.Add("ID", typeof(Int32)); //加入ID列,int类型
col1.AllowDBNull = false; //不允许为空
col1.AutoIncrement = true; //列值自动递增
col1.AutoIncrementSeed = 1; //列起始值为1
col1.AutoIncrementStep = 1; //增量为1
col1.Unique = true; //唯一性约束
DataColumn col2 = dt.Columns.Add("number", typeof(String));//加入“number”列,字符串类型
col2.AllowDBNull = true;//不允许为空
col2.Unique = true;//唯一性约束
加入其余列的代码省略……
HttpRuntime.Cache.Add("UserOnlineTable",dt,null,DateTime.Now.AddYears(10), TimeSpan.Zero, CacheItemPriority.Normal, callback);//將DataTable加入到缓存中
关于HttpRuntime.Cache.Add方法的部分参数说明如下:
UserOnlineTable: 用于引用该项的缓存键;
dt: 要添加到缓存的项,及用户数据表;
null:表示该项缓存没有依赖项;
CacheItemPriority.Normal: 本次缓存对象的优先级为普通;
callback: 在从缓存中移除对象时所调用的委托。当从缓存中删除应用程序的对象时,可使用它来通知应用程序。
3.3 数据库存储方式
第3种方式即采用数据库存储,将考勤信息保存到一张数据表中。根据待存储信息,最终设计的数据库表如图2所示。
数据库表的访问通过DAL(数据访问层)层所提供的方法,包括数据库的连接,记录的增加、删除、修改等操作。部分代码如下:
Database data = new Database();//初始化数据库操作类
SqlParameter[] prams = {//sql语句参数的赋值data.MakeInParam("@UserID",SqlDbType.Char,16,userid), //输入参数userid
data.MakeInParam("@UserName",SqlDbType.Char,50,username), //输入参数username
……
};
int retval = data.RunProc("proc_tbTmp_Insert", prams);//调用存储过程,插入用户信息
当用户签到时执行UpdateOnline()方法,更新学员的签到时间和所在位置,每天学员登录时,程序自动调用DeleteOnlineUser()方法,删除前一天的学员考勤信息。教师或者管理员端调用GetOnlineUserTable()方法获取对应班级的学员考勤信息,可导出到Excel文件保存。
在实际应用中,本文采用数据库存储方式。考勤情况如图3所示。
4 结束语
针对在线学习模式下的考勤管理,本文设计了实时考勤模块,并提供了三种方式处理学员考勤信息,其中静态变量方式存取速度比较快,但是由于多种因素制约,稳定性不高;缓存数据表方式稳定性取决于服务器的负载情况,当负载较时,缓存对象会被移除,由于有回调方法的机制,可以在缓存被移除时采取相应措施,对于提高稳定性有一定的作用。数据库存储方式访问速度与效率稍低,但稳定性方面优于前两者。最后,希望本文所做的工作能对在线学习系统以及智能考勤系统的开发人员有所启发。
参考文献:
[1] Henry P. E-learning technology, content and services[J]. Education + Training, 2001,43(4):249-255.
[2] 黄丽雯,等. 智能考勤模式的研究与开发[J]. 重庆工学院学报,2007,21(1):110-112
[3] http://msdn.microsoft.com/library/CHS/cpref/html/frlrfSystemWebHttpRuntimeClassCacheTopic.asp[EB/OL].
关键词:在线学习;E-learning;在线考勤
中图分类号:TP393文献标识码:A文章编号:1009-3044(2008)20-30264-03
Research of Real-time Attendance Method for E-learning System Based on .NET Framework
XIONG Shu-feng, CHU Long-xian, LI Bo
(Software College of Pingdingshan University, Pingdingshan 467000, China)
Abstract: E-learning technology is the direction of modern education development. How to manage the students effectively in E-learning is the next problem that has to be solved imperatively. In this article, it had done a deep research for attendance management in E-learning pattern. The research took an E-learning system's actual development with .NET platform as an example and aimed at the characteristic that the students flowed frequently and the attendance required timeliness in order to expatiate the system design of attendance module and the accessing method of attendance information.
Key words: online study; e-learning; online attendance
1 引言
目前,多数高等院校都架设了校园网,校园网不但是高校师生获取信息的便捷手段,也是提高办公效率, 实现无纸化办公的重要手段, 同时随着高等教育改革的进一步发展,建立在计算机网络基础上的“在线学习”技术(e-learning)正日益成为教育发展的一个方向, 在线学习技术的出现使得网络教学、远程教学成为可能[1]。在线学习系统中,以学员自主学习为主,但不排除个别学员旷课,迟到等情况。因此为在线学习系统增加一个考勤模块,便可以实时掌握学员的考勤情况[2]。本文结合实际应用,深入讨论在线学习模式下的实时考勤方法。
2 考勤模块总体设计
在实际应用中,考勤信息结构主要包括学号、姓名、登录时间、签到时间、位置、IP地址、班级号等。每天学员上课登录系统后,系统自动在签到用户列表中加入学员登录情况信息,登录流程如图1所示。
当教师需要掌握学员考勤情况时,可以向学员发出指令要求学员点击系统提供的“签到”按钮。学员签到后,考勤信息表中“签到时间”和“位置”自动更新为当前时间和学员当前位置。考勤模块提供的主要方法及描述如下:
(1)InsertOnlineUser():插入一条新的登录学员信息;
(2)UpdateOnline():更新学员的签到时间和位置;
(3)DeleteOnlineUser():删除一位学员信息;
(4)ClearExptionUser():清除超时学员信息;
(5)GetOnlineUserTable():获取满足条件的在线学员信息表;
(6)GetPlace():获取学员当前所在位置。
3 考勤信息保存方式
目前WEB应用中对于用户在线状态的监控,通常使用session方式。session机制是一种服务器端的机制,服务器使用一种类似于散列表的结构来保存信息。程序一般都是在用户做log off的时候发个指令去删除session,然而浏览器从来不会主动在关闭之前通知服务器它将要被关闭,因此服务器根本不会有机会知道浏览器已经关闭。服务器会一直保留这个会话对象直到它处于非活动状态超过设定的间隔为止。在线学习系统中对学员考勤信息的实时性要求比较高,无法使用session方式,因此信息表的保存方式是考勤模块实现过程中需要解决的一个关键问题。本文针对实时考勤的特点,提出了3种候选解决方法:
(1)采用静态变量方式;
(2)缓存数据表方式;
(3)数据库存储方式。
3.1 采用静态变量方式
静态变量存放在内存的全局数据区,在程序整个运行期间都不释放,因此当在线学习系统执行服务时,可以使用静态变量保存用户考勤信息。首先定义在线学员数据结构,用于存储每一位学员的考勤信息,结构如下:
public struct learner
{
public string number; //學号
public string name;//姓名
public DateTime lasttime;//签到时间
public DateTime curtime; //登录时间
public string ip;//IP地址
public string location;//位置
public int class_id;//班级号
}
其次,声明ArrayList类型静态变量_allusert和_activeuser,分别用于存储所有已登录用户和活动用户。当用户登录后,调用AddUserToOnline()方法将当前用户加入_activeuser列表。类中定义ClearExptionUser()方法,用于检测清理非活动用户(用户签到时间在某个时限之外,则被置为非活动用户),当用户签到时间超过时限时,调用MoveUser()方法,将用户从_activeuser转移到_alluser中。类中的其他方法执行时,首先调用ClearExptionUser()方法,清理非活动用户。
asp.net应用程序运行在应用程序域中,每次应用程序域重启,程序中的静态变量都会重置。因此,此种方式稳定性受应用程序域影响。重启有很多原因,有些因素由服务器控制,也有些是网站原因,比如,网站的目录被修改,web.config 被修改等等。
3.2 缓存数据表方式
ASP.NET 提供了两种可以用来创建高性能Web应用程序的缓存类型。第一种叫做输出缓存,它允许将动态页或用户控件响应存储在输出流(从发起服务器到请求浏览器)中任何具备HTTP 1.1缓存功能的设备上。当后面的请求发生时,不执行页或用户控件代码,缓存的输出用于满足该请求[3]。第二种类型的缓存是传统的应用程序数据缓存,可以使用它以编程方式将任意对象(例如数据集)存储到服务器内存,这样应用程序可以节省重新创建这些对象所需的时间和资源。本文使用应用程序数据缓存。
在类中定义方法BuildCacheOnlineTable(),该方法内声明一张DataTable,用于保存学员信息,并调用HttpRuntime.Cache.Add()方法将DataTable添加到HttpRuntime.Cache对象中,该对象具有依赖项、过期和优先级策略以及一个委托。类中声明一个OnRemove()方法,做为缓存被移除时的回调方法,在OnRemove()方法中向应用程序日志中插入一条记录,记录缓存被移除的时间及原因等。
BuildCacheOnlineTable()部分代码如下:
DataTable dt = new DataTable(); //声明数据表
DataColumn col1 = dt.Columns.Add("ID", typeof(Int32)); //加入ID列,int类型
col1.AllowDBNull = false; //不允许为空
col1.AutoIncrement = true; //列值自动递增
col1.AutoIncrementSeed = 1; //列起始值为1
col1.AutoIncrementStep = 1; //增量为1
col1.Unique = true; //唯一性约束
DataColumn col2 = dt.Columns.Add("number", typeof(String));//加入“number”列,字符串类型
col2.AllowDBNull = true;//不允许为空
col2.Unique = true;//唯一性约束
加入其余列的代码省略……
HttpRuntime.Cache.Add("UserOnlineTable",dt,null,DateTime.Now.AddYears(10), TimeSpan.Zero, CacheItemPriority.Normal, callback);//將DataTable加入到缓存中
关于HttpRuntime.Cache.Add方法的部分参数说明如下:
UserOnlineTable: 用于引用该项的缓存键;
dt: 要添加到缓存的项,及用户数据表;
null:表示该项缓存没有依赖项;
CacheItemPriority.Normal: 本次缓存对象的优先级为普通;
callback: 在从缓存中移除对象时所调用的委托。当从缓存中删除应用程序的对象时,可使用它来通知应用程序。
3.3 数据库存储方式
第3种方式即采用数据库存储,将考勤信息保存到一张数据表中。根据待存储信息,最终设计的数据库表如图2所示。
数据库表的访问通过DAL(数据访问层)层所提供的方法,包括数据库的连接,记录的增加、删除、修改等操作。部分代码如下:
Database data = new Database();//初始化数据库操作类
SqlParameter[] prams = {//sql语句参数的赋值data.MakeInParam("@UserID",SqlDbType.Char,16,userid), //输入参数userid
data.MakeInParam("@UserName",SqlDbType.Char,50,username), //输入参数username
……
};
int retval = data.RunProc("proc_tbTmp_Insert", prams);//调用存储过程,插入用户信息
当用户签到时执行UpdateOnline()方法,更新学员的签到时间和所在位置,每天学员登录时,程序自动调用DeleteOnlineUser()方法,删除前一天的学员考勤信息。教师或者管理员端调用GetOnlineUserTable()方法获取对应班级的学员考勤信息,可导出到Excel文件保存。
在实际应用中,本文采用数据库存储方式。考勤情况如图3所示。
4 结束语
针对在线学习模式下的考勤管理,本文设计了实时考勤模块,并提供了三种方式处理学员考勤信息,其中静态变量方式存取速度比较快,但是由于多种因素制约,稳定性不高;缓存数据表方式稳定性取决于服务器的负载情况,当负载较时,缓存对象会被移除,由于有回调方法的机制,可以在缓存被移除时采取相应措施,对于提高稳定性有一定的作用。数据库存储方式访问速度与效率稍低,但稳定性方面优于前两者。最后,希望本文所做的工作能对在线学习系统以及智能考勤系统的开发人员有所启发。
参考文献:
[1] Henry P. E-learning technology, content and services[J]. Education + Training, 2001,43(4):249-255.
[2] 黄丽雯,等. 智能考勤模式的研究与开发[J]. 重庆工学院学报,2007,21(1):110-112
[3] http://msdn.microsoft.com/library/CHS/cpref/html/frlrfSystemWebHttpRuntimeClassCacheTopic.asp[EB/OL].