ASP.Net Core에서 MiniProfiler를 사용하는 방법

웹 애플리케이션의 성능은 전 세계적으로 심각한 문제입니다. 개발자는 웹 애플리케이션을 프로파일 링하고 성능 병목 지점을 찾는 데 사용할 수있는 많은 도구를 가지고 있습니다. MiniProfiler는 웹 애플리케이션을 프로파일 링하기위한 간단하면서도 강력한 도구 중 하나입니다. MiniProfiler는 느리게 실행되는 쿼리, 느린 서버 응답 시간 등을 감지하는 데 도움이됩니다. 

MiniProfiler는 .Net, ASP.Net 및 ASP.Net Core에서 사용할 수 있습니다. GitHub에서 MiniProfiler에 대한 문서를 찾을 수 있습니다. 이 기사에서는 MiniProfiler에 대한 논의, 유용한 이유,이를 사용하여 ASP.Net Core MVC 애플리케이션을 프로파일 링하고 애플리케이션의 성능 문제를 발견하는 방법을 설명합니다.

Visual Studio 2017에서 ASP.Net Core MVC 프로젝트 만들기

먼저 Visual Studio에서 ASP.Net Core MVC 프로젝트를 만들어 보겠습니다. Visual Studio 2017이 시스템에서 실행 중이면 아래 단계에 따라 ASP.Net Core MVC 프로젝트를 만듭니다.

  1. Visual Studio 2017 IDE를 시작합니다.
  2. 파일> 새로 만들기> 프로젝트를 클릭합니다.
  3. 표시된 템플릿 목록에서 "ASP.Net Core 웹 애플리케이션 (.Net Core)"을 선택합니다.
  4. 프로젝트의 이름을 지정하십시오.
  5. 확인을 클릭하여 프로젝트를 저장하십시오.
  6. "새 .Net Core 웹 애플리케이션…"이라는 새 창이 표시됩니다.
  7. 런타임으로 .Net Core를 선택하고 상단의 드롭 다운 목록에서 ASP.Net Core 2.1 이상을 선택합니다. .Net Core 2.2를 사용하고 있습니다.
  8. 프로젝트 템플릿으로“Web Application (Model-View-Controller)”을 선택합니다 (아래 그림 1 참조).
  9. "Docker 지원 활성화"및 "HTTPS 구성"확인란이 선택 취소되어 있는지 확인합니다. 여기서는 이러한 기능을 사용하지 않습니다.
  10. "인증 없음"이 선택되었는지 확인합니다. 여기서도 인증을 사용하지 않습니다.
  11. 확인을 클릭하십시오. 

다음 단계에 따라 Visual Studio에서 새 ASP.Net Core MVC 프로젝트를 만듭니다. 이 프로젝트를 사용하여 MiniProfiler를 사용하여 애플리케이션을 프로파일 링합니다.

ASP.Net Core에서 MiniProfiler 설치 및 구성

MiniProfiler 작업을 시작하려면 필요한 NuGet 패키지를 설치해야합니다. 프로젝트에 MiniProfiler를 설치하려면 아래 단계를 따르십시오.

  1. 솔루션 탐색기 창에서 프로젝트를 선택합니다. 
  2. 마우스 오른쪽 단추를 클릭하고 "NuGet 패키지 관리 ..."를 선택합니다.
  3. “MiniProfiler.AspNetCore.Mvc”패키지를 검색합니다. 
  4. "설치"를 클릭하여 NuGet 패키지를 설치합니다. 

그러면 프로젝트에 MiniProfiler.AspNetCore.Mvc NuGet 패키지가 설치됩니다. 프로젝트에서 MiniProfiler 사용을 시작하려면 Startup 클래스에서 구성해야합니다. 다음 코드 조각은 IServiceCollection 인스턴스에서 AddMiniProfiler 메서드를 호출하여 MiniProfiler를 파이프 라인에 추가하는 방법을 보여줍니다.

public void ConfigureServices (IServiceCollection 서비스)

        {

            services.AddMiniProfiler (옵션 =>

            options.RouteBasePath = "/ profiler"

            );

            // 일반 코드

        }

여기 MiniProfiler 웹 사이트에서 파이프 라인에 MiniProfiler를 등록 할 때 지정할 수있는 옵션에 대해 자세히 알아볼 수 있습니다.

또한 IApplicationBuilder 인스턴스에서 UseMiniProfiler 메서드를 호출하여 컨트롤러 및 뷰에서 MiniProfiler 사용을 시작해야합니다.

public void Configure (IApplicationBuilder 앱, IHostingEnvironment 환경)

    {

       app.UseMiniProfiler ();

       // 일반 코드

    }

다음으로 _Layout.cshtml 파일의 태그 안에 다음 두 줄을 추가합니다.

@ StackExchange.Profiling 사용

