DI 용 Autofac을 사용하여 데스크탑 에디션 용으로 작성된 레거시 코어 라이브러리를 재사용하는 MVC UI 래퍼를 작성했습니다. 내가 직면하고있는 문제는, MVC가 InstancePerRequest를 필요로하는 동안 변경할 수없는 수명 라이브러리로 코어 라이브러리가 작동하고 있다는 것입니다.MVC 애플리케이션에서 Autofac LifetimeScope를 사용하는 단점
그래서 MVC에서 서비스를 InstancePerRequest 범위에 등록하면 요구가 완료되기 전에 코어 라이브러리에 의해 처리됩니다. MVC 응용 프로그램을 불행하게 만듭니다.
MVC 앱의 모든 서비스에도 LifeTimeScope를 사용해 보았습니다. 수명 범위는 요청 수명보다 짧기 때문에 MVC에서 작동하는 것으로 보입니다.
이 접근법에는 단점이 있습니까?
참고 : 레거시 코드에서는 항상 생성자를 통해 주입되는 대신 서비스가 수동으로 해결됩니다. 마찬가지로 :
using (var scope = IocContainer.BeginLifetimeScope())
{
var service = scope.Resolve<IMyService>();
return service.FindAll();
}