C #에서 Hangfire로 작업하는 방법

웹 응용 프로그램에서 작업을 예약하는 것은 어려운 일이며 작업에 대한 여러 프레임 워크 중에서 선택할 수 있습니다. 인기있는 오픈 소스 라이브러리 인 Hangfire는 .Net에서 백그라운드 작업을 예약하는 데 사용할 수있는 프레임 워크 중 하나입니다.

Hangfire를 사용해야하는 이유는 무엇입니까?

오늘날 사용 가능한 많은 작업 예약 프레임 워크가 있습니다. 그렇다면 오랫동안 사용 되어온 또 다른 인기 프레임 워크 인 Quartz.Net 대신 Hangfire를 사용해야하는 이유는 무엇입니까? 글쎄, Quartz.Net의 주요 단점 중 하나는 Windows 서비스가 필요하다는 것입니다. 반대로 애플리케이션에서 Hangfire를 사용하기 위해 Windows 서비스가 필요하지 않습니다. Windows 서비스없이 실행할 수있는 기능으로 인해 Hangfire는 Quartz.Net보다 좋은 선택입니다. Hangfire는 작업 처리 및 실행을 위해 ASP.Net의 요청 처리 파이프 라인을 활용합니다.

Hangfire는 웹 애플리케이션에만 국한되지 않습니다. 콘솔 애플리케이션에서도 사용할 수 있습니다. Hangfire에 대한 문서는 매우 상세하고 잘 구성되어 있으며 가장 좋은 기능은 내장 대시 보드입니다. Hangfire 대시 보드에는 작업, 대기열, 작업 상태 등에 대한 자세한 정보가 표시됩니다.

시작하기

Hangfire를 활용하는 Visual Studio에서 새 프로젝트를 만들려면 다음 단계를 따르세요.

  1. Visual Studio 2015 열기
  2. 파일> 새로 만들기> 프로젝트를 클릭합니다.
  3. 표시된 프로젝트 템플릿 목록에서 Visual C #> 웹을 선택합니다.
  4. 웹 프로젝트 템플릿 목록에서 ASP.Net 웹 응용 프로그램을 선택합니다.
  5. 이름으로 프로젝트 저장

다음 단계는 애플리케이션에 Hangfire를 설치하고 구성하는 것입니다. 프로세스는 매우 간단합니다. Visual Studio의 NuGet 패키지 관리자를 통해 Hangfire를 설치할 수 있습니다. 또는 패키지 관리자 콘솔을 사용하여 Hangfire 라이브러리를 설치할 수도 있습니다. Hangfire의 기본 설치는 예약 정보를 저장하기 위해 SQL Server를 사용합니다. 또한 저장소 대신 Redis를 사용하는 경우 Hangfire.Redis를 설치할 수 있습니다.

Hangfire는 작업을 영구 저장소에 저장합니다. Hangfire 사용을 시작하기 전에 저장소를 구성해야합니다. 이렇게하려면 데이터베이스를 만들고 구성 파일의 연결 문자열에 데이터베이스 자격 증명을 지정합니다. 데이터베이스에 테이블을 만들 필요가 없습니다. Hangfire가 자동으로 수행합니다. 나중에 어떻게 그리고 언제 완료되는지 볼 것입니다.

이제 데이터베이스가 만들어지고 응용 프로그램의 구성 파일에 연결 문자열 정보가 지정되었으므로 다음 단계는 Startup.cs 파일을 수정하고 필요한 연결 문자열 정보를 제공하는 것입니다. 다음 코드 목록은 구성 세부 정보가 지정된 후 Startup.cs 파일이 어떻게 보이는지 보여줍니다.

using Hangfire;

using Microsoft.오윈;

using Owin;

using System;

[assembly: OwinStartupAttribute(유형(HangFire.Startup))]

namespace HangFire

{

    public partial class Startup

    {

        public void Configuration(IAppBuilder app)

        {

            ConfigureAuth(app);

            GlobalConfiguration.Configuration

                .UseSqlServerStorage("DefaultConnection");

            BackgroundJob.Enqueue(() => Console.WriteLine("Getting Started with HangFire!"));

            app.UseHangfireDashboard();

            app.UseHangfireServer();

        }

    }

}

설정이 완료되었습니다. 애플리케이션을 실행하고 URL에 "/ hangfire"를 붙이면 Hangfire 대시 보드를 볼 수 있습니다. 처음 실행하면 데이터베이스에 새 테이블이 생성됩니다. 생성되는 테이블에는 AggregatedCounter, Counter, Hash, Job, JobParameter, JobQueue, List, Schema, Server, Set 및 State가 포함됩니다. Hangfire에서 fire-and-forget 배경을 만드는 것은 매우 간단합니다. 클래스 의 Enqueue()메서드를 사용하여 백그라운드 작업을 만들 수 있습니다 BackgroundJob. 예를 들면 다음과 같습니다.

BackgroundJob.Enqueue(() => Console.WriteLine("This is a fire-and-forget job that would run in the background."));

지연된 백그라운드 작업은 (지연 간격 동안) 기다린 다음 일반 실행 후 삭제 백그라운드 작업과 거의 동일한 방식으로 실행되는 작업입니다. 다음 코드 조각 Schedule()BackgroundJob클래스 의 메서드를 사용하여 지연된 백그라운드 작업을 만드는 방법을 보여줍니다 .

BackgroundJob.Schedule(() => Console.WriteLine("This background job would execute after a delay."), TimeSpan.FromMilliseconds(1000));

특정 시간 간격 후에 실행되는 작업을 실행하려면 Hangfire에서 반복 작업을 만들어야합니다. 되풀이되는 작업을 생성하려면 RecurringJob클래스 를 활용해야 합니다. Hangfire에서 작업을 예약 할 때 "cron"표현식을 지정할 수도 있습니다. 다음 코드 스 니펫은 Hangfire 라이브러리를 사용하여 반복 작업을 만드는 방법을 보여줍니다.

RecurringJob.AddOrUpdate(() => Console.WriteLine("This job will execute once in every minute"), Cron.Minutely);

자세한 내용은 Hangfire Highlighter 튜토리얼을 확인하십시오.