日期:2011-08-07  浏览次数:20455 次

  摘 要 介绍了利用ASP.NET和VB.NET技术开发的用户日志管理系统,实现了对自定义格式数据库系统的动态管理,使得对日志信息的管理更加及时、高效,提高了工作效率。

  关键词 ASP.NET;VB.NET;自定义;日志;数据库

  自定义日志管理的数据库设计

  自定义日志系统是校园网一卡通系统中机房刷卡子系统的一个基于B/S开发的功能模块,该系统的后台数据库为自定义格式的数据库系统。数据库中主要的用户表和日志表的结构如下:

Structure FixUse '用户表
Public ID As Integer '用户ID
<VBFixedArray(15)> Public NoCard() As Byte '卡号
<VBFixedArray(15)> Public NoUser() As Byte '学号
<VBFixedArray(15)> Public Name() As Byte '姓名
<VBFixedArray(15)> Public PSW() As Byte '密码
Public Dept As Integer '部门ID
Public Attr As Integer '机房总管
Public AttreEx As Integer '机房总管扩展
Public Money As Integer '帐户金额
Public Power As Integer '用户权限
Public PowerEx As Integer '用户权限扩展
Public MoneyEx As Integer '帐户金额扩展
<VBFixedArray(31)> Public Rev() As Byte '系统,
End Structure
Structure FixLog '上下机、交费日志表
Dim ID As Integer '流水号
Dim Type As Integer '事件类型
<VBFixedArray(5)> Dim DateTime() As Byte '上机开始时间,若为交费,则为空
<VBFixedArray(5)> Dim MAC() As Byte '指定上机IP地址
Dim ManagerID As Integer '收费管理员ID
Dim UserID As Integer '用户ID
Dim Money As Integer '消费或交费金额 Dim ID_EquipMent As Integer '上机设备号
<VBFixedArray(5)> Dim DateTimeEnd() As Byte '下机时间
Public Location As Int64 '系统保留
<VBFixedArray(13)> Dim revex() As Byte '保留
End Structure

  日志系统的开发原理及实现技术

  1、自定义数据库开发原理

  采用ASP.NET和VB.NET三层模型开发,以Web应用程序的方式运行该模块。常用三层开发模型(ASP.NET模型)如图1所示。UI层负责与用户交互,接收用户的输入并将服务器端传来的数据呈现给客户。业务逻辑层负责接收浏览器传来的请求并将请求传给数据层,同时将请求处理结果发给浏览器。它由Web表单、XML Web服务和组件服务组成。其中Web表单是ASP.NET应用程序的核心所在,它是向客户呈现数据和信息的基础,也是响应和处理客户与显示的Web表单交互生成的信息和数据的基础。

  系统日志管理模块对用户上机、交费记录实现查找、统计、分析、图示、打印等功能。

  业务逻辑层包装在用VB.NET开发的后台类库中。

  本自定义日志管理系统功能模块结构如图2所示。因为本系统是面向所有用户,包括系统管理员,辅助管理员,和普通上机学生,所以在功能上必须对不同用户加以限定。

  查询该用户密码和余额

  查询该用户上机、交费日志

  统计、图示、打印、上机、交费

  查看用户数据库总余额
 
  按日期顺序重新排序日志文件,然后写入日志文件

  查某个用户的密码、余额

  查询

  由图2可知,普通用户登录该系统后,只能查询统计该用户的上机、交费信息。辅助管理员一般指计算中心聘用的那些临时工、或勤工俭学的学生,他们协助管理员进行机房的管理。根据管理的需要他们有一些管理级别的权限,但有些重要的统计信息他们不能获得。

  2、自定义日志系统实现技术

  2.1 技术细节

  (1)本模块首先对系统实时产生的日志文件进行合并。因为每天都会有许多新的日志文件生成,所以系统自动检索有无新的日志文件产生,若有则将其合并到总库中,并按日期建立索引,同时删除已合并的日志文件。

  (2)面向学生、面向管理员及其验证。在ASP.NET中,身份验证通过配置文件Web.config中的authentication小节实现,Forms表示通过页面表单验证,即输入的用户和密码是正确的,才能访问后续的页面表单。否则将指向登录页面。 <authentication mode="Forms" >

<forms name="cookie-name" path="/" loginUrl="/webchongyuan/login.aspx" protection="Encryption" timeout="10" />
</authentication>

  通过会话对象Session确定用户属于哪一个级别,即Session("LoginType") = LoginType,LoginType取NormalUse或NormalManager或SuperManager。

  登录验证的主要代码如下:

LoginType = UseServer.LoginIn(txtName.Text.Trim, txtPass.Text.Trim) '获得权限级别
Session("LoginType") = LoginType '将权限级别存储在会话中
Select Case LoginType
 Case DataType.Data.LoginType.SUPUERMANAGER '高级管理员
  FormsAuthentication.RedirectFromLoginPage(txtName.Text, False)
  clsDebug.DebugFileOut(txtName.Text & vbTab & Now.ToString)
  Response.Redirect("entertime.aspx") '转向后续页面
 Case DataType.Data.LoginType.NORMALMANAGER, DataType.Data.LoginType.NORMALUSER '辅助管理员或一般用户,在后续页面中通过Session来区别权限

  FormsAuthentication.RedirectFromLoginPage(txtName.Text, False)
  clsDebug.DebugFileOut(txtName.Text & vbTab & Now.ToString)
  Response.Redirect("entertime.aspx")
 Case DataType.Data.LoginType.NOUSER '用户不存在
  txtName.Text = ""
  lblMsg.Text = "用户名不存在"
End Select

  (3)高速缓存用户和日志。用户和日志文件在运行一段时间后,通常都变得