2012-01-20 3 views
11

나는 다음과 같은 인터페이스와 클래스가 있다고 가정 ?Autofac와는 IDisposable 인터페이스

private static IContainer RegisterServices(ContainerBuilder builder) { 

    builder.RegisterType<FooService>().As<IFooService>(); 

    return 
     builder.Build(); 
} 

아니면 사용중인 응용 프로그램 유형에 따라 추가 단계를 수행해야합니까? (이 경우 ASP.NET MVC를 사용하지만 WCF 웹 API 프로젝트 및 클래스 라이브러리에서 autofac을 사용할 것을 고려하고 있습니다.)

답변

11

IDisposable을 구현하는 모든 구성 요소 인스턴스에 대해 Autofac은 부모 수명 범위가 끝나면 Dispose을 호출합니다. 여기서 추가 작업을 할 필요가 없습니다.

평생 범위 관리를 위해 Autofac에서 제공하는 옵션을 잘 이해하려면 @ dotnetstep의 링크를 따르십시오.

수명주기 관리는 특정 응용 프로그램 (MVC 또는 일반 ASP.NET 또는 기타)에 따라 달라지는 전략입니다. Autofac의 창작자가 작성한 This article about lifetimes은 주제에 대해 자세히 설명합니다.

MVC3 프로젝트의 경우 MVC3 integration guidelines을 따르는 것이 좋습니다. 이렇게하면 모든 개별 HTTP 요청에 대해 생성 된 별도의 수명 범위가 만들어집니다. HTTP 요청이 완료되면 Autofac은 관련 수명 범위를 완료하고 해당 범위에서 생성 된 모든 일회용 리소스를 처리합니다.

corresponding guidelines

다음과 같은 방법으로 ASP.NET WebForms 프로젝트에서 동일한 효과를 얻을 수 있습니다.