더북(TheBook)

30.1 | ASP.NET Core 1.0 - DI 컨테이너의 세 가지 모드

 

ASP.NET에서 제공하는 DI(Dependency Injection) 컨테이너는 다음과 같이 세 가지 유형이다. 간략히 요약했으니 한 번 읽어본 후, 자세한 특징은 실습 예제를 통해서 이해하도록 하자.

Transient: 새로운 인스턴스가 매번 생성된다.

Singleton: 단일 인스턴스가 생성되고 싱글톤으로 처리된다.

Scoped: 현재 스코프 내에 단일 인스턴스가 생성된다. 현재 스코프 내에서는 Singleton과 같다. 여기서 스코프란 웹으로 요청된 동일 요청을 말한다.

 

코드 모양은 다음과 같이 사용된다. 누군가가 IService를 요청하면 Service를 제공하는 형태다.

services.AddSingleton<IService, Service>();

- 하나의 인스턴스만 생성된다. 프로젝트 전체에서 같은 인스턴스가 생성(앱 전체에서 하나만 생성)된다.

services.AddTransient<IService, Service>();

- 매번 호출할 때마다 생성되는데 새로운 인스턴스 변수 생성마다 다른 인스턴스가 생성된다.

services.AddScoped<IService, Service>();

- 같은 요청(Request)에는 같은 인스턴스가 생성된다.

 

이와 같이 등록된 형식을 사용하려면 컨트롤러에서는 생성자 주입을 통해서, 뷰에서는 @inject 키워드로 등록해야 사용할 수 있다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.