在MVC 3專案中,NuGet 指令:Install-Package MiniProfiler
在修改 Global.asax.vb
01 | Imports MvcMiniProfiler |
03 | Sub Application_BeginRequest() |
05 | If Request.IsLocal() Then |
10 | Sub Application_EndRequest() |
接下來,我們修改Site.Master,
- 先載入 jQuery
- MiniProfiler的Render設定
2 | <%: MvcMiniProfiler.MiniProfiler.RenderIncludes() %> |
下一步,是在 Controller 裡撰寫測試程式碼,測試程式碼必須使用
Using ~ End Using,例如,
01 | Imports MvcMiniProfiler |
03 | Public Class HomeController |
04 | Inherits System.Web.Mvc.Controller |
06 | Function Index() As ActionResult |
07 | ViewData( "Message" ) = "歡迎使用 ASP.NET MVC!" |
10 | Dim mp As MiniProfiler = MiniProfiler.Current() |
13 | Using mp. Step ( "Doing complex stuff" ) |
14 | Using mp. Step ( "Step A" ) |
16 | System.Threading.Thread.Sleep(100) |
19 | Using mp. Step ( "Step B" ) |
21 | System.Threading.Thread.Sleep(250) |
28 | Function About() As ActionResult |
讓我們將網頁執行起來,來看結果。
我們可以看到左上角多了一個數字,我們點擊一下,看內容。
對照一下我們的程式,第一次網頁啟動花費約二秒,Step A 我們Sleep(100),Step B我們Sleep(250),加一加約 2.3 秒。透過這樣的方法,可以讓我們
非常明確了解,每一段程式碼執行的效率。就像
李昌鈺博士所說:
「有一分證句,說一分話。」
資料庫測速
MiniProfiler還可以針對網頁與資料庫之間進行測速,不過我怎麼測都不成功,但還是有測出一些心得,所以寫下來。
他們會要你改寫 web.config ,例如,
1 | < remove invariant = "MvcMiniProfiler.Data.ProfiledDbProvider" /> |
2 | < add name = "MvcMiniProfiler.Data.ProfiledDbProvider" |
3 | invariant = "MvcMiniProfiler.Data.ProfiledDbProvider" |
4 | description = "MvcMiniProfiler.Data.ProfiledDbProvider" |
5 | 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> 之下。
3 | < remove invariant = "MvcMiniProfiler.Data.ProfiledDbProvider" /> |
4 | < add name = "MvcMiniProfiler.Data.ProfiledDbProvider" |
5 | invariant = "MvcMiniProfiler.Data.ProfiledDbProvider" |
6 | description = "MvcMiniProfiler.Data.ProfiledDbProvider" |
7 | type = "MvcMiniProfiler.Data.ProfiledDbProviderFactory, MvcMiniProfiler, Version=1.7.0.0, Culture=neutral, PublicKeyToken=b44f9351044011a3" /> |
然後修改 Global.asax.vb
01 | Sub Application_Start() |
02 | AreaRegistration.RegisterAllAreas() |
04 | RegisterGlobalFilters(GlobalFilters.Filters) |
05 | RegisterRoutes(RouteTable.Routes) |
08 | MiniProfiler.Settings.SqlFormatter = new MvcMiniProfiler.SqlFormatters.SqlServerFormatter() |
10 | Dim factory = new System.Data.Entity.Infrastructure.SqlCeConnectionFactory( "Data Source=.\sqlexpress;Initial Catalog=Northwind;Integrated Security=True" ) |
11 | Dim profiled = new MvcMiniProfiler.Data.ProfiledDbConnectionFactory(factory) |
12 | System.Data.Entity.Database.DefaultConnectionFactory = profiled |
而且在測試過程中發現,我是使用 Entity Framework 4.1 (DbContext),目前看來是還無法使用資料庫部份功能,因為現在 MiniProfiler 目前只支援 ObjectContext 物件,我都還沒傳進去就 Visual Studio 就已經跟我報錯了!@_@
另外小小抱怨一下,它的說明文件嚴重不足,
參考資料:
沒有留言:
張貼留言
感謝您的留言,如果我的文章你喜歡或對你有幫助,按個「讚」或「分享」它,我會很高興的。