日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

采用MiniProfiler监控EF与.NET MVC项目

發布時間:2023/12/4 asp.net 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 采用MiniProfiler监控EF与.NET MVC项目 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

今天來說說EF與MVC項目的性能檢測和監控,相對本篇文章,更推薦大家使用另一個類似組件?NanoProfiler - 適合生產環境的性能監控類庫 之 基本功能篇

首先,先介紹一下今天我們使用的工具吧.

MiniProfiler~

這個東西的介紹如下:

MVC MiniProfiler是Stack Overflow團隊設計的一款對ASP.NET MVC的性能分析的小程序。可以對一個頁面本身,及該頁面通過直接引用、Ajax、Iframe形式訪問的其它頁面進行監控,監控內容包括數據庫內容,并可以顯示數據庫訪問的SQL(支持EF、EF CodeFirst等 )。并且以很友好的方式展現在頁面上。

該Profiler的一個特別有用的功能是它與數據庫框架的集成。除了.NET原生的 DbConnection類,profiler還內置了對實體框架(Entity Framework)以及LINQ to SQL的支持。任何執行的Step都會包括當時查詢的次數和所花費的時間。為了檢測常見的錯誤,如N+1反模式,profiler將檢測僅有參數值存在差 異的多個查詢。

MiniProfiler是以Apache License V2.0協議發布的,你可以在NuGet找到。配置及使用可以看這里:http://code.google.com/p/mvc-mini-profiler

為建立快速的網站黃金參考標準,雅虎2007年為網站提高速度的13個簡易規則。

以上這一段是照抄的張善友的博客,原文地址:http://www.cnblogs.com/shanyou/archive/2012/04/03/2430977.html

當然 國內百度也能百度出一大把的教程,但是教程都比較老與現在的新版本還是差距很大,而且博文中講的并不是很詳細,所以本屌就來詳細的講講吧..

?

本文采用的環境與技術

系統:WIN7

數據庫:SQL Server2008

相關技術:MVC5+EF6.1.3

第一章:開始監控

首先,明確一下本博文的目標,監控EF的Sql和執行時間,監控MVC頁面的執行時間

那么我們開始.

第一步,從NuGet上下載所需要的包,下載內容如圖:

MiniProfiler核心(所有的MiniProfiler相關資源都需要先有他)

?

這里需要注意,新版本的MiniProfiler.EF是需要根據你的EF版本來下載的,分為MiniProfiler.EF6,MiniProfiler.EF5,MiniProfiler.EF(EF4以下)三個版本

根據你的EF版本自行下載對應的包.

MiniProfiler.MVC4(注:這里的MVC4是可以分析MVC4,5兩個版本的,使用MVC3的同學請自行下載MiniProfiler.MVC3)

至此,我們所需要安裝的程序包就全部OK了,

下面我們開始監控:

首先,給你的Global.asax文件中加入:

