2012년 11월 7일 수요일

[ASP.NET MVC] IControllerActivator

ASP.NET MVC 1, 2에서는 사용자 요청을 처리할 컨트롤러를 생성하는 역할을 IControllerFactory 인터페이스가 책임졌다. IContollerFactory 인터페이스는 다음과 같은 역할을 한다.
  1. 요청을 처리할 컨트롤러를 결정
  2. 컨트롤러 생성

이는 클래스 당 한 가지 책임(기능)을 가진다는 단일책임원칙(SRP)에 위배된다. ASP.NET MVC 3 에서는 리팩토링을 통해 IControllerFactory의 역할을 분리하여 IControllerActivator라는 새로운 인터페이스를 추가했다.
  • IControllerFactory : 요청을 처리항 컨트롤러를 결정
  • IControllerActivator : 컨트롤러를 생성

요청을 처리할 컨트롤러가 결정되면 컨트롤러 팩토리 내부에서 IControlerActivator의 Crate 메서드가 호출된다. 사용자 정의 IControllerActivator를 사용하기 위해서는 IDependencyResolver를 통해 새로 구현된 IControllerActivator를 반환하도록 한다.

결론은,
IoC 컨테이너를 사용하려면 커스텀 컨트롤러 팩토리 클래스를 구현할게 아니라 커스텀 DependencyResolver와 ControllerActivator 클래스를 구현해야 한다는 것.


참고

댓글 없음:

댓글 쓰기