在學習python開發框架pylons/pyramid的過程中,里面有個非常棒的頁面性能監控功能,這樣在開發過程中,你能清楚的知道當前頁面的性能以及其它參數。
這里介紹一下如何給Asp.net MVC和Entity Framework也添加上性能監控,讓你在開發過程中隨時掌握當前程序運行的信息。
這里是在Autofac+MVC+EF篇的源碼基礎上,一步一步的介紹添加Profiler的過程。
如果有興趣了解Autofac的應用,可以看這里 IoC容器Autofac(4) - Autofact + Asp.net MVC + EF Code First(附源碼)
最終源代碼在這里 MiniProfiler.zip
閱讀目錄:
一、MiniProfiler應用的結果
二、下載源碼,運行程序
三、添加MVC Profiler
四、添加Entity Framework Profiler
五、總結
一,MiniProfiler應用的結果
先看看應用了MiniProfiler的結果
二,下載源碼,運行程序
1. 下載源代碼
源代碼的下載地址是 AutofacMVC.zip
2. 使用Nuget下載依賴
源代碼使用了Nuget的包管理,可以非常方便的下載外部引用。Nuget的使用,可以看這里Nuget如何自動下載依賴DLL引用
3. 創建數據庫
修改web.config中的數據庫鏈接字符串,並創建對應的數據庫School, 然后使用EF的Migration創建表結構和初始化數據
在"Package Manager Console”中輸入”Update-Database”命令。
如果在運行命令的過程中出現了錯誤:
Package Manager Console Update-Database CommandNotFoundException only in a specific VS project
那么在執行Update-Database命令之前,先運行
Install-Package EntityFramework –IncludePrerelease
4. 最后運行程序,頁面如下:
三, 添加MVC Profiler
1. 通過Nuget添加MiniProfiler引用
2. 在_Layout.cshmlt中添加MiniProfiler
在_Layout.cshtml中添加的MiniProfiler的相關代碼,這樣就能在每個頁面上輸出頁面的訪問信息
由於MiniProfiler生成的js需要依賴於Jquery,所以記得添加對於Jquery的引用。
@using StackExchange.Profiling <!DOCTYPE html> <html lang="en"> <head> <title>Test</title> <script type="text/javascript" src="~/Scripts/jquery-2.0.3.min.js"></script> </head> <body> @RenderBody() @MiniProfiler.RenderIncludes() </body> </html>
3. 添加MiniProfiler的Handler
上面@MiniProfiler.RenderIncludes()會在頁面上生成一段js
類似於
<script async type="text/javascript" id="mini-profiler" src="/mini-profiler-resources/includes.js?v=xwYPDDH1blvqmxgsBweNC++H7CFU3KGQ+zFcVlJPsXw=" ……
我們的系統中,應當添加Handler來處理對於上面的include.js的處理,把它交給MiniProfiler的dll來處理這個js的請求。
<handlers> <add name="MiniProfiler" path="mini-profiler-resources/*" verb="*" type="System.Web.Routing.UrlRoutingModule" resourceType="Unspecified" preCondition="integratedMode" /> </handers>
4. 在Global.asax中啟動MiniProfiler記錄
如下, 在每個request開始和結束的時候,調用MiniProfiler來記錄信息。
protected void Application_BeginRequest() { if (Request.IsLocal) { MiniProfiler.Start(); } } protected void Application_EndRequest() { MiniProfiler.Stop(); }
5. 完成所有的工作后,重新刷新頁面
重新啟動,刷新頁面,就能看到MiniProfiler記錄的結果了。
四, 添加Entity Framework Profiler
1, 從Nuget中添加MiniProfiler.EF
2. 在Global.asax中,添加代碼
protected void Application_Start() { MiniProfilerEF.Initialize(); ……… }
3. 刷新頁面
刷新的頁面,能夠發現MiniProfiler問我們記錄了EF訪問數據的信息
五,總結
MiniProfiler是平時開發的利器,以可視化的方式讓你隨時監控開發過程中的性能問題。
MiniProfiler提供了不只是提供了MVC和EF擴展,還有針對windows開發,WCF, NHibernate等.
MiniProfiler應該作為項目開發中的一個標配,如果你的項目中,還沒有使用到,趕快試一試,它一定能夠為你的開發帶來意向不到的正能量。