protected void Application_BeginRequest(){ ? ? ? ? ?
? ? ? ? ??
if (Request.IsLocal)//這里是允許本地訪問啟動監控,可不寫 ? ? ? ? ? ?{MiniProfiler.Start();}} ? ? ? ?protected void Application_EndRequest(){MiniProfiler.Stop();}


然后找到你需要監控的頁面,在頁面中加入:

@using StackExchange.Profiling; @MiniProfiler.RenderIncludes();

當然,我們一般是想監控所有的頁,所以我推薦加在你的布局頁(_Layout)中,比如以下這種結構:


<html><head>@using StackExchange.Profiling;</head><body>@RenderBody()@MiniProfiler.RenderIncludes();</body></html>


然后在配置文件中加入(注意,這里很重要):


<system.webServer><handlers><add name="MiniProfiler" path="mini-profiler-resources/*" verb="*" type="System.Web.Routing.UrlRoutingModule" resourceType="Unspecified" preCondition="integratedMode" /></handlers></system.webServer>?

這樣,我們的基礎監控就已經完成了,我們來看看效果.

?

第二章:監控EF,并對某次操作進行針對性監控

首先我們在Global.asax文件中添加代碼如下: ?

protected void Application_Start()

? ? ? ?{....StackExchange.Profiling.EntityFramework6.MiniProfilerEF6.Initialize();....}

?

因為這是一個簡單的demo,所以我們隨意找一個Controller,寫一些EF的查詢,代碼如下:

public class HomeController : Controller{ ? ? ? ?public ActionResult Index(){ ? ? ? ? ? using (StudentInfoEntities us = new StudentInfoEntities()){ViewBag.data = us.LogData.Where(a => 1 == 1).ToList();} ? ? ? ? ? ?return View();} }

我們來看看效果.

可以看出來,這次查詢用了56.2MS,占用整個頁面的加載時間71%的比例.,點擊藍色的56.2可以看到詳細的SQL語句,如下:

這樣,我們就可以隨時監控到頁面中EF所使用的SQL語句并進行分析.

針對性監控(重要)

當然,這只是簡單的操作,我們在分析的過程中肯定會碰到詭異,或者后臺代碼更復雜的情況(比如一個頁面10個查詢),這個時候頁面上的監控就會很混亂,不方便讀,我們就需要進行針對性的監控.

我們把剛剛的代碼修改如下(這里我們進行兩次查詢操作,用MiniProfiler進行分類):


public class HomeController : Controller{ ? ? ? ?public ActionResult Index(){ ? ? ? ? ? ?var profiler = MiniProfiler.Current; ? ? ? ? ? ?using (profiler.Step("查詢數據LogData的數據")){ ? ? ? ? ? ? ? ?using (StudentInfoEntities us = new StudentInfoEntities()){ViewBag.data = us.LogData.Where(a => 1 == 1).ToList();}} ? ? ? ? ? ?using (profiler.Step("查詢數據LogOperate的數據")){ ? ? ? ? ? ? ? ?using (StudentInfoEntities us = new StudentInfoEntities()){ViewBag.data = us.LogOperate.Where(a => 1 == 1).ToList();}} ? ? ? ? ? ?return View();} }

得到監控效果如下:

這樣,我們就可以根據我們的需要來詳細的跟蹤某一次EF操作的結果了.

?

第三章:監控的權限(給管理員分配監控的權限)

在實際的項目開發中,我們不可能對所有的用戶全部開放監控的權限,所以我們要對他進行顯示的控制.

在MiniProfiler中,提供了兩個委托,如下:

?MiniProfiler.Settings.Results_Authorize //配置監控的權限

MiniProfiler.Settings.Results_List_Authorize //配置歷史信息監控的權限(在~/mini-profiler-resources/results-index中可以查看最近100次的請求分析)

這里我們簡單的做一下權限控制,

我們在Global.asax文件中添加代碼如下:

protected void Application_Start(){....MiniProfiler.Settings.Results_Authorize = Request =>{ ? ? ? ? ? ? ? ?string name = Request.Cookies["name"] == null ? "" : Request.Cookies["name"].Value; ? ? ? ? ? ? ? ?if (name.Equals("admin")) ? ? ? ? ? ? ? ? ? ?return true; ? ? ? ? ? ? ? ?elsereturn false;};StackExchange.Profiling.EntityFramework6.MiniProfilerEF6.Initialize();}

這樣就只有cookie的name屬性為admin的用戶才能有監控顯示了

?

效果如下(我們可以看到,當cookie中的name等于admin的時候才會有監控的顯示):

?

寫在最后

至此,文章就全部結束了,歡迎各位大神拍磚.

原文地址:http://www.cnblogs.com/GuZhenYin/p/5408632.html


.NET社區新聞,深度好文,微信中搜索dotNET跨平臺或掃描二維碼關注

贊賞

人贊賞

總結

以上是生活随笔為你收集整理的采用MiniProfiler监控EF与.NET MVC项目的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 综合天天色 | 成人夜视频 | 日本三级生活片 | 日韩精品aaa | 色www国产亚洲阿娇 自拍一区在线 | 老妇女性较大毛片 | 成人深夜福利 | 波多野结衣加勒比 | 萌白酱喷水视频 | 玖操| 顶级尤物极品女神福利视频 | 美女露胸无遮挡 | 成人久久精品人妻一区二区三区 | 日本午夜影视 | 亚洲色图另类 | 影音先锋在线视频观看 | 男ji大巴进入女人视频 | 玩弄人妻少妇500系列视频 | 国产做爰视频免费播放 | 亚洲精品在线播放视频 | 日韩r级在线观看 | 精品成人av一区二区在线播放 | 俺来也在线视频 | 肉丝超薄少妇一区二区三区 | 男人都懂的网站 | 91综合在线| 国产精品久久久久久久 | 国产综合视频在线 | 一区二区久久 | 色老板av| 亚洲呦呦 | 蜜桃av一区二区 | 尹人久久| 91久久国产视频 | 福利视频在线看 | 欧美无砖砖区免费 | 久久香蕉综合 | 最新欧美日韩 | 精品国产亚洲av麻豆 | 国产一区视频在线播放 | 老牛影视少妇在线观看 | 殴美黄色大片 | 成人自拍av | 97成人精品视频在线观看 | 国产欧美视频一区二区 | 日韩精品av一区二区三区 | 95看片淫黄大片一级 | 麻豆一区二区在线 | 成人看片泡妞 | 中文字幕免费高清在线观看 | www.黄色网址 | 19韩国主播青草vip | 免费在线观看黄色网址 | 一本色道久久综合亚洲精品 | 久草福利资源在线观看 | 999国产在线| 鲁丝一区二区三区 | 97福利影院| 精品无码三级在线观看视频 | 91网站在线免费观看 | 91国产免费观看 | 伊人影院综合 | 99热在| 胖女人毛片 | 久久综合导航 | 91片黄在线观 | 9999av| 国产偷人妻精品一区 | 日本在线黄色 | 亚洲69| 日本在线观看一区二区 | 日韩成人精品一区二区三区 | 大胸美女吻戏 | 亚洲精品久久久久久无码色欲四季 | 秋霞欧美在线观看 | 欧美成人自拍视频 | 99热这里只 | 人妻一区二区三区免费 | 99热日本| 久久亚洲熟女cc98cm | 国产精品永久 | 天堂аⅴ在线最新版在线 | 欧美综合影院 | 91日韩一区二区 | 国产又粗又猛又爽69xx | 奇米精品一区二区三区四区 | 亚洲生活片 | 亚洲国产成人精品无码区99 | 午夜国产福利视频 | 私密视频在线观看 | 另类综合在线 | 老熟女毛茸茸 | 性人久久久久 | 国产精品偷拍 | 成人免费观看a | 99精品久久99久久久久 | 超碰97国产精品人人cao | 欧美日日操 | 日韩精品电影一区二区三区 |