本文转载请联系码农阅读公众号。Web应用的性能相信是大家普遍关心的问题。我也相信有很多工具可以用来分析应用程序的性能并找到瓶颈。MiniProfiler就是这个领域的产品。MiniProfiler是一个简单、强大的Web应用分析工具,可以用来帮助我们发现查询慢、响应慢等问题。MiniProfiler在Asp.Net和ASP.NetCore中可用,本文将讨论如何使用MiniProfiler并通过它发现应用程序性能问题。安装MiniProfiler使用MiniProfiler需要通过nuget引用MiniProfiler.AspNetCore.Mvc包,可以通过VisualStudio2019的NuGet包管理器可视化界面安装或者通过NuGet包管理器命令行工具输入如下命令:dotnetaddpackageMiniProfiler.AspNetCore.Mvc安装完成后,下一步就是将MiniProfiler注入到ServiceCollection容器中,如下代码所示:>options.RouteBasePath="/profiler");}注入后需要使用UseMiniProfiler扩展方法将其注入到RequestPipeline管道中,如下代码所示:publicvoidConfigure(IApplicationBuilderapp,IWebHostEnvironmentenv,ILoggerFactoryloggerFactory){app.UseMiniProfiler();app.UseEndpointts(endpoints=>{endpoints.MapControllerRoute(name:"default",pattern:"{controller=Home}/{action=Index}/{id?}");});}然后将下面两行添加到_Layout.cshtml页面顺序。@usingStackExchange.Profiling@addTagHelper*,MiniProfiler.AspNetCore.Mvc最后需要指定MiniProfiler分析窗口在WebPage中应该显示的位置,那怎么办呢?在body标签中使用mini-profiler标签,如下代码所示:时间和数据库查询性能指标,然后运行程序,你会看到如下Performancemetrics图。有的朋友可能要问了,我知道大概的时间,那如果只想获取指定代码块的执行时间怎么办?当然也是可以的,下面的代码展示了如何实现。publicclassHomeController:Controller{ILoggerlogger;publicHomeController(ILoggerlogger){this.logger=logger;}publicIActionResultIndex(){varminiProfiler=MiniProfiler.Current;Listauthors=newList();miniProfiler.RenderIncludes(this.HttpContext);using(miniProfiler.Step("GetAuthors")){authors.Add(newAuthor(){Id=1,FirstName="Joydip",LastName="Kanjilal",Address="印度海得拉巴"});authors.Add(newAuthor(){Id=2,FirstName="Stephen",LastName="Smith",Address="NY,USA"});authors.Add(newAuthor(){Id=3,FirstName="Anand",LastName="Narayanan",Address="Chennai,India"});authors.Add(newAuthor(){Id=4,FirstName="Steve",LastName="Jones",Address="伦敦,UK"});}returnView(作者);}}publicclassAuthor{publicintId{get;set;}publicstringFirstName{get;set;}publicstringLastName{get;set;}publicstringAddress{get;set;}}从上面的代码可以看出,我把语句块标记为using(miniProfiler.Step("GetAuthors")),理论上应该有类似GetAuthors的指示条,然后运行程序一起看看效果除了前向操作,你还可以指定某些代码块不应该显示在mini-profile中,你需要做的就是调用Ignore(),如下代码所示:using(MiniProfiler.Current.Ignore()){//Writecodeherethatyoudon't//wantMiniProfilertoprofile}使用MiniProfile分析ADO.NET查询除了做一些常规的页面分析,还可以直接分析ADO.NET查询性能,也就是????,做所以,你需要使用ProfileDbConnection和ProfileDbCommand就可以了,如下代码所示:newProfiledDbConnection(connection,MiniProfiler)Currrent){if(profiledDbConnection.State!=System.Data.ConnectionState.Open){profiledDbConnection.Open();}using(SqlCommandcommand=newSqlCommand("Select*FromClothes",connection)){using(配置文件命令profiledDbCommand=newProfiledDbCommand(command,connection),MiniProfiler.Current)){vardata=profiledDbCommand.ExecuteReader();//这里写代码这里topopulatethelistofAuthors}}}}returnView();}从上图可以看出,确实分析的很清楚ADO.NET查询。我相信它会有所帮助对你分析问题很有帮助。MiniProfiler是一个性能分析工具,可以应用于.NET、Ruby、Go和Node.js。您可以使用MiniProfiler分析Dapper、Linq2SQL和EntityFramework使用的SQL的查询性能。另外MimiProfile之所以是Mini,意味着它对你的应用程序的干预所带来的性能开销是最小的,所以你可以放心地将它投入生产!翻译链接:https://www.infoworld.com/article/3330560/how-to-use-miniprofiler-in-aspnet-core.html