ASP.NET MVC 4에서 Windsor (Castle)로 IoC로 Controller 생성
Visual studio에서 Nuget을 통해 Windsor을 프로젝트에 추가한다.
위 그림은 Online에서 ‘Windsor’로 검색한 결과다.
Tip! - Windsor ver 3.1.0 – 2012.08.15
정상적으로 References에 참조 등록이 된 것을 확인하고
아래 파일을 추가한다.
파일명 : WindsorControllerFactory.cs |
(DefaultControllerFactory를 상속받아 Windsor을 이용해 객체를 생성하는 기능을 구현한다) |
public class WindsorControllerFactory : DefaultControllerFactory public WindsorControllerFactory(IKernel kernel) public override void ReleaseController(IController controller) protected override IController GetControllerInstance(System.Web.Routing.RequestContext requestContext, Type controllerType) return (IController)kernel.Resolve(controllerType); |
파일명 : ControllersInstaller.cs |
(어떤 Assembly에서 어떤 객체를 IoC 해줄지를 등록한다) |
public class ControllersInstaller : IWindsorInstaller public void Install(Castle.Windsor.IWindsorContainer container, Castle.MicroKernel.SubSystems.Configuration.IConfigurationStore store) |
위의 파일을 만든 다음
Global.asax 파일을 아래와 같이 수정한다.
파일명 : Global.asax.cs |
( 컨테이너를 MVC Framework에 끼워 넣는다 ) |
public class MvcApplication : System.Web.HttpApplication protected void Application_Start() WebApiConfig.Register(GlobalConfiguration.Configuration); container = new WindsorContainer().Install(FromAssembly.This()); var controllerFactory = new WindsorControllerFactory(container.Kernel); |
위와 같이 WindsorControllerFactory를 Global.asax 파일에 연결 시켰으면 이제 실행해 보도록 하자.
Ctrl + F5 –> 실행
위와 같이 화면을 정상적으로 보여주고 있다.
이제 이 프로젝트는 IoC 컨테이너(Windsor)를 통해 Controller 객체를 생성하여 실행이 되는 구조로 바뀐 것이다.
'ASP.NET MVC' 카테고리의 다른 글
[C# IoC & DI]ASP.NET MVC 4에서 CommonServiceLocator.WindsorAdapter 사용하여 IoC 세팅 (0) | 2013.01.26 |
---|---|
[C# ASP.NET MVC]WebActivator에 대해서 소개 드리고자 한다 - BootStrapper (0) | 2013.01.26 |
[C# ASP.NET MVC] Web API - JSONP 호출 반환 (0) | 2013.01.25 |
DM-V-VM Model이란? (0) | 2012.11.08 |
MVVM vs MVC vs MVP의 차이점 (0) | 2012.11.08 |