새로운 ASP.NET 코어에서는 많은 의존성 주입이 코드를 작성하는 데 사용됩니다.
예를 들어, 저희 스타트업 수업에서 다음과 같은 내용을 볼 수 있습니다:
AddMvc AddDbContext에는 이전에 디렉터리 투어에 사용했던 AddDirectoryBrowser가 포함되어 있습니다:
이들은 모두 좋은 서비스를 제공하는 프레임워크이며, 이를 주입함으로써 직접 사용할 수 있습니다.
제어의 반전(IoC)은 객체지향 프로그래밍에서 컴퓨터 코드 간 결합을 줄이는 데 사용할 수 있는 설계 원칙입니다. 가장 일반적인 방법은 의존성 주입(DI)이라고 하며, "의존성 조회(Dependency Lookup)"라는 방법도 있습니다. 반전을 제어함으로써, 객체가 생성될 때 시스템 내 모든 객체를 제어하는 외부 엔티티가 해당 객체에 대한 참조를 전달합니다. 또한 의존성이 객체에 주입된다고도 할 수 있습니다. ioc를 사용하려면 Startup 클래스가 Microsoft.Extensions.DependencyInjection(ps)을 참조해야 하며, 이는 이미 꽤 직관적입니다: 마이크로소프트.. 확장... 의존성 주입 - - ,)
서비스의 수명주기를 주입합니다
마이크로소프트는 자가 주입 서비스에 대해 3가지 라이프사이클을 제공합니다.
일시적
요청할 때마다 생성되는 즉각적인 라이프사이클 서비스입니다. 이 수명 주기는 경량, 비국가 서비스에 가장 적합합니다.
스코프드
같은 범위 내에서는 요청당 한 번만 서비스가 생성됩니다.
싱글턴 (전용)
전역은 한 번만 생성되며, 첫 요청 시에만 생성되며, 그 이후에는 항상 사용됩니다.
이 세 가지 생애 주기를 어떻게 활용하시나요? 주입할 때 직접 사용할 수 있는 다양한 메서드가 있으며, 코드는 다음과 같습니다:
이 세 가지 생애주기의 특정 세대를 테스트해 봅시다
우리는 서로 다른 이름과 3개의 서로 다른 클래스를 사용하여 다음과 같이 인터페이스를 구현합니다:
각 구현 클래스의 생성자에서 새로운 GUID를 생성하여, 클래스가 생성자를 재실행했는지 확인할 수 있습니다.
컨트롤러에 서비스를 주입합니다
일반적으로 세 가지 주입 방식이 있습니다: 구성자 주입, 메서드 주입, 속성 주입입니다. 마이크로소프트 자체 IOC 컨테이너는 기본적으로 구성자 주입(속성 주입은 지원되지 않습니다, 하지만 제3자 컨테이너 교체를 통해 구현할 수 있습니다)
페이지 코드 보기:
프로젝트를 실행하고 아래에 표시된 두 가지 브라우저를 통해 접근하세요:
우리는 순간 생애주기에서 두 번 생성된 GUID가 일관성이 없어 객체가 동일하지 않음을 나타냈습니다.
하지만 범위 수명 주기는 동일한데, 같은 범위 내에서 같은 브라우저에서 두 번 사용된 서비스의 GUID가 동일하여 동일한 객체가 사용되었음을 나타냅니다.
싱글턴의 경우, 두 개의 서로 다른 브라우저가 항상 같은 GUID에 접근하여 동일한 객체가 호출되고 있음을 나타냅니다.
(끝)
|