-
.Net Core 의존성 주입 (DI)Development/ETC. 2021. 3. 20. 20:09
ASP .Net Core에서는 3가지 방법으로 의존성 주입이가능합니다.
Startup.cs에서 주입된 의존성 방식에 따라, 서비스/클래스들의 수명주기가 달라지게 됩니다.
해당 서비스들의 사용 목적에 따라 의존성 주입방식을 정해주시어 설정해주시면 더 나은 프로그램이 되지 않을까 합니다.
Startup.cs에 의존성을 주입한 예시
123456789public void ConfigureServices(IServiceCollection services){// 비유지 서비스에 적합services.AddTransient<ITransientIf, TransientSvc>();// 새로고침/페이지이동 후 요청 시 새 인스턴스가 생성됨services.AddScoped<IScopedIf, ScopedSvc>();// 결과 값을 호출한대상이 모두 공유해야 하는경우에 적합, 단일 인스턴스 생성services.AddSingleton<ISingletoneIf,SingletoneSvc>();}cs - ServiceCollectionServiceExtensions Calass의 의존성 주입 메서드
AddScoped - services
- IServiceCollection
- serviceType
- Type
- implementationInstance
- Object
- implementationType
- Type
- implementationFactory
- Func<IServiceProvider,TImplementation>
- IServiceCollection 반환
- 각 범위에 대해 서비스의 새 인스턴스를 만들도록 지정
(. ASP.NET Core 앱에서 범위는 각 서버 요청으로 생성됨) - 각 HTTP 요청 당 하나의 인스턴스를 생성, 동일한 주소의 웹 화면 내에서 여러번 이를 사용 할 경우 동일 인스턴스를 재사용
- 새로고침/페이지이동 후 요청 시 새 인스턴스가 생성됨
AddSingleton - services
- IServiceCollection
- serviceType
- Type
- implementationInstance
- Object
- implementationType
- Type
- implementationFactory
- Func<IServiceProvider,TImplementation>
- IServiceCollection 반환
- 단일 인스턴스가 생성되도록 지정
- 결과값을 전체 모든 호출 대상과 공유하는 효과
AddTransient - services
- IServiceCollection
- serviceType
- Type
- implementationInstance
- Object
- implementationType
- Type
- implementationFactory
- Func<IServiceProvider,TImplementation>
- 요청할 때마다 서비스의 새 인스턴스가 생성되도록 지정
- 비유지 서비스에 적합
- services
[출처]
https://docs.microsoft.com/ko-kr/dotnet/api/microsoft.extensions.dependencyinjection.servicecollectionserviceextensions.addsingleton?view=dotnet-plat-ext-5.0
https://aspdotnet.tistory.com/2108'Development > ETC.' 카테고리의 다른 글
[Git Error] [rejected] main -> main (non-fast-forward) 문제 (1) 2021.03.24 프레임워크와 라이브러리의 차이점을 아시나요? (0) 2020.10.24 UUID (Universally Unique Identifier)? (0) 2020.09.10 fatal error C1083: Cannot open include file: 'MNN_generated.h': No such file or directory(feat. MNN) (0) 2020.07.01 cl.exe is not able to compile a simple test program(feat. MNN Demo) (0) 2020.06.30 댓글
- ServiceCollectionServiceExtensions Calass의 의존성 주입 메서드