使用MiniProfiler给Asp.net MVC和Entity Framework号脉(附源码)
在学习python开发框架pylons/pyramid的过程中,里面有个非常棒的页面性能监控功能,这样在开发过程中,你能清楚的知道当前页面的性能以及其它参数。
这里介绍一下如何给Asp.net MVC和Entity Framework也添加上性能监控,让你在开发过程中随时掌握当前程序运行的信息。
这里是在Autofac+MVC+EF篇的源码基础上,一步一步的介绍添加Profiler的过程。
如果有兴趣了解Autofac的应用,可以看这里 IoC容器Autofac(4) - Autofact + Asp.net MVC + EF Code First(附源码)
最终源代码在这里 MiniProfiler.zip
阅读目录:
一、MiniProfiler应用的结果
二、下载源码,运行程序
三、添加MVC Profiler
四、添加Entity Framework Profiler
五、总结
一,MiniProfiler应用的结果
先看看应用了MiniProfiler的结果

二,下载源码,运行程序
1. 下载源代码
源代码的下载地址是 AutofacMVC.zip
2. 使用Nuget下载依赖
源代码使用了Nuget的包管理,可以非常方便的下载外部引用。Nuget的使用,可以看这里Nuget如何自动下载依赖DLL引用
3. 创建数据库
修改web.config中的数据库链接字符串,并创建对应的数据库School, 然后使用EF的Migration创建表结构和初始化数据
在"Package Manager Console”中输入”Update-Database”命令。


如果在运行命令的过程中出现了错误:
Package Manager Console Update-Database CommandNotFoundException only in a specific VS project
那么在执行Update-Database命令之前,先运行
Install-Package EntityFramework –IncludePrerelease
4. 最后运行程序,页面如下:

三, 添加MVC Profiler
1. 通过Nuget添加MiniProfiler引用

2. 在_Layout.cshmlt中添加MiniProfiler
在_Layout.cshtml中添加的MiniProfiler的相关代码,这样就能在每个页面上输出页面的访问信息
由于MiniProfiler生成的js需要依赖于Jquery,所以记得添加对于Jquery的引用。
@using StackExchange.Profiling
<!DOCTYPE html>
<html lang="en">
<head>
<title>Test</title>
<script type="text/javascript" src="~/Scripts/jquery-2.0.3.min.js"></script>
</head>
<body>
@RenderBody()
@MiniProfiler.RenderIncludes()
</body>
</html>
3. 添加MiniProfiler的Handler
上面@MiniProfiler.RenderIncludes()会在页面上生成一段js
类似于
<script async type="text/javascript" id="mini-profiler" src="/mini-profiler-resources/includes.js?v=xwYPDDH1blvqmxgsBweNC++H7CFU3KGQ+zFcVlJPsXw=" ……
我们的系统中,应当添加Handler来处理对于上面的include.js的处理,把它交给MiniProfiler的dll来处理这个js的请求。
<handlers>
<add name="MiniProfiler" path="mini-profiler-resources/*" verb="*" type="System.Web.Routing.UrlRoutingModule" resourceType="Unspecified" preCondition="integratedMode" />
</handers>
4. 在Global.asax中启动MiniProfiler记录
如下, 在每个request开始和结束的时候,调用MiniProfiler来记录信息。
protected void Application_BeginRequest()
{
if (Request.IsLocal)
{
MiniProfiler.Start();
}
} protected void Application_EndRequest()
{
MiniProfiler.Stop();
}
5. 完成所有的工作后,重新刷新页面
重新启动,刷新页面,就能看到MiniProfiler记录的结果了。

四, 添加Entity Framework Profiler
1, 从Nuget中添加MiniProfiler.EF

2. 在Global.asax中,添加代码
protected void Application_Start()
{
MiniProfilerEF.Initialize();
………
}
3. 刷新页面
刷新的页面,能够发现MiniProfiler问我们记录了EF访问数据的信息


