top
Loading...
開發基于ASP.NET的自定義日志系統
摘 要 介紹了利用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、自定義日志系統實現技術

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)高速緩存用戶和日志。用戶和日志文件在運行一段時間后,通常都變得很大,20M甚至40M,這樣大的數據,如果每次都要進行磁盤訪問,將耗費大量時間,所以必須進行高速緩存,同時而又不能影響數據實時性的需求。 在ASP.NET中,可通過Cache.Insert方法將用戶對象高速緩存,在緩存超時后,系統將自動回調,更新緩存數據,這樣就實現緩存的自動化。我們可將超時時間的限定設置在Web.Config的appSettings小節中。

下面是日志對象緩存的事例代碼:

Private Sub RemovedCallBackLog(ByVal key As String, ByVal Value As Object, ByVal Reason As CacheItemRemovedReason) '當緩存超時,自動調用該函數
BuildLogCache()
End Sub
Private Sub BuildLogCache() '重建日志緩存,重新讀取磁盤數據到內存
Dim UseServer As clsUseServer '用戶服務對象,處理用戶數據的各種需求
Dim LogServer As clsLogServer '日志服務對象,處理日志數據的各種需求
Dim strUseMsg As String '給用戶顯示的信息
Dim CacheTime As String '日志在內存中緩存的時間
Dim onRemove As New CacheItemRemovedCallback(AddressOf Me.RemovedCallBackLog) '回調
Try
If IsNothing(Cache("UseServer")) Then BuildUseCache()'若用戶緩存為空,則重建用戶緩存(日志服務對象中要使用用戶服務對象)
UseServer = CType(Cache("UseServer"), clsUseServer) '將用戶服務對象緩存
clsLogFunction.LogHebin() '在管理員登錄時,合并日志文件
LogServer = New clsLogServer(UseServer) '從用戶服務對象新建日志服務對象
CacheTime = ConfigurationSettings.AppSettings("LogCacheTime") '從Web.config中獲得緩存日志對象的時間
Cache.Insert("LogServer", LogServer, Nothing,DateTime.Now.AddMinutes(CInt(CacheTime)), TimeSpan.Zero, CacheItemPriority.Normal, onRemove) '將日志服務對象緩存
Catch ex As Exception
clsDebug.DebugFileOut(ex.Message) '記錄異常信息
End Try
End Sub

(4)Web打印和圖示技術的實現。Web打印通過ActiveReports組件完成,該組件與.NET開發環境完美集合,提供各種服務器控件通過后臺代碼完成數據的檢索和顯示。圖示是采用繪圖對象Bitmap、Graphics、Pen等在服務器端手工完成條圖、線圖、餅圖的繪制,然后用BitMap.Save(Response.OutputStream, ImageFormat.Gif)方法將圖發送到客戶端的IE中。

(5)網絡硬盤服務模塊。通過.net提供的對象DirctoryInfo、FileInfo、Dirctory、File在服務器端實現文件、目錄的創建保存等工作。客戶端通過Cookies保存學生的ID即卡號,當學生第一次運行網絡硬盤服務時,將根據部門和用戶ID自動在服務器端創建學生目錄,以后可上載、下載文件、在線編輯文本文件等操作。

結束語


該自定義日志管理系統在蘇州大學、鄭州大學、河南大學等高校校園網一卡通系統中作為子系統實現,運行穩定、安全,獲得了較好的經濟效益。
作者:http://www.zhujiangroad.com
來源:http://www.zhujiangroad.com
北斗有巢氏 有巢氏北斗