[.NET Core] Service 생명주기 - AddScoped, AddTransient, AddSingleton

728x90
반응형

서비스 수명

등록된 각 서비스의 수명을 적절히 선택합니다. ASP.NET Core 서비스는 다음 수명을 사용하여 구성할 수 있습니다.


Transient

Transient 수명 서비스(AddTransient)는 서비스 컨테이너에서 요청할 때마다 만들어집니다.
이 수명은 간단한 상태 비저장 서비스에 가장 적합합니다.

 

매번 인스턴스를 새로 생성하기 때문에 모든 값은 초기값으로 설정됩니다. 

Scoped

Scoped 수명 서비스(AddScoped)는 클라이언트 요청(연결)당 한 번 생성됩니다.

미들웨어에서 범위가 지정된 서비스를 사용하는 경우 Invoke 또는 InvokeAsync 메서드에 서비스를 삽입합니다. 생성자 삽입은 서비스가 싱글톤처럼 작동하게 하므로 이러한 방법으로 삽입하지 마세요. 자세한 내용은 사용자 지정 ASP.NET Core 미들웨어 작성을 참조하세요.

 

- 클라이언트 요청당 한번 생성이 되며, 해당 연결이 유지되면 지속적으로 사용합니다.
- 요청 내에서 상태를 유지하려는 경우 좋습니다.

Singleton

싱글톤 수명 서비스(AddSingleton)는 처음 요청할 때(또는 Startup.ConfigureServices를 실행하고 서비스 등록에서 인스턴스를 지정하는 경우) 생성됩니다. 모든 후속 요청에서는 같은 인스턴스를 사용합니다. 앱에 싱글톤 동작이 필요한 경우 서비스 컨테이너가 서비스 수명을 관리하도록 허용하는 것이 좋습니다. 싱글톤 디자인 패턴을 구현하거나 클래스의 개체 수명을 관리하는 사용자 코드를 제공하지 마세요.

 

Scoped 로 지정하려는 수명 서비스를 싱글톤으로 해결하면 위험합니다. 이 경우 후속 요청을 처리할 때 서비스가 잘못된 상태일 수 있습니다.

 

- 인스턴스 하나로 지속적으로 재활용합니다.
- 어플리케이션 전체 상태를 유지해야 하는 경우 싱클톤을 사용하십시오.

 

728x90