ASP.NET Core WebAPI中的剖析对象MiniProfiler_玖富娱乐主


玖富娱乐是一家为代理招商,直属主管信息发布为主的资讯网站,同时也兼顾玖富娱乐代理注册登录地址。

引见

作为一个开辟人员,你晓得怎样剖析本身开辟的Api机能么?

在Visual Studio和Azure中, 我们能够运用Application Insight来监控项目。除此之外我们还能够运用一个免费对象Stackify Prefix,它许可追踪一切的Http要求, 这里有一篇博客解说了怎样运用Stackify Prefix(Scalable and Performant ASP.NET Core Web APIs: Profiling and Monitoring)。

本文我将引入别的一个对象MiniProfiler, 我将解说怎样将MiniProfiler集成到ASP.NET Core WebAPI中。

Stackify Prefix类似,MiniProfiler也是一款免费的对象(官网地点:https://miniprofiler.com/dotnet/),你能够运用它准确的剖析ASP.NET和ASP.NET Core应用顺序的任何代码。

Tips: MiniProfiler在ASP.NET和控制台顺序中也能够运用哦。

装置

我们能够运用Nuget来下载这个包。

PM> Install-Package MiniProfiler.AspNetCore.Mvc

设置装备摆设Startup.cs

MiniProfiler设置装备摆设起来很简单,只须要以下几步

ConfigureServices要领中增加MiniProfiler效劳

public void ConfigureServices(IServiceCollection services)
{
   services.AddMiniProfiler(options =>
      options.RouteBasePath = "/profiler"
   );
}
  • 这里是设置装备摆设了MiniProfiler的路由基本途径,默许的途径是/mini-profiler-resources
  • 依照以后设置装备摆设,你能够运用"/profiler/results"来接见剖析申报

激活中间件,启用MiniProfiler效劳

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
   app.UseMiniProfiler();
}

设置装备摆设须要监控剖析的代码

public class ValueController : ControllerBase
{
   [HttpGet]
   public IEnumerable<string> Get()
   {
      string url1 = string.Empty;
      string url2 = string.Empty;
      using (MiniProfiler.Current.Step("Get要领"))
      {
         using (MiniProfiler.Current.Step("预备数据"))
         {
            using (MiniProfiler.Current.CustomTiming("SQL", "SELECT * FROM Config"))
            {
               // 模仿一个SQL查询
               Thread.Sleep(500);
               
               url1 = "https://www.baidu.com";
               url2 = "https://www.sina.com.cn/";
            }
         }
         
         
         using (MiniProfiler.Current.Step("运用从数据库中查询的数据,举行Http要求"))
         {
            using (MiniProfiler.Current.CustomTiming("HTTP", "GET "   url1))
            {
               var client = new WebClient();
               var reply = client.DownloadString(url1);
            }

            using (MiniProfiler.Current.CustomTiming("HTTP", "GET "   url2))
            {
               var client = new WebClient();
               var reply = client.DownloadString(url2);
            }
         }
      }
      return new string[] { "value1", "value2" }; 
   }
}

代码诠释:

  • MiniProfiler.Current.Step要领界说了剖析的步调,这个要领能够接收一个String范例的参数,它会显现在终究的申报中
  • MiniProfiler.Current.CustomTiming要领是更细粒度的对申报内容举行分类,以上代码中界说了2种分类,一种是SQL, 一种是Http
  • 上述顺序的功用: 模仿从数据库拉取2个网站的Url, 并运用WebClient来离别要求网站的Url

检察效果

下面我们启动项目, 项目默许翻开/api/values

然后我们来接见以下/profiler/results, 就会涌现以下页面

如上图所示,我们能够很清晰的看到代码中每一部分的耗时,因为我们增加了2种分类SQL和Http,以是列表中会对2种分类举行汇总。

重点: 以后页面只会显现近来的一次要求

-玖富娱乐是一家为代理招商,直属主管信息发布为主的资讯网站,同时也兼顾玖富娱乐代理注册登录地址。-

从以后申报中能够获得以下结论

  • 以后要求总相应时候 1723.6ms
  • SQL语句查询耗时517.ms
  • 2次Http要求共耗时868.3ms, 个中接见百度耗时424.6ms, 接见新浪耗时443.7ms

怎样让MiniProfiler与Swagger集成

这里我们就不再讲怎样在ASP.NET Core中整合Swagger。

MiniProfiler和Swagger是能够集成在一起的,为了完成这个功用,我们须要举行以下几步

下载Swagger自界说页面

默许的index.html页面能够从以下链接下载

https://github.com/domaindrivendev/Swashbuckle.AspNetCore/blob/master/src/Swashbuckle.AspNetCore.SwaggerUI/index.html

下载以后将这个文件安排到项目根目录下。

接下来我们须要在这个文件的头部到场以下剧本代码:

<script async="async" id="mini-profiler" src="/profiler/includes.min.js?v=4.0.138 gcc91adf599" 
        data-version="4.0.138 gcc91adf599" data-path="/profiler/" 
        data-current-id="4ec7c742-49d4-4eaf-8281-3c1e0efa748a" data-ids="" data-position="Left" 
        data-authorized="true" data-max-traces="15" data-toggle-shortcut="Alt P" 
        data-trivial-milliseconds="2.0" data-ignored-duplicate-execute-types="Open,OpenAsync,Close,CloseAsync">
</script>

末了我们须要设置装备摆设这个index.html文件的Bulid Action为Embedded resource

装置自界说页面

Startup.cs文件中,我们须要修正UseSwaggerUI中间件的设置装备摆设,这里我们须要增加一个InputStream设置装备摆设。

app.UseSwaggerUI(c =>
{
   c.RoutePrefix = "swagger";
   c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1");
   c.IndexStream = () => GetType().GetTypeInfo().Assembly.GetManifestResourceStream("MiniProfilerSample.index.html");
});

注重:这里MiniProfilerSample是项目的定名空间名

终究效果

重新启动项目,Swagger文档页面的左上角就涌现了一个小的面板,当模仿要求一个衔接以后,它就会显现出以后要求的剖析数据,看起来是否是很酷炫。

总结

本篇博客形貌了怎样运用MiniProfiler来监控剖析你的Api。 MiniProfiler除供应网页显现申报,还支撑将申报效果存储在数据库中,背面我会增补一篇文章来申明怎样将申报保存到数据库中。

本篇源代码: https://github.com/lamondlu/Sample_MiniProfiler

-玖富娱乐是一家为代理招商,直属主管信息发布为主的资讯网站,同时也兼顾玖富娱乐代理注册登录地址。