天天看点

AspNetCore 3.1(ABP.Next)集成MiniProfile(简要)

本文主要采用的是ABP.Next框架的模块化的开发方式, 进行集成MiniProfile并测试。

MiniProfiler官网: https://miniprofiler.com/dotnet/

简要说明

MiniProfiler是用于对应用程序进行性能分析的库和UI。通过让您看到花费的时间,运行哪些查询以及要添加的其他自定义时间,MiniProfiler可以帮助您调试问题并优化性能。

MiniProfiler监控的信息可以存放内容, 也可以存放内存、MongoDb、MySql、SqlServer、Redis、PostgreSql等等很多存储介质。支持对EF、EFCore、NHibernate等等ORM, 可以监控所执行的SQL, 和执行时长,便于对SQL进行优化。

以下MiniProfiler只是简单的集成,若需要更多的要求,可以查看官网。

安装和集成

1. 先安装Nuget包:

// 主要是用于监控WebApi
Install-Package MiniProfiler.AspNetCore.Mvc
// 用于监控EntityFrameworkCore
Install-Package MiniProfiler.EntityFrameworkCore
           

2. 增加AbpModule文件, 内容如下:

public class MiniProfilerModule:AbpModule
    {
        public override void ConfigureServices(ServiceConfigurationContext context)
        {
            var services = context.Services;
            services.AddMiniProfiler(options =>
            {
                options.RouteBasePath = "/profiler";
                (options.Storage as MemoryCacheStorage).CacheDuration = TimeSpan.FromMinutes(60);
                options.SqlFormatter = new StackExchange.Profiling.SqlFormatters.InlineFormatter(); 
                options.TrackConnectionOpenClose = true;
                options.ColorScheme = StackExchange.Profiling.ColorScheme.Auto;
                options.EnableMvcFilterProfiling = true;
                options.EnableMvcViewProfiling = true;
            }).AddEntityFramework(); // AddEntityFramework是要监控EntityFrameworkCore生成的SQL
        }

        public override void OnApplicationInitialization(ApplicationInitializationContext context)
        {
            var app = context.GetApplicationBuilder();
            app.UseMiniProfiler();  
        }
    }
           

3. 在WebApi中的Module增加依赖

[DependsOn(typeof(MiniProfilerModule))]
    public class PdmHostModule : AbpModule
           

以上步骤已将MiniProfiler集成到项目中

测试查看

1. 打开看板, http://{DomainName}/profiler/results-index, 如: http://localhost:5000/profiler/results-index, 看板如下图:

AspNetCore 3.1(ABP.Next)集成MiniProfile(简要)

2. 打开Name下面的蓝色文字链接, 如Bank/AddBank, 可以查看整个请求的生命周期的耗时, 如下图:

AspNetCore 3.1(ABP.Next)集成MiniProfile(简要)