IoC ~ 효율적인 오토팩
마이크로소프트가 가장 선호하는 IoC 컨테이너는 spring.net 유니티가 아니라 효율성과 단순성 때문에 오토팩(Autofac)임은 의심의 여지가 없으며, 마이크로소프트가 주도하는 과수원 프로젝트에도 사용됩니다
Autofac의 사용을 보여줍니다.
이제 이렇게 부르죠:
다음 강의에서는 과수원 프로젝트를 위한 특정 프로젝트에서 Autofac의 활용에 대해 이야기할 것입니다.
이제 그 생명 주기를 살펴보세요
1, 인스턴스 의존성
각 의존성 또는 호출마다 새로운 고유 인스턴스를 생성하세요. 이것이 인스턴스를 만드는 기본 방법이기도 합니다.
공식 문서에는 다음과 같이 설명되어 있습니다: 모든 의존 컴포넌트나 Resolve() 호출이 새롭고 고유한 인스턴스(기본값)를 갖도록 구성하세요.
2, 인스턴스퍼라이프타임스코프
라이프사이클 도메인에서는 각 의존성 또는 호출이 단일 공유 인스턴스를 생성하며, 서로 다른 라이프사이클 도메인마다 인스턴스는 고유하고 공유되지 않습니다.
공식 문서에 따르면: 단일 ILifetimeScope 내의 모든 의존 구성 요소나 Resolve() 호출이 동일한 공유 인스턴스를 받도록 구성 설정하세요. 서로 다른 수명 범위의 종속 부품은 서로 다른 인스턴스를 받게 됩니다.
3, InstancePerMatchingLifetimeScope
식별된 라이프사이클 도메인에서는 각 의존성 또는 호출이 단일 공유 인스턴스를 생성합니다. 부모 도메인의 인스턴스는 식별된 라이프사이클 도메인의 자식 아이덴티티 도메인에서 공유할 수 있습니다. 전체 상속 계층에서 식별된 라이프사이클 도메인이 없으면 예외가 투입됩니다: DependencyResolutionException.
공식 문서에는 다음과 같이 설명되어 있습니다: 제공된 태그 값을 가진 ILifetimeScope 내의 모든 의존 구성 요소나 Resolve() 호출이 동일한 공유 인스턴스를 갖도록 구성하세요. 태깅된 스코프의 자식인 라이프타임 스코프 내 종속 컴포넌트는 부모 인스턴스를 공유합니다. 계층 구조에서 적절한 태그가 지정된 범위가 없으면 DependencyResolutionException이 실행됩니다.
4, 인스턴스퍼소유
라이프사이클 도메인에 소유된 인스턴스가 생성한 인스턴스의 라이프사이클에서, Resolve() 메서드의 각 종속 컴포넌트나 호출은 단일 공유 인스턴스를 생성하며, 자식 라이프사이클 도메인은 부모 라이프사이클 도메인의 인스턴스를 공유합니다. 상속 계층에서 자식 인스턴스가 포함된 적절한 라이프사이클 도메인이 없으면, 예외 명령이 던집니다: DependencyResolutionException.
공식 문서는 다음과 같이 설명합니다:
소유된 인스턴스가 생성한 ILifetimeScope 내의 모든 의존 구성 요소나 Resolve() 호출이 동일한 공유 인스턴스를 받도록 구성하세요. 소유된 인스턴스 범위의 자식인 라이프타임 스코프 내 종속 컴포넌트들은 부모 인스턴스를 공유합니다. 계층 구조에서 적절한 소유 인스턴스 범위를 찾을 수 없으면 DependencyResolutionException이 투기됩니다.
5, 싱글 인스턴스
컴포넌트에 의존하거나 Resolve() 메서드를 호출할 때마다 동일한 공유 인스턴스가 발생합니다. 사실, 이것은 단일 모델입니다.
공식 문서에는 다음과 같이 설명되어 있습니다: 모든 의존 컴포넌트나 Resolve() 호출이 동일한 공유 인스턴스를 받도록 구성 설정하세요.
6, InstancePerHttpRequest
Http 요청의 맥락에서, 컴포넌트의 인스턴스를 공유합니다. MVC 개발에만 asp.net 제공됩니다.
|