使用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的结果

t1

 

二,下载源码,运行程序

1. 下载源代码

源代码的下载地址是 AutofacMVC.zip 

 

2. 使用Nuget下载依赖

源代码使用了Nuget的包管理,可以非常方便的下载外部引用。Nuget的使用,可以看这里Nuget如何自动下载依赖DLL引用

 

3. 创建数据库

修改web.config中的数据库链接字符串,并创建对应的数据库School, 然后使用EF的Migration创建表结构和初始化数据

在"Package Manager Console”中输入”Update-Database”命令。

b2

 

b1

 

如果在运行命令的过程中出现了错误:

Package Manager Console Update-Database CommandNotFoundException only in a specific VS project

那么在执行Update-Database命令之前,先运行

Install-Package EntityFramework –IncludePrerelease

 

4. 最后运行程序,页面如下:

b3

 

三, 添加MVC Profiler

1. 通过Nuget添加MiniProfiler引用

b4

 

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记录的结果了。

b5

 

四, 添加Entity Framework Profiler

1, 从Nuget中添加MiniProfiler.EF

b6

2. 在Global.asax中,添加代码

protected void Application_Start()
       {
           MiniProfilerEF.Initialize();
………
}

 

3. 刷新页面

刷新的页面,能够发现MiniProfiler问我们记录了EF访问数据的信息

b7

 

b8

 

五,总结

MiniProfiler是平时开发的利器,以可视化的方式让你随时监控开发过程中的性能问题。

MiniProfiler提供了不只是提供了MVC和EF扩展,还有针对windows开发,WCF, NHibernate等.

MiniProfiler应该作为项目开发中的一个标配,如果你的项目中,还没有使用到,赶快试一试,它一定能够为你的开发带来意向不到的正能量。



本文转自JustRun博客园博客,原文链接:http://www.cnblogs.com/JustRun1983/p/3220941.html,如需转载请自行联系原作者


目录
相关文章
|
3月前
|
开发框架 前端开发 .NET
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
38 0
|
30天前
|
开发框架 前端开发 .NET
进入ASP .net mvc的世界
进入ASP .net mvc的世界
28 0
|
1月前
|
开发框架 前端开发 .NET
C# .NET面试系列六:ASP.NET MVC
<h2>ASP.NET MVC #### 1. MVC 中的 TempData\ViewBag\ViewData 区别? 在ASP.NET MVC中,TempData、ViewBag 和 ViewData 都是用于在控制器和视图之间传递数据的机制,但它们有一些区别。 <b>TempData:</b> 1、生命周期 ```c# TempData 的生命周期是短暂的,数据只在当前请求和下一次请求之间有效。一旦数据被读取,它就会被标记为已读,下一次请求时就会被清除。 ``` 2、用途 ```c# 主要用于在两个动作之间传递数据,例如在一个动作中设置 TempData,然后在重定向到另
95 5
|
2月前
|
SQL 开发框架 .NET
ASP.NET WEB+EntityFramework数据持久化——考核练习库——1、用户管理系统(考点:查询列表、增加、删除)
ASP.NET WEB+EntityFramework数据持久化——考核练习库——1、用户管理系统(考点:查询列表、增加、删除)
67 0
|
5月前
|
开发框架 自然语言处理 前端开发
基于ASP.NET MVC开发的、开源的个人博客系统
基于ASP.NET MVC开发的、开源的个人博客系统
51 0
|
8月前
|
SQL 开发框架 前端开发
[回馈]ASP.NET Core MVC开发实战之商城系统(完:内附源码)
经过一段时间的准备,【ASP.NET Core MVC开发实战之商城系统】已经完成,目前代码已开发完成,先将全部内容整理分享,如有不足之处,还请指正。
106 0
|
8月前
|
存储 开发框架 前端开发
[回馈]ASP.NET Core MVC开发实战之商城系统(五)
经过一段时间的准备,新的一期【ASP.NET Core MVC开发实战之商城系统】已经开始,在之前的文章中,讲解了商城系统的整体功能设计,页面布局设计,环境搭建,系统配置,及首页【商品类型,banner条,友情链接,降价促销,新品爆款】,商品列表页面,商品详情等功能的开发,今天继续讲解购物车功能开发,仅供学习分享使用,如有不足之处,还请指正。
114 0
|
9月前
|
开发框架 前端开发 .NET
[回馈]ASP.NET Core MVC开发实战之商城系统(三)
[回馈]ASP.NET Core MVC开发实战之商城系统(三)
67 0
|
9月前
|
开发框架 前端开发 .NET
[回馈]ASP.NET Core MVC开发实战之商城系统(一)
[回馈]ASP.NET Core MVC开发实战之商城系统(一)
113 0
|
9月前
|
SQL 开发框架 前端开发
[回馈]ASP.NET Core MVC开发实战之商城系统(开篇)
[回馈]ASP.NET Core MVC开发实战之商城系统(开篇)
144 0