Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
tarafından Rick Anderson
Glimpse, ASP.NET uygulamaları için ayrıntılı performans, hata ayıklama ve tanılama bilgileri sağlayan, gelişen ve büyüyen bir açık kaynak NuGet paketi ailesidir. Basit, ultra hızlı yüklemek ve her sayfanın en altında önemli performans ölçümlerini görüntülemek çok basit bir işlemdir. Sunucuda neler olduğunu bulmanız gerektiğinde uygulamanızda detaya gitmenize olanak tanır. Glimpse, Azure test ortamınız da dahil olmak üzere geliştirme döngünüz boyunca kullanmanızı öneririz. Fiddler ve F-12 geliştirme araçları istemci tarafı görünümü sağlarken, Glimpse sunucudan ayrıntılı bir görünüm sağlar. Bu öğretici, Glimpse ASP.NET MVC ve EF paketlerini kullanmaya odaklanacaktır, ancak başka birçok paket mevcuttur. Mümkün olduğunda, bakımına yardımcı olduğum uygun Glimpse belgelerine bağlanacağım. Glimpse açık kaynak bir projedir; kaynak koduna ve belgelere de katkıda bulunabilirsiniz.
- Glimpse'i yükleme
- Localhost için Glimpse'i etkinleştirme
- Zaman Çizelgesi sekmesi
- Model Bağlama
- Rotalar
- Azure'da Glimpse kullanma
- Ek Kaynaklar
Glimpse'i yükleme
Glimpse'i NuGet paket yöneticisi konsolundan veya NuGet Paketlerini Yönet konsolundan yükleyebilirsiniz. Bu tanıtım için Mvc5 ve EF6 paketlerini yükleyeyim:
Glimpse.EF için arama
Yüklü paketler'i seçerek Glimpse bağımlı modüllerinin yüklü olduğunu görebilirsiniz:
Aşağıdaki komutlar Glimpse MVC5 ve EF6 modüllerini paket yöneticisi konsolundan yükler:
PM> Install-Package Glimpse.MVC5
PM> Install-Package Glimpse.EF6
Localhost için Glimpse'i etkinleştirme
http://localhost:<#>/glimpse.axd bağlantı noktasına gidin ve Glimpse'i Aç düğmesine tıklayın.
Sık kullanılanlar çubuğunuz görüntüleniyorsa, Glimpse düğmelerini sürükleyip bırakabilir ve yer işaretleri olarak ekleyebilirsiniz:
Artık uygulamanızda gezinebilirsiniz ve sayfanın en altında Heads Up Display (HUD) gösterilir.
Glimpse HUD sayfası, yukarıda gösterilen zamanlama bilgilerinin ayrıntılarını gösterir. HUD'nin görüntülediği göze çarpmayan performans verileri, test döngüsüne geçmeden önce sizi hemen bir sorun hakkında bilgilendirebilir. Sağ alt köşedeki "g" simgesine tıklanması, Glimpse panelini ortaya çıkarır:
Yukarıdaki görüntüde, işlem hattındaki eylemlerin ve filtrelerin zamanlama ayrıntılarını gösteren Yürütme sekmesi seçilidir. İzlemeyi Durdur filtre süreölçerimin işlem hattının 6. aşamasında başladığını görebilirsiniz. Basit zamanlayıcım yararlı profil/zamanlama verileri sağlasa da, yetkilendirme ve görünümü işleme için harcanan tüm zamanı kaçırır. Azure'a kadar ASP.NET MVC uygulamanız için Profil ve Zaman'da zamanlayıcım hakkında bilgi edinebilirsiniz.
Zaman Çizelgesi sekmesi
Tom Dykstra'nın üstün EF 6/MVC 5 öğreticisini eğitmen denetleyicisinde aşağıdaki kod değişikliğiyle değiştirdim:
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);
}
Yukarıdaki kod, verilerin hevesle veya açıkça yüklenmesini denetlemek için sorgu dizesini (eager) geçirmeme olanak tanır. Aşağıdaki görüntüde, açık yükleme kullanılmıştır ve zamanlama sayfasında eylem yönteminde Index yüklenen her kayıt gösterilir:
Aşağıdaki kodda, eager belirtilir ve görünüm çağrıldıktan sonra Index her kayıt getirilir:
Ayrıntılı zamanlama bilgilerini almak için bir zaman kesiminin üzerine gelebilirsiniz:
Model Bağlama
Model bağlama sekmesi, form değişkenlerinizin nasıl bağlandığını ve bazılarının neden beklediğiniz gibi bağlı olmadığını anlamanıza yardımcı olacak zengin bilgiler sağlar. Aşağıdaki görüntüde ? simgesi gösterilir. Bu simgeye tıklayarak bu özelliğin yardım sayfasını görebilirsiniz.
Yollar
Glimpse Routes sekmesi, yönlendirme hatalarını ayıklamanıza ve anlamanıza yardımcı olur. Aşağıdaki görüntüde, ürün yolu seçilidir (ve yeşil renkte gösterilir, bir Glimpse kuralı).
Yol kısıtlamaları, Alanlar ve veri belirteçleri de görüntülenir. Daha fazla bilgi için bkz. ASP.NET MVC 5'te Glimpse Routes ve Attribute Routing.
Azure'da Glimpse kullanma
Glimpse varsayılan güvenlik ilkesi yalnızca Glimpse verilerinin yerel ana bilgisayardan görüntülenmesine izin verir. Bu güvenlik ilkesini değiştirerek bu verileri uzak bir sunucuda (Azure'da bir web uygulaması gibi) görüntüleyebilirsiniz. Azure'da test ortamları için Glimpse'i etkinleştirmek için web.config dosyasının en altına vurgulanmış işareti ekleyin:
<glimpse defaultRuntimePolicy="On" endpointBaseUri="~/Glimpse.axd">
<runtimePolicies>
<ignoredTypes>
<add type="Glimpse.AspNet.Policy.LocalPolicy, Glimpse.AspNet"/>
</ignoredTypes>
</runtimePolicies>
</glimpse>
</configuration>
Yalnızca bu değişiklikle, herhangi bir kullanıcı uzak bir sitede Glimpse verilerinizi görebilir. Yukarıdaki işaretlemeyi bir yayımlama profiline ekleyerek yalnızca bu yayımlama profilini (örneğin, Azure test profilinizi) kullandığınızda uygulanan bir dağıtım yapmayı göz önünde bulundurun. Glimpse verilerini kısıtlamak için rolü ekler canViewGlimpseData ve yalnızca bu roldeki kullanıcıların Glimpse verilerini görüntülemesine izin veririz.
GlimpseSecurityPolicy.cs dosyasından açıklamaları kaldırın ve isInRole çağrısını Administrator rolüne canViewGlimpseData değiştirin:
public class GlimpseSecurityPolicy : IRuntimePolicy
{
public RuntimePolicy Execute(IRuntimePolicyContext policyContext)
{
var httpContext = policyContext.GetHttpContext();
if (!httpContext.User.IsInRole("canViewGlimpseData"))
{
return RuntimePolicy.Off;
}
return RuntimePolicy.On;
}
public RuntimeEvent ExecuteOn
{
get { return RuntimeEvent.EndRequest | RuntimeEvent.ExecuteResource; }
}
}
Uyarı
Güvenlik - Glimpse tarafından sağlanan zengin veriler uygulamanızın güvenliğini açığa çıkarabilir. Microsoft, Glimpse'in üretim uygulamalarında kullanılması için bir güvenlik denetimi gerçekleştirmedi.
Rol ekleme hakkında bilgi için Bkz. Azure'a Üyelik, OAuth ve SQL Veritabanı ile Güvenli ASP.NET MVC 5 web uygulaması dağıtma öğreticim.