數據庫中的 ASP.Net 使用者活動跟踪
這是關於一個簡單而有效的活動記錄框架,我想將它與我現有的基於 ASP.Net 的 Web 應用程序集成(我有一個基於 LINQ-to-SQL 的 SQL DB 作為後端)。我正在使用類似服務架構的東西來執行數據庫操作——即呼叫相關的 LINQ 操作。我為幾乎每個實體(即數據庫表)提供了一個服務類,它處理 CRUD 操作。
一般來說,我需要跟踪活動,例如 - Mr.X 添加了一個新項目,My.Y 在此過濾器上搜尋,Mr.Z 將 Grid 的結果導出到 excel 文件等……以及基於類似簡單操作的日誌記錄(欄位級日誌記錄目前還很遠)
所以,這就是我在 SO、其他論壇和網路上進行兩天的研發時發現的:
方法 1: 使用兩個表的簡單舊方法:Activity(儲存所有活動及其參與者)和 ActivityType(列出活動類型)。我有一個服務層,所以我可以有一個“ServieBase”類,它可以點擊所有 CRUD 事件並記錄我感興趣的事件。一切都在程式碼中處理。
範例: http ://dotnetslackers.com/articles/aspnet/Tracking-User-Activity.aspx
方法 2: 使用數據庫 TRIGGER 在表級別點擊事件,然後執行日誌記錄。這對於應用程序來說將是完全“抽象的”。我在每個表中都有“LastModifiedBy”欄位,因此我將獲取“演員”數據並且可以進行日誌記錄,但這可能會限制我進行 DB 操作並需要我單獨跟踪其他應用程序活動。但如果它值得我可以考慮。
**方法3:(**概念,需要更多指導)
3.1 MVC 方法- 我們正在考慮在未來採用 MVC,並且我在 MVC 中發現了一些有效的日誌記錄技巧,例如 - (對於傳統的基於 L2S 的 Web 應用程序有類似的東西嗎?)
在 ASP.NET MVC 應用程序上記錄使用者活動 跟踪 asp.net mvc 網站的使用者活動/操作?
3.2 跟踪服務我在windows 中發現了一個“跟踪服務”功能——有它的網路等效功能嗎?
http://msdn.microsoft.com/en-us/magazine/cc163466.aspx http://www.codeproject.com/KB/WF/WWF__Tracking_Service.aspx?msg=2879654
3.3 雜項- 我遇到的其他一些選項,但似乎不太有說服力,或者我最好說他們做他們的工作,但不是我的 :-)
參考 -
http://learn.iis.net/page.aspx/480/sample-web-analytics-tracking-module/
SQL 探查器: https ://web.archive.org/web/1/http://articles.techrepublic%2ecom%2ecom/5100-10878_11-5054787.html http://technet.microsoft.com/en-us/圖書館/cc966515.aspx
那麼,怎麼說呢?歡迎任何建議和新想法。目前,我似乎介於前兩種方法之間,因為我們希望將來能夠輕鬆添加任何要記錄的額外活動。
謝謝你。
我最終使用了前兩種方法,因為它們看起來更簡單、更容易。最重要的是,它們提供了更多的控制並允許根據需要保持靈活性(即它接近實際的後端編碼,這使得它更易於訪問)
我正在標記它,因為沒有其他廣泛的評論。
這是要添加到您的工具包中的另一項:Sql Server Change Tracking。但它不會做你在這裡尋找的一切。你可以看看命令模式。我將創建一個介面 ITrackedCommand,然後將它們實現為使用者可以執行的命令。然後,每一個都通過自動呼叫 ITrackedCommand.Log 的命令調度程序執行。我認為這會讓你到達你需要去的地方。