五,总结
MiniProfiler是平时开发的利器,以可视化的方式让你随时监控开发过程中的性能问题。
MiniProfiler提供了不只是提供了MVC和EF扩展,还有针对windows开发,WCF, NHibernate等.
MiniProfiler应该作为项目开发中的一个标配,如果你的项目中,还没有使用到,赶快试一试,它一定能够为你的开发带来意向不到的正能量。
使用MiniProfiler给Asp.net MVC和Entity Framework号脉(附源码)的更多相关文章
- Asp.net MVC - 使用PRG模式(附源码)
阅读目录: 一. 传统的Asp.net页面问题 二.Asp.net MVC中也存在同样的问题 三.使用PRG模式 四.PRG模式在MVC上的实现 一. 传统的Asp.net页面问题 一个传统的Asp. ...
- ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之第一章:创建基本的MVC Web站点
在这一章中,我们将学习如何使用基架快速搭建和运行一个简单的Microsoft ASP.NET MVC Web站点.在我们马上投入学习和编码之前,我们首先了解一些有关ASP.NET MVC和Entity ...
- ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之目录导航
ASP.NET MVC with Entity Framework and CSS是2016年出版的一本比较新的.关于ASP.NET MVC.EF以及CSS技术的图书,我将尝试着翻译本书以供日后查阅. ...
- ASP.NET MVC+EasyUI+Entity FrameWork 整合开发
本文详细讲解怎么用ASP.NET MVC+EasyUI+Entity FrameWork 来开发一个项目 对于ASP.NET MVC的Jscript库,主要引用 <script type=.mi ...
- Using the Repository Pattern with ASP.NET MVC and Entity Framework
原文:http://www.codeguru.com/csharp/.net/net_asp/mvc/using-the-repository-pattern-with-asp.net-mvc-and ...
- ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之第六章:管理产品图片——多对多关系(上篇)
在这章中,我们将学习如何创建一个管理图片的新实体,如何使用HTML表单上传图片文件,并使用多对多关系将它们和产品关联起来,如何将图片存储在文件系统中.在这章中,我们还会学习更加复杂的异常处理,如何向模 ...
- [转]Using the Repository Pattern with ASP.NET MVC and Entity Framework
本文转自:http://www.codeguru.com/csharp/.net/net_asp/mvc/using-the-repository-pattern-with-asp.net-mvc-a ...
- ASP.NET MVC通用权限管理系统(响应布局)源码更新介绍
一.asp.net mvc 通用权限管理系统(响应布局)源码主要以下特点: AngelRM(Asp.net MVC)是基于asp.net(C#)MVC+前端bootstrap+ztree+lodash ...
- MVC系列——MVC源码学习:打造自己的MVC框架(二:附源码)
前言:上篇介绍了下 MVC5 的核心原理,整篇文章比较偏理论,所以相对比较枯燥.今天就来根据上篇的理论一步一步进行实践,通过自己写的一个简易MVC框架逐步理解,相信通过这一篇的实践,你会对MVC有一个 ...
随机推荐
- 怎样解决PowerDesigner15出现许可证过期问题?
今天打开PowerDesigner软件,出现许可证过期问题,怎样解决 1)打开软件安装路径(通过搜索打开文件所在路径或通过软件图标的属性打开)
- CXF和spring整合遇到的问题:No bean named 'cxf' is defined
今天在做ws和spring整合的时候,很不幸的遇到了这个问题,百度了好久,竟然没人遇到这个问题,后来谷歌了一下,都是遇到这个问题的了...在看到一篇文章中提到了cxf.xml,所以我果断的打开这个配置 ...
- psql 命令行使用
如果觉得直接打开数据库修改繁琐,那么使用终端命令行是方便而又高大上的.下面来看看有哪些命令行: 说明:如果是正式的服务器则需要进行一个操作在执行下面的命令 ssh name @主机地址 -- name ...
- cnodejs社区论坛6--评论功能
- css知多少(7)——盒子模型
1. 引言 从这一节开始,我们就进入本系列的第三部分——css呈现.本部分将描述css在页面的几种布局和呈现的特性.包括两类:文字.块. 第一类——文字.这部分相对比较简单一些,例如设置字号.字体.颜 ...
- 纯CSS3写的10个不同的酷炫图片遮罩层效果
这个是纯CSS3实现的的10个不同的酷炫图片遮罩层效果,可以欣赏一下 在线预览 下载地址 实例代码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1 ...
- jQuery Countdown Timer 倒计时效果
这个一款简单的 jQuery 倒计时插件,用于显示剩余的天数,小时,分钟和秒.倒计时功能是非常有用的一个小功能,可以告诉用户多久以后您的网站将会发布或者关闭进行维护,还可以用于举办活动的开始和停止的倒 ...
- 推荐12个最好的 JavaScript 图形绘制库
众多周知,图形和图表要比文本更具表现力和说服力.图表是数据图形化的表示,通过形象的图表来展示数据,比如条形图,折线图,饼图等等.可视化图表可以帮助开发者更容易理解复杂的数据,提高生产的效率和 Web ...
- Vanilla Masker – 功能强大的输入过滤插件
Vanilla Masker 是一个纯 JavaScript 实现的输入内容过滤和自动转换插件.现在你可以使用一个简单而纯粹的 JavaScript 库来控制你的 input 元素,而不需要加载 jQ ...
- 2013年最新流行的响应式 WordPress 主题【上篇】
WordPress 是最流行的内容管理系统,经历了多年的发展和演变.它的成功体现在庞大的社区,数百万的用户,设计师和开发者推动着 WordPress 往更高的层次发展. 海量的免费主题是 WordPr ...