2010-04-10 7 views
0

몇 달 동안 숨어 있고 질문에 뛰어 들기로 결정했습니다. 저는 Windsor와 IoC에 대해 매우 새로운 것입니다. Windsor가 MVC2 프로젝트에서 문제없이 작동하도록 할 수 있습니다. 내가 작업하고있는 프로젝트는 새로운 영역 개념을 사용하는 하나의 MVC2 프로젝트에서 여러 응용 프로그램의 "포털"입니다. 이 시나리오에서 각 영역은 실제로 "포털"내부의 개별 응용 프로그램입니다. Google은 많은 공통 코드,보기, 인증 및 교차 애플리케이션 기능을 효과적으로 공유하기 위해이 작업을 수행하고 있습니다. 많은 앱은 서로 연결되어 있으므로 하나의 프로젝트로 결합하기 위해 논의한 후에 이해가됩니다.ASP.NET MVC 2를 사용하는 Castle Windsor

어떻게하면 좋을지 궁금 해서요 실제로 서로 다른 구체적인 클래스를 주입 할 수 있도록 허용 무엇입니까? 나의 제한된 이해에서 Application_Start는 컨테이너를 빌드하고 컨트롤러 팩터 리로 할당하는 것을 제어합니다. 나는 반드시 어플리케이션 레벨에서 모든 주입을하고 싶지는 않다. 우리는 모든 영역의 루트에 config.xml이있는 설정 시스템을 가지고 있으며,이 설정은 루트 설정보다 우선합니다. 지역의 config.xml (하위 폴더의 설정이 상위 폴더의 설정보다 우선하는 Webforms web.config와 유사한 상속)에서 각 영역의 주입을 읽음으로써 이러한 추세를 계속하고 싶습니다.

예 : 응용 프로그램의 영역에 따라 다른 구체적인 구현이 필요한 ILogHandler가 있습니다. 따라서 응용 프로그램의 현재 위치에 따라 다른 것을 주입해야합니다.

각 영역마다 자체 공장이있을 수 있기 때문에 쉽게이 작업을 수행 할 수 있지만이 기회를 통해 IoC 및 장점/단점에 대해 학습하려고합니다. 어떤 도움을 주시면 감사하겠습니다.

+0

ControllerBuilder 클래스와 WindsorControllerFactory를 살펴 보셨습니까? –

+0

나는 (나는 지금까지 그것을 이해할 정도로). 직선 WindsorControllerFactory 및 MvcContrib 내부의 팩토리를 살펴 보았습니다. 대답이 그 안에 있다면, 나는 좀 더 연구해야 할 필요가 있습니다. 앞에서 말했듯이 IoC에서는 새로운 기능을 제공합니다. WindsorControllerFactory 내부에 구성 요소 구성 파일을 동적으로 추가하는 방법이있을 것이라고 제안 하시겠습니까? 그렇다면, 나는 확실히 그것에 대해 생각하지 않았습니다. –

답변

0

FYI - 에는 해당 지역 고유의 보안 코드가 있어야합니다. 예를 들어, 현재 영역에 따라 [Authorize] 속성을 삽입하는 팩토리 또는 호출자는 응용 프로그램을 열어 공격 할 수 있습니다.

MyAreaBaseController와 대조하여 지역의 모든 컨트롤러가 하위 클래스에 있어야합니다. [Authorize] 속성 (및 기타 보안 관련 코드)은 유형에 적용되고 "영역"의 개념과 독립적이므로 여기에서 확인이 가능합니다.

+0

동의. 우리의 모든 보안 코드는 항상 뿌리 영역에서 공통적 일 것입니다. 우리에게는 기본 컨트롤러가 있지만, 보안과 관련하여 내가 말하고자하는 것은 없습니다. 실제로 보안을 처리하기 위해 시스템 전체에 적용되는 자체 특성을 작성했으며 IoC 컨테이너와는 아무 관련이 없습니다. 내 질문은 이벤트, 로깅 등 도메인 수준의 개체 주위에 있습니다. 팁 주셔서 감사! –

관련 문제