更進一層的.Net事件跟蹤機制
查看英文原文:Better Tracing And Instrumentation For .NET Apps
.NET 4.5 新增了 EventSource 和 EventListener 兩個類,為那些使用 Windows 事件跟蹤(Event Tracing for Windows, ETW)工具來記錄事件的應用程序提供了一個更加簡單的編程機制。若與 PerfView 這樣的分析工具結合在一起,便能更好地發揮 .NET 應用程序中的跟蹤功能。
.NET 4.5 引入的 EventSource 類是一個可供開發人員繼承和擴展他們自己的事件源的基類。開發人員可以給他們想要記錄的每個不同事件類型添加新的方法——這些方法會在適當的位置被應用程序調用。從代碼級別來分析,這些方法都會調用 WriteEvent ()這一方法,它會依次發送事件給設定好的 EventListener,其中包括會發送日志信息給 ETW 的內置偵聽器。Vance Morrison 對此做了詳細介紹。
Vance 發布的一份參考指南"Strongly Typed Events (EasyETW)"中提到:
ETW 是 Windows 下一個高效的事件系統,它不僅在 Windows 核心層,而且在許多 Windows 子系統中都得到了廣泛運用。內置 ETW 源提供了豐富的‘底層’信息(如指示 CPU、磁盤以及網絡活動在哪兒發生等),而 EventSource 就基于這些構建而成,它允許程序員來標注“高級”語義行為,進而再為高級任務分配資源。
當然,你還能自定義 EventListeners 做更多工作,而不僅僅是給 ETW 發送信息——例如,開發 silverlight 程序時,你可以通過網絡向主機發送跟蹤數據。
PerfView 則是微軟提供的一個性能分析工具。它被部署為一個單獨的執行文件,能夠支持監測任何程序的 CPU 和內存使用情況,同時還具備一些非常有用的功能,特別是在分析托管代碼方面。如果你想了解更多關于如何使用這個工具的內容,請參考 Vance 發布的一些相關視頻。