@addTagHelper *, MiniProfiler.AspNetCore.Mvc

또한 웹 페이지에서 MiniProfiler 창이 표시되어야하는 위치, 즉 렌더링 위치를 지정해야합니다. 이를 위해 태그 안에 다음 문을 포함 할 수 있습니다.


  

MiniProfiler의 단계를 사용하여 ASP.Net Core MVC 코드 프로파일 링

MiniProfiler는 데이터베이스 쿼리 성능과 관련된 페이지로드 시간 및 정보를 알려줍니다. 애플리케이션을 실행하면 아래 그림 2와 같이 출력이 표시됩니다. 화면 오른쪽 상단에있는 MiniProfiler 창을 확인하십시오.

코드의 특정 부분을 실행하는 데 걸리는 시간을 알아 보려면 단계를 활용할 수 있습니다. 다음 코드 스 니펫은이를 달성하는 방법을 보여줍니다.

공용 IActionResult Index ()

 {

       var miniProfiler = MiniProfiler.Current;

       목록 작성자 = new List ();

       miniProfiler.RenderIncludes (this.HttpContext);

       (miniProfiler.Step ( "Get Authors")) 사용

       {

           authors.Add (new Author () {Id = 1, FirstName = "Joydip", LastName = "Kanjilal", 주소 = "Hyderabad, India"});

           authors.Add (new Author () {Id = 2, FirstName = "Stephen", LastName = "Smith", 주소 = "NY, USA"});

           authors.Add (new Author () {Id = 3, FirstName = "Anand", LastName = "Narayanan", 주소 = "Chennai, India"});

           authors.Add (new Author () {Id = 4, FirstName = "Steve", LastName = "Jones", 주소 = "London, UK"});

       }

           return View (작성자);

 }

다음 코드 스 니펫은 위에서 언급 한 Author 클래스의 모습을 보여줍니다.

공개 클래스 작성자

    {

        public int Id {get; 세트; }

        public string FirstName {get; 세트; }

        public string LastName {get; 세트; }

        공개 문자열 주소 {get; 세트; }

    }

응용 프로그램을 실행하면 아래 그림 3과 같이 정의한 단계에 걸린 시간을 볼 수 있습니다. 녹색으로 강조 표시 한 항목은 "작성자 가져 오기"단계를 실행하는 데 걸린 시간을 보여줍니다.

프로파일 링에서 애플리케이션 코드의 특정 부분을 무시하려면 아래 코드 스 니펫에 표시된대로 무시할 코드를 지정할 수 있습니다.

(MiniProfiler.Current.Ignore ()) 사용

{

  // 여기에하지 않는 코드 작성

  // MiniProfiler가 프로파일 링하기를 원합니다

}

MiniProfiler를 사용하여 ADO.Net 쿼리 프로파일 링

MiniProfiler를 사용하여 ADO.Net 쿼리를 프로파일 링 할 수도 있습니다. 이렇게하려면 아래 코드 스 니펫에 표시된대로 ProfileDbConnection 및 ProfileDbCommand를 활용해야합니다.

(SqlConnection 연결 = new SqlConnection (@ "Data Source = JOYDIP \ SQLEXPRESS; Initial Catalog = SyncDB; Trusted_Connection = Yes")) 사용

     {

       (ProfiledDbConnection profiledDbConnection = new ProfiledDbConnection (connection, MiniProfiler.Current)) 사용

         {

           if (profiledDbConnection.State! = System.Data.ConnectionState.Open)

               profiledDbConnection.Open ();

             (SqlCommand 명령 = 새 SqlCommand

              ( "Select * From Authors", 연결))

               {

                 (ProfiledDbCommand profiledDbCommand =

                   new ProfiledDbCommand (명령, 연결,

                     MiniProfiler.Current))

                       {                               

                         var 데이터 =

                          profiledDbCommand.ExecuteReader ();

              // 여기에 코드를 작성하여 작성자 목록을 채우십시오.

                        }

                 }

          }                      

    }

ProfileDbConnection 및 ProfileDbCommand가 DbConnection 및 DbCommand 개체를 래핑하는 방법에 유의하십시오. MiniProfiler 웹 사이트에서 MiniProfiler를 사용하여 소스 코드를 프로파일 링하는 방법에 대해 자세히 알아볼 수 있습니다.

MiniProfiler는 .Net, Ruby, Go 및 Node.js 용 간단한 프로파일 러입니다. MiniProfiler를 사용하여 Dapper, Linq2SQL 및 Entity Framework에서 생성 된 쿼리를 프로파일 링 할 수 있습니다. 사용하기 쉬울뿐만 아니라 MiniProfiler는 애플리케이션에 많은 오버 헤드를 추가하지 않습니다. MiniProfiler를 사용하여 성능에 큰 영향을주지 않고 프로덕션 애플리케이션을 프로파일 링 할 수 있습니다.