2009-06-09 4 views
0

ASP.NET MVC를 사용하여 웹 응용 프로그램을 개발 중이며 Windsor Castle을 IoC 컨테이너로 사용하고 있습니다 (WindsorControllerFactory 및 내 내부 구성 요소 모두).웹 농장에서 Windsor 컨테이너 사용하기

protected void Application_Start() 
    { 
     ... 
     IWindsorContainer windsorContainer = new WindsorContainer(); 
     Application["WindsorContainer"] = windsorContainer; 
     ... 
    } 

    protected void Application_End() 
    { 
     IWindsorContainer container = (IWindsorContainer)Application["WindsorContainer"]; 
     container.Dispose(); 

     Application["WindsorContainer"] = null; 
    } 

이 웹 팜에서 실행되는 응용 프로그램에 대한 적절한 접근 방법이다 : 현재 나는이 같은 Application (HttpApplicationState)에 컨테이너를 생성하고 저장하는거야? 내가 알아야 할 문제가 있습니까? 컨테이너를 넣을 수있는 더 좋은 곳이 있습니까?

웹 팜의 여러 서버에서 공유되는 상태가 Application 인 것을 알고 있지만 Application 상태에 저장된 데이터가 요청에 특정한 것이 아니라면이 문제가 발생하지 않아야합니다.

답변

0

나는 정적 참조와 코드를 결합하여보다 더 우아하게 해결 될 수 Ayende의 IoC from Rhino Commons

+0

크로스 커팅 문제와 같은 static gateway에서 컨테이너를 저장하는 것을 선호하지만, 어쨌든 -이 정말 함께 할 일이 많이없는 내가 뭘 물었는지. 정적 게이트웨이를 사용하더라도 요청간에 보존되지 않습니다. –

+0

"컨테이너를 넣을 수있는 더 좋은 곳이 있습니까?"라는 질문에 대한 대답이었습니다. 어쨌든, 컨테이너는 대개 응용 프로그램의 나머지 부분에 노출되지 않으므로 많은 차이를 만들지 않습니다. 그리고 정적 IoC *를 사용하면 내부적으로 정적 변수에 저장되어 있기 때문에 요청을 가로 질러 보존합니다. –

관련 문제