zoukankan      html  css  js  c++  java
  • 使用MiniProfiler给Asp.net MVC和Entity Framework号脉(附源码)

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


    Creative Commons License

    本文基于署名 2.5 中国大陆许可协议发布,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名justrun(包含链接)。如您有任何疑问或者授权方面的协商,请给我留言

     
  • 相关阅读:
    关于使用JavaMail注册激活邮箱的注意点
    Maven Web报错:org.apache.jasper.JasperException: Unable to compile class for JSP
    IDEA的中文乱码问题
    深入了解Java动态代理与反射机制
    String、StringBuffer和StringBuilder的区别
    Java中HashCode()和equals()的关系
    Java中向下转型的意义
    局部内部类访问局部变量的问题
    Java内部类的应用场景
    Python os.rmdir() 方法
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/3222093.html
Copyright © 2011-2022 走看看