Lifetime
.NET
문서에 따르면 Dependency Injection
및 IoC
원칙을 구현하기 위해 다음 lifetime
중 하나를 등록하여 사용할 수 있다.
- Transient
- Scoped
- Singleton
Transient
- 서비스 컨테이너에서 요청할 때마다 생성된다.
- 간단한
Stateless
서비스에 적합하다.
Scoped
- 클라이언트의 요청부터 응답까지 유지된다.
- 클라이언트마다 생성되므로 연결되는 클라이언트 수 만큼 존재될 수 있다.
Singleton
- 클라이언트 요청과 관계 없이 웹서비스 시작될 때부터 종료될 때까지 유지된다.
- 클라이언트가 많아도 오직 1개의 서비스를 제공한다.
- 종료될 때까지 메모리가 해제되지 않으므로 메모리 사용을 고려해야 한다.

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