使用MiniProfiler給Asp.net MVC和Entity Framework號脈(附源碼)


在學習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的結果

t1

 

二,下載源碼,運行程序

1. 下載源代碼

源代碼的下載地址是 AutofacMVC.zip 

 

2. 使用Nuget下載依賴

源代碼使用了Nuget的包管理,可以非常方便的下載外部引用。Nuget的使用,可以看這里Nuget如何自動下載依賴DLL引用

 

3. 創建數據庫

修改web.config中的數據庫鏈接字符串,並創建對應的數據庫School, 然后使用EF的Migration創建表結構和初始化數據

在"Package Manager Console”中輸入”Update-Database”命令。

b2

 

b1

 

如果在運行命令的過程中出現了錯誤:

Package Manager Console Update-Database CommandNotFoundException only in a specific VS project

那么在執行Update-Database命令之前,先運行

Install-Package EntityFramework –IncludePrerelease

 

4. 最后運行程序,頁面如下:

b3

 

三, 添加MVC Profiler

1. 通過Nuget添加MiniProfiler引用

b4

 

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記錄的結果了。

b5

 

四, 添加Entity Framework Profiler

1, 從Nuget中添加MiniProfiler.EF

b6

2. 在Global.asax中,添加代碼

protected void Application_Start()
       {
           MiniProfilerEF.Initialize();
………
}

 

3. 刷新頁面

刷新的頁面,能夠發現MiniProfiler問我們記錄了EF訪問數據的信息

b7

 

b8

 

五,總結

MiniProfiler是平時開發的利器,以可視化的方式讓你隨時監控開發過程中的性能問題。

MiniProfiler提供了不只是提供了MVC和EF擴展,還有針對windows開發,WCF, NHibernate等.

MiniProfiler應該作為項目開發中的一個標配,如果你的項目中,還沒有使用到,趕快試一試,它一定能夠為你的開發帶來意向不到的正能量。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM