반응형
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의 강력한 의존성 주입 시스템을 활용하여 서비스 라이프타임을 적절하게 선택하고 사용하여 안정적이고 효율적인 애플리케이션을 구축할 수 있습니다.
반응형
'C#' 카테고리의 다른 글
C# 동적으로 메서드 호출하기: Reflection과 Type 활용 (0) | 2023.12.28 |
---|---|
Binary(이진 파일)의 장점 및 사용 (1) | 2023.12.19 |
Interop 라이브러리 (0) | 2023.12.12 |
C# 라이브러리 만들기 (1) | 2023.11.28 |
C# Delegate , 제네릭(Generic) (1) | 2023.11.27 |