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.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 'Log Service對象,處理日誌資料的各種需求
Dim strUseMsg As String '給使用者顯示的資訊
Dim CacheTime As String '日誌在記憶體中緩衝的時間
Dim onRemove As New CacheItemRemovedCallback(AddressOf Me.RemovedCallBackLog) '回調
Try
If IsNothing(Cache("UseServer")) Then BuildUseCache()'若使用者緩衝為空白,則重建使用者緩衝(Log Service對象中要使用使用者服務對象)
UseServer = CType(Cache("UseServer"), clsUseServer) '將使用者服務對象緩衝
clsLogFunction.LogHebin() '在管理員登入時,合并記錄檔
LogServer = New clsLogServer(UseServer) '從使用者服務對象建立Log Service對象
CacheTime = ConfigurationSettings.AppSettings("LogCacheTime") '從Web.config中獲得緩衝日誌對象的時間
Cache.Insert("LogServer", LogServer, Nothing,DateTime.Now.AddMinutes(CInt(CacheTime)), TimeSpan.Zero, CacheItemPriority.Normal, onRemove) '將Log Service對象緩衝
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自動在伺服器端建立學生目錄,以後可上傳、下載檔案、線上編輯文字檔等操作。
結束語
該自訂日誌管理系統在蘇州大學、鄭州大學、河南大學等高校校園網一卡通系統中作為子系統實現,運行穩定、安全,獲得了較好的經濟效益。