5

나는 OWIN/Katana에서 호스팅되는 WebAPI 서비스에 대해 양파 아키텍처를 따르려고합니다.OWIN에서 WebAPI를 사용하여 양파 아키텍처 및 DI를 구현할 수 있습니까?

Onion Architecture

나는이 같은 솔루션 구조를 가지고 :

  • DependencyResolution가 : OWIN 시작 클래스와 IOC의 설치
  • WebApi 포함 웹 API 컨트롤러를
  • 인프라 : 인터페이스 구현
  • 코어 : 인터페이스

DependencyResolution 프로젝트에서 WebApi 프로젝트의 종속성을 주입하고 싶습니다. DependencyResolution에는 WebApi 프로젝트의 출력 폴더로 출력하는 빌드 작업이 있습니다.

I 접근이 Autofac와 DotNetDoodle.Owin.Dependencies NuGet 패키지를 사용, 여기에 설명 된 다음 해요 : 내 시작 클래스에서 RegisterApiControllers에, 전화를 서비스 등록에

http://www.tugberkugurlu.com/archive/owin-dependencies--an-ioc-container-adapter-into-owin-pipeline

그러나하는 것은 () 실패합니다. DepenedencyResolution 어셈블리는 ApiContollers이 들어있는 어셈블리 (WebAPI 어셈블리) 얻을 수 없습니다 때문에 실행 첫 번째가 될 것입니다 : 여기) (Assembly.Load에 유일한 실행 가능한 옵션을 의지

public IContainer RegisterServices() 
{ 
    ContainerBuilder builder = new ContainerBuilder(); 

    builder.RegisterApiControllers(Assembly.GetExecutingAssembly()); 
    builder.RegisterType<MyRepo>() 
      .As<IRepo>() 
      .InstancePerLifetimeScope(); 

    return builder.Build(); 
} 

이다, 또는 DependencyResolution 프로젝트를 격리 된 상태로 유지하고 WebApi 프로젝트에서 참조하도록 방치하면됩니까?

답변

1

당신은 그것의 인스턴스를 얻을 수있는 웹 API 어셈블리의 이름을 사용할 수 있습니다 :

builder.RegisterApiControllers(Assembly.Load("WebApiAssembly"));