이 글은 기계 번역의 미러 문서이며, 원본 기사로 바로 이동하려면 여기를 클릭해 주세요.

보기: 36245|회답: 1

[.NET 코어] ASP.NET 코어 의존성 주입은 포함된 IOC 컨테이너를 사용합니다

[링크 복사]
게시됨 2019. 5. 7. 오후 1:55:10 | | | |
ASP.NET 코어 의존성 주입은 포함된 IOC 컨테이너를 사용합니다
https://www.itsvse.com/thread-7562-1-1.html
(출처: Architect_Programmer)

ASP.NET Core는 Autofac을 사용해 IOC 주입을 구현합니다
https://www.itsvse.com/thread-7563-1-1.html
(출처: Architect_Programmer)

ASP.NET Core는 Autofac을 사용해 AOP 감각을 구현합니다
https://www.itsvse.com/thread-7566-1-1.html
(출처: Architect_Programmer)

새로운 ASP.NET 코어에서는 많은 의존성 주입이 코드를 작성하는 데 사용됩니다.

예를 들어, 저희 스타트업 수업에서 다음과 같은 내용을 볼 수 있습니다:

AddMvc AddDbContext에는 이전에 디렉터리 투어에 사용했던 AddDirectoryBrowser가 포함되어 있습니다:

이들은 모두 좋은 서비스를 제공하는 프레임워크이며, 이를 주입함으로써 직접 사용할 수 있습니다.

제어의 반전(IoC)은 객체지향 프로그래밍에서 컴퓨터 코드 간 결합을 줄이는 데 사용할 수 있는 설계 원칙입니다. 가장 일반적인 방법은 의존성 주입(DI)이라고 하며, "의존성 조회(Dependency Lookup)"라는 방법도 있습니다. 반전을 제어함으로써, 객체가 생성될 때 시스템 내 모든 객체를 제어하는 외부 엔티티가 해당 객체에 대한 참조를 전달합니다. 또한 의존성이 객체에 주입된다고도 할 수 있습니다.

ioc를 사용하려면 Startup 클래스가 Microsoft.Extensions.DependencyInjection(ps)을 참조해야 하며, 이는 이미 꽤 직관적입니다: 마이크로소프트.. 확장... 의존성 주입 - - ,)

서비스의 수명주기를 주입합니다

마이크로소프트는 자가 주입 서비스에 대해 3가지 라이프사이클을 제공합니다.

일시적

요청할 때마다 생성되는 즉각적인 라이프사이클 서비스입니다. 이 수명 주기는 경량, 비국가 서비스에 가장 적합합니다.

스코프드

같은 범위 내에서는 요청당 한 번만 서비스가 생성됩니다.

싱글턴 (전용)

전역은 한 번만 생성되며, 첫 요청 시에만 생성되며, 그 이후에는 항상 사용됩니다.

이 세 가지 생애 주기를 어떻게 활용하시나요? 주입할 때 직접 사용할 수 있는 다양한 메서드가 있으며, 코드는 다음과 같습니다:


이 세 가지 생애주기의 특정 세대를 테스트해 봅시다

우리는 서로 다른 이름과 3개의 서로 다른 클래스를 사용하여 다음과 같이 인터페이스를 구현합니다:

각 구현 클래스의 생성자에서 새로운 GUID를 생성하여, 클래스가 생성자를 재실행했는지 확인할 수 있습니다.

컨트롤러에 서비스를 주입합니다

일반적으로 세 가지 주입 방식이 있습니다: 구성자 주입, 메서드 주입, 속성 주입입니다. 마이크로소프트 자체 IOC 컨테이너는 기본적으로 구성자 주입(속성 주입은 지원되지 않습니다, 하지만 제3자 컨테이너 교체를 통해 구현할 수 있습니다)

페이지 코드 보기:

프로젝트를 실행하고 아래에 표시된 두 가지 브라우저를 통해 접근하세요:



우리는 순간 생애주기에서 두 번 생성된 GUID가 일관성이 없어 객체가 동일하지 않음을 나타냈습니다.

하지만 범위 수명 주기는 동일한데, 같은 범위 내에서 같은 브라우저에서 두 번 사용된 서비스의 GUID가 동일하여 동일한 객체가 사용되었음을 나타냅니다.

싱글턴의 경우, 두 개의 서로 다른 브라우저가 항상 같은 GUID에 접근하여 동일한 객체가 호출되고 있음을 나타냅니다.

(끝)






이전의:.NET 코어 엔티티는 데이터베이스를 연결하는 엔티티 프레임워크 코어를 사용합니다
다음:ASP.NET Core는 Autofac을 사용해 IOC 주입을 구현합니다
 집주인| 게시됨 2022. 3. 9. 오전 11:00:35 |
ASP.NET Core 내장 DI 컨테이너의 서비스를 대체하세요

코드:





면책 조항:
Code Farmer Network에서 발행하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 사용됩니다; 위 내용은 상업적 또는 불법적인 목적으로 사용되지 않으며, 그렇지 않으면 모든 책임이 사용자에게 부담됩니다. 이 사이트의 정보는 인터넷에서 가져온 것이며, 저작권 분쟁은 이 사이트와는 관련이 없습니다. 위 내용은 다운로드 후 24시간 이내에 컴퓨터에서 완전히 삭제해야 합니다. 프로그램이 마음에 드신다면, 진짜 소프트웨어를 지원하고, 등록을 구매하며, 더 나은 진짜 서비스를 받아주세요. 침해가 있을 경우 이메일로 연락해 주시기 바랍니다.

Mail To:help@itsvse.com