[译]Profile and debug your ASP.NET MVC app with Glimpse

时间:2021-12-29 00:40:58

原文: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包:

[译]Profile and debug your ASP.NET MVC app with Glimpse

Search for Glimpse.EF

[译]Profile and debug your ASP.NET MVC app with Glimpse

[译]Profile and debug your ASP.NET MVC app with Glimpse

或者

PM> Install-Package Glimpse.MVC5 
PM> Install-Package Glimpse.EF6

为localhost打开Glimpse功能

打开http://localhost:<port #>/glimpse.axd页面选择右上角的Turn Glimpse On按钮

[译]Profile and debug your ASP.NET MVC app with Glimpse

现在打开localhost, Heads Up Display (HUD) 显示在页面的底部.

[译]Profile and debug your ASP.NET MVC app with Glimpse

Glimpse HUD page 详细展示了一些耗时信息. 这些性能数据能立即告诉你问题在哪 - 在你开始测试前. 点击右下角的G出现下面一个信息面板:

[译]Profile and debug your ASP.NET MVC app with Glimpse

在上面的图中, 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的执行情况:

[译]Profile and debug your ASP.NET MVC app with Glimpse

在代码中我们把eager是设为1:

[译]Profile and debug your ASP.NET MVC app with Glimpse

你可以把鼠标放在相应的事件色块中查看详细的信息:

[译]Profile and debug your ASP.NET MVC app with Glimpse

模型绑定Model Binding

model binding选项卡提供给我们一些信息帮助我们了解我们的表单参数是怎么绑定到模型上的或者为什么有些没有按照我们的预想绑定. 看到下面图片右边中间部分的 ? 图标没,  点击它可以到Glimpse的帮助页面.

[译]Profile and debug your ASP.NET MVC app with Glimpse

路由

Routes选项卡帮助我们debug和了解路由情况. 在下面的图中, 产品路由被选中 (绿色的就是选中的).

[译]Profile and debug your ASP.NET MVC app with Glimpse

路由constraints, Areas和data tokens都能显示出来. 更多信息见Glimpse RoutesAttribute Routing in ASP.NET MVC 5.

[译]Profile and debug your ASP.NET MVC app with Glimpse的更多相关文章

  1. &lbrack;译&rsqb;ABP框架使用AngularJs&comma;ASP&period;NET MVC&comma;Web API和EntityFramework构建N层架构的SPA应用程序

    本文转自:http://www.skcode.cn/archives/281 本文演示ABP框架如何使用AngularJs,ASP.NET MVC,Web API 和EntityFramework构建 ...

  2. ASP&period;NET MVC 5 Authentication Breakdown

    In my previous post, "ASP.NET MVC 5 Authentication Breakdown", I broke down all the parts ...

  3. &lbrack;转&rsqb;Sorting&comma; Filtering&comma; and Paging with the Entity Framework in an ASP&period;NET MVC Application &lpar;3 of 10&rpar;

    本文转自:http://www.asp.net/mvc/overview/older-versions/getting-started-with-ef-5-using-mvc-4/sorting-fi ...

  4. ASP&period;NET MVC 5 - 查询Details和Delete方法

    在这部分教程中,接下来我们将讨论自动生成的Details和Delete方法. 查询Details和Delete方法 打开Movie控制器并查看Details方法. public ActionResul ...

  5. ASP&period;NET MVC 5 - 创建连接字符串&lpar;Connection String&rpar;并使用SQL Server LocalDB

    您创建的MovieDBContext类负责处理连接到数据库,并将Movie对象映射到数据库记录的任务中.你可能会问一个问题,如何指定它将连接到数据库? 实际上,确实没有指定要使用的数据库,Entity ...

  6. ASP&period;NET MVC与RAILS3的比较

    进入后Web年代之后,MVC框架进入了快速演化的时代,Struts等垂垂老矣的老一代MVC框架因为开发效率低下而逐渐被抛弃,新一代的MVC则高举敏捷的大旗,逐渐占领市场,其中的代表有Rails (ru ...

  7. ASP&period;NET MVC Boilerplate简介

    ASP.NET MVC Boilerplate简介 ASP.NET MVC Boilerplate是专业的ASP.NET MVC模版用来创建安全.快速.强壮和适应性强的Web应用或站点.它在微软默认M ...

  8. 整理学习ASP&period;NET MVC的资源

    网站 http://www.asp.net/mvc http://*.com/questions/tagged/asp.net-mvc+asp.net-mvc-4?sort=n ...

  9. &lbrack;转&rsqb;ASP&period;NET MVC 5 - 查询Details和Delete方法

    在这部分教程中,接下来我们将讨论自动生成的Details和Delete方法. 查询Details和Delete方法 打开Movie控制器并查看Details方法. public ActionResul ...

随机推荐

  1. APP技术演化的路

    谈起APP,大家都太熟悉不过了,今天想谈谈这么多年技术演化的路. 早期一些大公司就开始做一些APP了,例如facebook.google等国外的公司就已经开发这个技术路线,那个时候的APP数量很少,基 ...

  2. CI框架--事务

    CI框架中事务封装的很完善,使用起来很简单 1.不开启事务 //不开启事务 前两个sql 能够执行成功,第三个执行失败 $this->device_model->addForCamera( ...

  3. Poj 3239 Solution to the n Queens Puzzle

    1.Link: http://poj.org/problem?id=3239 2.Content: Solution to the n Queens Puzzle Time Limit: 1000MS ...

  4. Inside Microsoft SQL Server 2008&colon; T-SQL Querying 读书笔记之查询优化

    一. 自顶向下优化方法论 1. 分析实例级别的等待 在实例级找出什么类型的等待占用大部分的时间,通过sys.dm_os_wait_stats select wait_type, --等待类型 wait ...

  5. js 时间函数 及相关运算大全

    js 时间函数 及相关运算大全 var myDate = new Date(); myDate.getYear();        //获取当前年份(2位) myDate.getFullYear(); ...

  6. sqlite3---终端操作

    进入沙盒路径 创建stu.sql数据库 sqlite3 stu.sql 创建表 create table if not exists Student (id integer primary key a ...

  7. Java中需要总结的几个问题

    慢慢总结,不然每次百度挺心烦的. 1. java文件的读写 2. String和StringBuffer的区别

  8. Win10下安装RabbitMQ以及基本知识学习

    一.为什么选择RabbitMQ?      先说一下场景,这是我们公司遇到,当然我这里不做业务评价哈?虽然我知道他很不合理,但是我是无能为力的.APP端部分注册是Java开发的系统,然后业务端是C#开 ...

  9. angular懒加载

    生成module和routing.module文件 {//路径 path: 'InfectionFillInComponent', loadChildren: './component/his/inf ...

  10. python 全栈开发笔记 3

    正则表达式 正则表达式(RE)是一种小型的,高度专业化的,它镶嵌在python中,并通过re模块实现,正则表达式编译成一系列的字节码,然后由用c编写的匹配引擎执行. #正则表达式 import re ...