在修改 Global.asax.vb
Imports MvcMiniProfiler
Sub Application_BeginRequest()
' 如果是本機連線,MiniProfiler才啟用
If Request.IsLocal() Then
MiniProfiler.Start()
End If
End Sub
Sub Application_EndRequest()
MiniProfiler.Stop()
End Sub
接下來,我們修改Site.Master,
- 先載入 jQuery
- MiniProfiler的Render設定
<!-- MVC預設有載入jQuery,另在 </head>之前加上以下程式碼即可 --> <%: MvcMiniProfiler.MiniProfiler.RenderIncludes() %> </head>
下一步,是在 Controller 裡撰寫測試程式碼,測試程式碼必須使用 Using ~ End Using,例如,
Imports MvcMiniProfiler
Public Class HomeController
Inherits System.Web.Mvc.Controller
Function Index() As ActionResult
ViewData("Message") = "歡迎使用 ASP.NET MVC!"
' 取得現在執行HttpContext內的MiniProfiler
Dim mp As MiniProfiler = MiniProfiler.Current()
' Step,現在步驟
Using mp.Step("Doing complex stuff")
Using mp.Step("Step A")
' 做一些事
System.Threading.Thread.Sleep(100)
End Using
Using mp.Step("Step B")
' 做一些事
System.Threading.Thread.Sleep(250)
End Using
End Using
Return View()
End Function
Function About() As ActionResult
Return View()
End Function
End Class
讓我們將網頁執行起來,來看結果。
我們可以看到左上角多了一個數字,我們點擊一下,看內容。
對照一下我們的程式,第一次網頁啟動花費約二秒,Step A 我們Sleep(100),Step B我們Sleep(250),加一加約 2.3 秒。透過這樣的方法,可以讓我們非常明確了解,每一段程式碼執行的效率。就像李昌鈺博士所說:
「有一分證句,說一分話。」
資料庫測速
MiniProfiler還可以針對網頁與資料庫之間進行測速,不過我怎麼測都不成功,但還是有測出一些心得,所以寫下來。他們會要你改寫 web.config ,例如,
<remove invariant="MvcMiniProfiler.Data.ProfiledDbProvider" />
<add name="MvcMiniProfiler.Data.ProfiledDbProvider"
invariant="MvcMiniProfiler.Data.ProfiledDbProvider"
description="MvcMiniProfiler.Data.ProfiledDbProvider"
type="MvcMiniProfiler.Data.ProfiledDbProviderFactory, MvcMiniProfiler, Version=1.7.0.0, Culture=neutral, PublicKeyToken=b44f9351044011a3" />
測試時,一直出現錯誤,說他不認識這堆東西,後來我去查最上層的(C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\machine.config),要多加一個DbProviderFactories才對。
加在 <configuration> 之下。
<system.data>
<DbProviderFactories>
<remove invariant="MvcMiniProfiler.Data.ProfiledDbProvider" />
<add name="MvcMiniProfiler.Data.ProfiledDbProvider"
invariant="MvcMiniProfiler.Data.ProfiledDbProvider"
description="MvcMiniProfiler.Data.ProfiledDbProvider"
type="MvcMiniProfiler.Data.ProfiledDbProviderFactory, MvcMiniProfiler, Version=1.7.0.0, Culture=neutral, PublicKeyToken=b44f9351044011a3" />
</DbProviderFactories>
</system.data>
然後修改 Global.asax.vb
Sub Application_Start()
AreaRegistration.RegisterAllAreas()
RegisterGlobalFilters(GlobalFilters.Filters)
RegisterRoutes(RouteTable.Routes)
' 新增以下MiniProfiler設定
MiniProfiler.Settings.SqlFormatter = new MvcMiniProfiler.SqlFormatters.SqlServerFormatter()
' SqlCeConnectionFactory 必須傳入資料庫連線字串
Dim factory = new System.Data.Entity.Infrastructure.SqlCeConnectionFactory("Data Source=.\sqlexpress;Initial Catalog=Northwind;Integrated Security=True")
Dim profiled = new MvcMiniProfiler.Data.ProfiledDbConnectionFactory(factory)
System.Data.Entity.Database.DefaultConnectionFactory = profiled
End Sub
而且在測試過程中發現,我是使用 Entity Framework 4.1 (DbContext),目前看來是還無法使用資料庫部份功能,因為現在 MiniProfiler 目前只支援 ObjectContext 物件,我都還沒傳進去就 Visual Studio 就已經跟我報錯了!@_@
另外小小抱怨一下,它的說明文件嚴重不足,
參考資料:


沒有留言:
張貼留言
感謝您的留言,如果我的文章你喜歡或對你有幫助,按個「讚」或「分享」它,我會很高興的。