標籤:
原文: http://www.asp.net/mvc/overview/performance/profile-and-debug-your-aspnet-mvc-app-with-glimpse
Glimpse為ASP.NET程式提供了詳細的效能、調試、診斷功能. 它在每一個頁面的下面展示了關鍵的效能指標. 當你需要瞭解伺服器的健全狀態能讓你深入到你的應用. Glimpse提供了非常多的有價值的資訊我建議你在開發環境中都使用它. Fiddler 和 F-12 開發人員工具 提供了一個用戶端的視圖, Glimpse提供一個資料來自服務端的詳細視圖. 下面的教程的重點集中在使用在ASP.NET MVC和EF中使用Glimpse, 當然Glimpse還有For XXX的很多包. 官方文檔點這Glimpse docs. Glimpse是一個開源系統.
安裝Glimpse
安裝Glimpse Mvc5 和 Glimpse EF6包:
Search for Glimpse.EF
或者
PM> Install-Package Glimpse.MVC5
PM> Install-Package Glimpse.EF6
為localhost開啟Glimpse功能
開啟http://localhost:<port #>/glimpse.axd頁面選擇右上方的Turn Glimpse On按鈕
現在開啟localhost, Heads Up Display (HUD) 顯示在頁面的底部.
Glimpse HUD page 詳細展示了一些耗時資訊. 這些效能資料能立即告訴你問題在哪 - 在你開始測試前. 點擊右下角的G出現下面一個資訊面板:
在上面的圖中, the Execution標籤 被選中, 顯示了管道中Action和Filter的時序資訊.
Timeline 標籤
public ActionResult Index(int? id, int? courseID, int ? eager){ var viewModel = new InstructorIndexData(); viewModel.Instructors = db.Instructors .Include(i => i.OfficeAssignment) .Include(i => i.Courses.Select(c => c.Department)) .OrderBy(i => i.LastName); if (id != null) { ViewBag.InstructorID = id.Value; viewModel.Courses = viewModel.Instructors.Where( i => i.ID == id.Value).Single().Courses; } if (courseID != null) { ViewBag.CourseID = courseID.Value; // Eager loading if (eager != null && eager > 0) { ViewBag.eagerMsg = "Eager Loading"; viewModel.Enrollments = viewModel.Courses.Where( x => x.CourseID == courseID).Single().Enrollments; } else { // Explicit loading ViewBag.eagerMsg = "Explicit Loading"; var selectedCourse = viewModel.Courses.Where(x => x.CourseID == courseID).Single(); db.Entry(selectedCourse).Collection(x => x.Enrollments).Load(); foreach (Enrollment enrollment in selectedCourse.Enrollments) { db.Entry(enrollment).Reference(x => x.Student).Load(); } viewModel.Enrollments = selectedCourse.Enrollments; } } return View(viewModel);}
上面的代碼允許我們傳遞一個參數(eager)去顯示資料. 在下面的圖中, 顯示了Index Action的執行情況:
在代碼中我們把eager是設為1:
你可以把滑鼠放在相應的事件色塊中查看詳細的資訊:
模型繫結Model Binding
model binding選項卡 提供給我們一些資訊協助我們瞭解我們的表單參數是怎麼綁定到模型上的或者為什麼有些沒有按照我們的預想綁定. 看到下面圖片右邊中間部分的 ? 表徵圖沒, 點擊它可以到Glimpse的協助頁面.
路由
Routes選項卡協助我們debug和瞭解路由情況. 在下面的圖中, 產品路由被選中 (綠色的就是選中的).
路由constraints, Areas和data tokens都能顯示出來. 更多資訊見Glimpse Routes和Attribute Routing in ASP.NET MVC 5.
Profile and debug your ASP.NET MVC app with Glimpse