DDD:"작업 단원 실례"를 관리 하 는 두 가지 모드 의 사용 방법

그림 은 다음 과 같다.

흔히 볼 수 있 는 사례 장면 에서 도표 의 대상 도 는 다음 과 같다.
4.567916.문 제 는 하나의 사례 를 집행 하 는 과정 에서 같은 한계 문맥 안의 모든 창고 인 스 턴 스 가 같은 작업 단원 인 스 턴 스 를 공유 할 수 있 도록 어떻게 보장 합 니까?해결 방안 창고 저장 소 는 주입 모드+IOC 관리 작업 단원 의 생명주기(PerRequest 또는 기타)를 사용 합 니 다.
코드 예시

using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;

 using Autofac;

 namespace AutoFacStudy
 {
     class Program
     {
         static void Main(string[] args)
         {
             var buider = new ContainerBuilder();
             buider.RegisterType< >();
             buider.RegisterType< A>();
             buider.RegisterType< B>();
             buider.RegisterType< >().InstancePerLifetimeScope();

             var container = buider.Build();

             dynamic = container.Resolve< >();

             //
             Console.WriteLine( . A. .GetHashCode());
             Console.WriteLine( . B. .GetHashCode());
         }
     }

     public class
     {
         private readonly A _ A;
         private readonly B _ B;

         public ( A A, B B)
         {
             _ A = A;
             _ B = B;
         }

         public A A
         {
             get { return _ A; }
         }

         public B B
         {
             get { return _ B; }
         }
     }

     public class { }

     public class A
     {
         private readonly _ ;

         public A( )
         {
             _ = ;
         }

         public
         {
             get { return _ ; }
         }
     }

     public class B
     {
         private readonly _ ;

         public B( )
         {
             _ = ;
         }

         public
         {
             get { return _ ; }
         }
     }
 }
해결 방안 2 창 고 는 서비스 포 지 셔 닝 모드+서비스 포 지 셔 닝 머 신 또는 간단 한 공장 관리 작업 단원 의 생명주기(PerRequest 또는 기타)를 사용한다.코드 예시

using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;

 using Autofac;

 namespace AutoFacStudy
 {
     class Program
     {
         public static IContainer ;

         static void Main(string[] args)
         {
             var buider = new ContainerBuilder();
             buider.RegisterType< >();
             buider.RegisterType< A>();
             buider.RegisterType< B>();
             buider.RegisterType< >().InstancePerLifetimeScope();

             = buider.Build();

             dynamic = .Resolve< >();

             //
             Console.WriteLine( . A. .GetHashCode());
             Console.WriteLine( . B. .GetHashCode());
         }
     }

     public class
     {
         private readonly A _ A;
         private readonly B _ B;

         public ( A A, B B)
         {
             _ A = A;
             _ B = B;
         }

         public A A
         {
             get { return _ A; }
         }

         public B B
         {
             get { return _ B; }
         }
     }

     public class { }

     public class A
     {
         private readonly _ ;

         public A()
         {
             _ = Program. .Resolve< >();
         }

         public
         {
             get { return _ ; }
         }
     }

     public class B
     {
         private readonly _ ;

         public B()
         {
             _ = Program. .Resolve< >();
         }

         public
         {
             get { return _ ; }
         }
     }
 }
이 예 시 를 통 해 알 수 있 듯 이 서비스 포 지 셔 닝 기와 의존 주입 은 함께 혼합 하여 사용 할 수 있다.이 예 는 제 가 간단 하기 위해 서 서비스 포 지 셔 닝 기와 IOC 용 기 는 같은 인 스 턴 스 입 니 다.
일부 시스템 은 서비스 포 지 셔 닝 기기 의 실현 을 간단 한 공장 모델 로 바 꾸 는데 그들 은 본질 적 으로 같다(서비스 포 지 셔 닝 기 는 만능 공장).
코드 예시

좋은 웹페이지 즐겨찾기