C#

ASP.NET Core 서비스 라이프타임 종류 및 특징

검은고양이개발자 2023. 12. 14. 16:23
반응형

ASP.NET Core에서 서비스 라이프타임은 서비스가 생성되고 사용되는 시간 동안의 범위를 나타냅니다.

서비스 라이프타임은 서비스의 인스턴스가 어떻게 관리되고 언제 생성되고 소멸되는지를 결정합니다.

ASP.NET Core는 주로 세 가지 라이프타임을 제공합니다: Singleton, Scoped, 그리고 Transient.

 

1. Singleton 라이프타임


특징:

  • 애플리케이션 전체에서 하나의 인스턴스를 공유합니다.
  • 애플리케이션이 시작될 때 생성되고 종료될 때까지 유지됩니다.

활용 예시:

  • 애플리케이션 설정, 캐싱, 로깅 등과 같이 공유 자원을 관리할 때 사용됩니다.

예시 코드:

builder.Services.AddSingleton<ConfigurationManager>();
builder.Services.AddSingleton<Logger>();

 

2. Scoped 라이프타임


특징:

  • 각 HTTP 요청마다 하나의 인스턴스를 생성하며, 같은 요청 내에서는 같은 인스턴스를 공유합니다.
  • 요청이 끝나면 인스턴스도 함께 소멸됩니다.

활용 예시:

  • 데이터베이스 컨텍스트와 같이 HTTP 요청 범위에서 데이터를 저장하거나 공유해야 할 때 사용됩니다.

예시 코드:

builder.Services.AddScoped<DbContext>();
builder.Services.AddScoped<UserService>();

 

3. Transient 라이프타임


특징:

  • 매번 서비스를 요청할 때마다 새로운 인스턴스가 생성됩니다.
  • 서비스가 호출될 때마다 다른 인스턴스를 사용합니다.

활용 예시:

  • 간단한 계산 서비스, 데이터 변환 서비스 등과 같이 상태를 공유하지 않아야 하는 경우에 사용됩니다.

예시 코드:

builder.Services.AddTransient<CalculatorService>();
builder.Services.AddTransient<JsonConverterService>();

결론


라이프타임을 선택하는 것은 애플리케이션의 특정 요구사항과 설계 목표에 따라 달라집니다. 올바른 라이프타임 선택은 성능 최적화와 메모리 관리에 도움이 될 뿐만 아니라, 애플리케이션의 유지보수와 확장성에도 영향을 미칩니다. ASP.NET Core의 강력한 의존성 주입 시스템을 활용하여 서비스 라이프타임을 적절하게 선택하고 사용하여 안정적이고 효율적인 애플리케이션을 구축할 수 있습니다.

반응형