[译]Profile and debug your ASP.NET MVC app with Glimpse
原文: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的更多相关文章
- [译]ABP框架使用AngularJs,ASP.NET MVC,Web API和EntityFramework构建N层架构的SPA应用程序
本文转自:http://www.skcode.cn/archives/281 本文演示ABP框架如何使用AngularJs,ASP.NET MVC,Web API 和EntityFramework构建 ...
- ASP.NET MVC 5 Authentication Breakdown
In my previous post, "ASP.NET MVC 5 Authentication Breakdown", I broke down all the parts ...
- [转]Sorting, Filtering, and Paging with the Entity Framework in an ASP.NET MVC Application (3 of 10)
本文转自:http://www.asp.net/mvc/overview/older-versions/getting-started-with-ef-5-using-mvc-4/sorting-fi ...
- ASP.NET MVC 5 - 查询Details和Delete方法
在这部分教程中,接下来我们将讨论自动生成的Details和Delete方法. 查询Details和Delete方法 打开Movie控制器并查看Details方法. public ActionResul ...
- ASP.NET MVC 5 - 创建连接字符串(Connection String)并使用SQL Server LocalDB
您创建的MovieDBContext类负责处理连接到数据库,并将Movie对象映射到数据库记录的任务中.你可能会问一个问题,如何指定它将连接到数据库? 实际上,确实没有指定要使用的数据库,Entity ...
- ASP.NET MVC与RAILS3的比较
进入后Web年代之后,MVC框架进入了快速演化的时代,Struts等垂垂老矣的老一代MVC框架因为开发效率低下而逐渐被抛弃,新一代的MVC则高举敏捷的大旗,逐渐占领市场,其中的代表有Rails (ru ...
- ASP.NET MVC Boilerplate简介
ASP.NET MVC Boilerplate简介 ASP.NET MVC Boilerplate是专业的ASP.NET MVC模版用来创建安全.快速.强壮和适应性强的Web应用或站点.它在微软默认M ...
- 整理学习ASP.NET MVC的资源
网站 http://www.asp.net/mvc http://stackoverflow.com/questions/tagged/asp.net-mvc+asp.net-mvc-4?sort=n ...
- [转]ASP.NET MVC 5 - 查询Details和Delete方法
在这部分教程中,接下来我们将讨论自动生成的Details和Delete方法. 查询Details和Delete方法 打开Movie控制器并查看Details方法. public ActionResul ...
随机推荐
- oracle 前滚和回滚
前滚(Rollforward): 在数据库关闭时候,很多已经提交的数据没有写到磁盘上, 数据恢复时,在文件上重演日志内容,把文件恢复到数据库关闭时的状态. 回滚(Rollback): 在数据库关闭时, ...
- [NOIP2013] 普及组
计数问题 纯模拟 #include<cstdio> #include<iostream> using namespace std; int main(){ int n,x; c ...
- Writing a simple Lexer in PHP/C++/Java
catalog . Comparison of parser generators . Writing a simple lexer in PHP . phc . JLexPHP: A PHP Lex ...
- J-link烧写brjtag工具
J-Link用的山寨货,不知道山寨了几代的那种....用的STM32F103C8T6的小板也是山寨了好几代那种,才25块钱...好在能用,J-Link用segger公司的软件能识别,也能找到CPU,板 ...
- 验证时出错。HRESULT = '8000000A'
往往出现在 做了安装项目后有警告: 解决办法: 这本来是在VS2005下创建的一下项目,后来改用VS2010的开发环境,.NET Framework的版本还是使用2.0, 但每次生成之后都会在解决方案 ...
- Swift Swift中的反射
Swift的反射机制是基于一个叫 Mirror 的 struct 来实现的,其内部有如下属性和方法: let children: Children //对象的子节点. displayStyle: Mi ...
- SQLite遇到的关于x64、x86问题
初次使用SQLite遇到了莫名其妙的问题: 未能加载文件或程序集“System.Data.SQLite, Version=1.0.92.0, Culture=neutral, PublicKeyTok ...
- UVA1213Sum of Different Primes(素数打表 + DP)
题目链接 题意:选择k个素数,使得和为N(1120)的方案数: 筛选出 <= N 的素数,然后就背包 写的时候没初始dp[0][0] = 1;而且方案数也没相加,真是弱逼 #include &l ...
- java编程思想-java注解
注解(也被称为元数据)为我们在代码中添加信息提供了一种形式化的方法,使我们可以在稍后某个时刻非常方便的使用这些数据. 一.定义注解 注解的定义看起来很像接口的定义.事实上,与其他任何Java接口一样, ...
- HBase Shell 常用命令及例子
下面我们看看HBase Shell的一些基本操作命令,我列出了几个常用的HBase Shell命令,如下: 名称 命令表达式 创建表 create '表名称', '列名称1','列名称2','列名称N ...