[译]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 ...
随机推荐
- npm下载包时代理配置
主要有两种方式,1通过命令行临时配置,2通过配置文件进行永久配置. 1.命令行: npm install --proxy http://localhost:1080 如果有账号密码等验证的,需要在后面 ...
- ecshop /goods.php SQL Injection Vul
catalogue . 漏洞描述 . 漏洞触发条件 . 漏洞影响范围 . 漏洞代码分析 . 防御方法 . 攻防思考 1. 漏洞描述2. 漏洞触发条件 0x1: poc http://localhost ...
- Linux Default Bootup、Startup、Autoload Configuration file(自启动服务脚本)
目录 . Linux初始化init系统 . Linux配置文件自动加载过程 1. Linux初始化init系统 Linux初始化init系统在不同操作系统系列下的区别 . RHEL : SysVini ...
- 什么是 WSGI -- Python 中的 “CGI” 接口简介
今天在 git.oschina 的首页上看到他们推出演示平台,其中,Python 的演示平台支持 WSGI 接口的应用.虽然,这个演示平台连它自己提供的示例都跑不起来,但是,它还是成功的勾起了我对 W ...
- 通过Calendar类判断是否是周末及是否在指定时间
package time; import java.sql.Timestamp; import java.util.Calendar; import java.util.Date; public cl ...
- python 集合、函数和文件操作
1.set集合 set集合是一个无序.不可重复.可嵌套的序列,基本功能是进行成员关系测试和删除重复元素,可以使用大括号({})或者 set()函数创建集合,注意:创建一个空集合必须用 set() 而不 ...
- Swift开发之 (01) 语法
一 Swift Swift,苹果于2014年WWDC(苹果开发者大会)发布的新开发语言,可与Objective-C*共同运行于Mac OS和iOS平台,用于搭建基于苹果平台的应用程序. Swift是一 ...
- 捉襟见肘之UITableViewCell重用引发的问题
我记录一下自己如何解决cell内容重叠的问题 首先,复习一下:http://blog.csdn.net/omegayy/article/details/7356823 UITableViewCell的 ...
- 【原】flux学习笔记
最近React(web/native)依旧如火如荼,相信大家都跃跃欲试,入职新公司,现在的团队也开始在React领域有所尝试. 2016年应该是React 逐渐走向成熟的一年.之前在原来公司搞不懂的问 ...
- css008 给网页添加图片
css008 给网页添加图片 1. css和<img>标签 1.<img>标签是html的添加图片的标签,一般为: <img src=” ...