Dependency Injection 의 Lifetime 과 Scoping

devhong·2023년 1월 4일
0
post-thumbnail

Lifetime

.NET 문서에 따르면 Dependency InjectionIoC 원칙을 구현하기 위해 다음 lifetime 중 하나를 등록하여 사용할 수 있다.

  • Transient
  • Scoped
  • Singleton

Transient

  • 서비스 컨테이너에서 요청할 때마다 생성된다.
  • 간단한 Stateless 서비스에 적합하다.

Scoped

  • 클라이언트의 요청부터 응답까지 유지된다.
  • 클라이언트마다 생성되므로 연결되는 클라이언트 수 만큼 존재될 수 있다.

Singleton

  • 클라이언트 요청과 관계 없이 웹서비스 시작될 때부터 종료될 때까지 유지된다.
  • 클라이언트가 많아도 오직 1개의 서비스를 제공한다.
  • 종료될 때까지 메모리가 해제되지 않으므로 메모리 사용을 고려해야 한다.


Scoping

  • 범위가 지정된 서비스는 Singleton 으로 처리되지 않는다.
  • 범위가 지정된 서비스는 BuildServiceProvider 을 호출할 때 만들어지는 Root Service Provider에서 확인되지 않는다.
  • 범위가 지정된 서비스는 서비스를 만든 컨테이너에 의해 삭제된다.
  • IServiceScopeFactory 는 항상 Singleton 으로 등록된다.

Reference

profile
당신을 한 줄로 소개해보세요.

0개의 댓글