使用CoreProfiler/NanoProfiler实现跨平台amp;应用的整合性能调试
NanoProfiler是一個(gè)開(kāi)源.NET性能調(diào)試類庫(kù),CoreProfiler是其.NET Core版本的實(shí)現(xiàn)。在之前的一些文章中,我曾介紹過(guò)NanoProfiler的主要使用方式,以及如何為生產(chǎn)環(huán)境,基于ELK對(duì)應(yīng)用性能進(jìn)行調(diào)試和監(jiān)控。不過(guò),對(duì)于一般的用戶來(lái)說(shuō),尤其是本機(jī)開(kāi)發(fā)和小團(tuán)隊(duì)開(kāi)發(fā),搭建ELK,維護(hù)這套這套支持系統(tǒng)的穩(wěn)定運(yùn)行,學(xué)習(xí)曲線還是有點(diǎn)高。而如果只是單個(gè)app孤立的使用NanoProfiler,則大大浪費(fèi)了其原本能發(fā)揮的跨應(yīng)用性能調(diào)試監(jiān)控的能力。
本文演示了3個(gè)不同平臺(tái)的后端應(yīng)用使用CoreProfiler/NanoProfiler實(shí)現(xiàn)跨應(yīng)用的性能調(diào)試和監(jiān)控。這三個(gè)應(yīng)用包括.Net Core和傳統(tǒng)的.NET 4.5 Web項(xiàng)目,演示的技術(shù)包括:
如何在.NET Core程序中使用CoreProfiler進(jìn)行Wcf服務(wù)、Http REST服務(wù)和EntityFramework數(shù)據(jù)庫(kù)調(diào)用的性能監(jiān)控;
如何在傳統(tǒng).NET 4.5 Web項(xiàng)目中使用NanoProfiler進(jìn)行Wcf服務(wù)和Http REST服務(wù)調(diào)用的性能監(jiān)控;
如何配置CoreProfiler/NanoProfiler實(shí)現(xiàn)自動(dòng)的跨平臺(tái)&應(yīng)用的整合性能調(diào)試和監(jiān)控;
完整的示例源碼,可以從下面的地址下載:
https://github.com/teddymacn/cross-app-profiling-demo
示例代碼目錄結(jié)構(gòu)
Core.UI - .Net Core Mvc 應(yīng)用,用于UI呈現(xiàn),調(diào)用外部Wcf服務(wù)和Http REST服務(wù)
Core.Api - .Net Core WebApi 應(yīng)用,提供Http REST服務(wù),使用EntityFramework進(jìn)行數(shù)據(jù)訪問(wèn)
Net45.Api - 傳統(tǒng).Net 4.5 WebApi 應(yīng)用,提供Wcf服務(wù)和Http REST服務(wù),調(diào)用自己提供的Wcf服務(wù),調(diào)用外部.Net Core Api提供的Http REST服務(wù)
示例代碼運(yùn)行步驟
開(kāi)發(fā)環(huán)境要求:Windows 7+,IIS7+,VS2015 Update 3,.Net Core SDK VS Tool v1.0.0+;
從github上git clone上面的示例repo;
運(yùn)行run_api.cmd啟動(dòng)Core.Api服務(wù);
使用VS2015打開(kāi)Net45.Api項(xiàng)目,按F5運(yùn)行,確保頁(yè)面打開(kāi)顯示正在運(yùn)行;
運(yùn)行run_ui.cmd啟動(dòng)Core.UI服務(wù);
在任意瀏覽器中訪問(wèn)Core.UI的首頁(yè):?http://127.0.0.1:3001;
點(diǎn)擊打開(kāi)頁(yè)面上的鏈接,進(jìn)一步點(diǎn)擊鏈接,查看詳細(xì)的性能調(diào)試的結(jié)果;
點(diǎn)擊drill down/drill up鏈接,查看關(guān)聯(lián)服務(wù)調(diào)用的性能調(diào)試結(jié)果;
圖示
訪問(wèn)Core.UI首頁(yè):
查看Core.UI首頁(yè)的性能調(diào)試結(jié)果:
注意上圖中的drill down鏈接,點(diǎn)擊這些鏈接,可以drill down到Core.UI對(duì)外發(fā)出的Wcf服務(wù)和REST服務(wù)調(diào)用的性能調(diào)試結(jié)果。比如,如果我們點(diǎn)擊http://127.0.0.1/Net45Api/AsyncHandler.ashx旁邊的drill down鏈接:
在進(jìn)一步點(diǎn)擊http://127.0.0.1:3002/?from-Net45Api旁邊的drill down,我們可以看到從Net45.Api應(yīng)用調(diào)用Core.Api的REST服務(wù)的性能調(diào)試結(jié)果:
代碼解析
Core.UI
Core.UI的project.json中,我們可以看到對(duì)CoreProfiler和Wcf相關(guān)的nuget package的引用:
Core.UI的Startup中,我們可以看到,開(kāi)啟CoreProfiler性能調(diào)試,只需要添加這一行代碼(這里的參數(shù)true表示開(kāi)啟跨應(yīng)用drilldown功能):
Net45ApiServiceConfiguration.cs中為Wcf服務(wù)的client添加了開(kāi)啟CoreProfiler的Wcf調(diào)試的Behavior:
這個(gè)static partial方法,是.Net Core中,為由Wcf Connected Services生成的Wcf client代碼進(jìn)行額外配置的標(biāo)準(zhǔn)方式,這里不做詳述。
在Core.UI/Controllers/HomeController.cs中,值得一提的是,對(duì)自定義REST請(qǐng)求,為使drilldown功能工作,需要添加一個(gè)header,使得兩個(gè)請(qǐng)求的性能調(diào)試結(jié)果能夠互相關(guān)聯(lián):
調(diào)用Wcf服務(wù),無(wú)需特殊處理,因?yàn)榍懊嫣砑拥腤CF Behavior已經(jīng)自動(dòng)添加對(duì)應(yīng)的header:
Core.Api
Core.Api因?yàn)橥瑯邮?Net Core項(xiàng)目,總體配置方式和Core.UI類似,唯一額外的是,為EntityFramework,開(kāi)啟了的CoreProfiler的DB profiling支持:
Net45.Api
Net45.Api是一個(gè)傳統(tǒng).Net 4.5項(xiàng)目,在之前的NanoProfiler系列中,已經(jīng)介紹過(guò)NanoProfiler在Web應(yīng)用中的使用,這里不重復(fù)介紹了。這里唯一額外的是,開(kāi)啟了跨應(yīng)用drilldown功能,和.NetCore項(xiàng)目略有不同,需要左兩個(gè)步驟。
步驟1,在Web.config中添加NanoProfilerImportModule:
步驟2,在Global.asax.cs中,設(shè)置TryToImportDrillDownResult開(kāi)關(guān)為true:
基本上就是這樣了,Enjoy!
相關(guān)文章:
NanoProfiler - 適合生產(chǎn)環(huán)境的性能監(jiān)控類庫(kù) 之 基本功能篇
采用MiniProfiler監(jiān)控EF與.NET MVC項(xiàng)目
原文地址:http://www.cnblogs.com/teddyma/p/coreprofiler_cross_app_profiling_demo.html
.NET社區(qū)新聞,深度好文,微信中搜索dotNET跨平臺(tái)或掃描二維碼關(guān)注
贊賞
人贊賞
總結(jié)
以上是生活随笔為你收集整理的使用CoreProfiler/NanoProfiler实现跨平台amp;应用的整合性能调试的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 轻量级的web框架[Nancy On .
- 下一篇: Visual Studio 15 Pre