■ 인라인 미들웨어 성능을 측정하는 방법을 보여준다.
▶ Startup.cs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 |
using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Http; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using System.Diagnostics; namespace TestProject { /// <summary> /// 시작 /// </summary> public class Startup { //////////////////////////////////////////////////////////////////////////////////////////////////// Property ////////////////////////////////////////////////////////////////////////////////////////// Public #region 구성 - Configuration /// <summary> /// 구성 /// </summary> public IConfiguration Configuration { get; } #endregion //////////////////////////////////////////////////////////////////////////////////////////////////// Constructor ////////////////////////////////////////////////////////////////////////////////////////// Public #region 생성자 - Startup(configuration) /// <summary> /// 생성자 /// </summary> /// <param name="configuration">구성</param> public Startup(IConfiguration configuration) { Configuration = configuration; } #endregion //////////////////////////////////////////////////////////////////////////////////////////////////// Method ////////////////////////////////////////////////////////////////////////////////////////// Public #region 서비스 컬렉션 구성하기 - ConfigureServices(services) /// <summary> /// 서비스 컬렉션 구성하기 /// </summary> /// <param name="services">서비스 컬렉션</param> public void ConfigureServices(IServiceCollection services) { services.AddAuthorization(); } #endregion #region 구성하기 - Configure(app, logger) /// <summary> /// 구성하기 /// </summary> /// <param name="app">애플리케이션 빌더</param> /// <param name="logger">로그 기록기</param> public void Configure(IApplicationBuilder app, ILogger<Startup> logger) { // 인라인 미들웨어 1 app.Use ( next => async context => { Stopwatch stopwatch = Stopwatch.StartNew(); await next(context); stopwatch.Stop(); logger.LogInformation($"TIME 1 : {stopwatch.ElapsedMilliseconds}ms"); } ); app.UseRouting(); // 인라인 미들웨어 2 app.Use ( next => async context => { Stopwatch stopwatch = Stopwatch.StartNew(); await next(context); stopwatch.Stop(); logger.LogInformation($"TIME 2 : {stopwatch.ElapsedMilliseconds}ms"); } ); app.UseAuthorization(); // 인라인 미들웨어 3 app.Use ( next => async context => { Stopwatch stopwatch = Stopwatch.StartNew(); await next(context); stopwatch.Stop(); logger.LogInformation($"TIME 3 : {stopwatch.ElapsedMilliseconds}ms"); } ); app.UseEndpoints ( endpoints => { endpoints.MapGet ( "/", async context => { await context.Response.WriteAsync("Timing test."); } ); } ); } #endregion } } |