1

NuGet을 통해 물건을 격리하고 플러그인하는 최근의 정신에서 누군가는 MVC3에서 의존성 해결자를 한 영역으로 제한하는 방법에 대한 아이디어가 있습니까? 뷰와 컨트롤러를 특정 영역으로 제한하는 것은 쉽지만 IDPendencyResolver를 설정하는 것이 필연적으로 전역 범위를 갖는 것처럼 보입니다. 나는 그것을 단지 하나의 영역으로 제한하고 싶다.MVC3에서 종속성 해결 프로그램을 한 영역으로 분리하는 방법은 무엇입니까?

제안 사항?

답변

2

IDependencyResolver은 글로벌 설계입니다. 영역에 따라 동작을 변경하려면 컨텍스트 객체를 기반으로 의사 결정을 내릴 수있는 다양한 Activator 유형 및 인터페이스를 살펴야합니다.

특별히 무엇을하려합니까?

+0

포럼을 지역으로 구현했다고 가정 해보십시오. 그것은 Ninject를 사용합니다. 또한 일종의 포토 갤러리가 지역으로 구현되어 있습니다. 구조 맵을 사용합니다. 다른 말로하면 모든 종류의 오픈 소스 프로젝트를 통해 Frankenstein 사이트를 신속하게 구축 할 수 있습니다. –

+1

영역은 보안 기능이나 구성 기능이 아닌 라우팅 기능입니다. 이 사실을 바탕으로, 각 지역은 고립 된 DI를 수행하는 고유 한 방식을 제공해야합니다 (Activator 클래스는 이러한 방식 중 하나를 제공합니다). – marcind

0

당신이하려는 것은 나쁜 생각입니다. 종속성 주입 지점은 특정 종속성을 격리 할 수 ​​있으므로 코드 의존성이없는 곳에서 코드를 관리 할 필요가 없습니다.

일부 개체 또는 클래스를 특정 MVC 영역으로 제한하려는 경우 적절한시기에 적절한 개체를 호출하도록 종속성 인젝터를 구성하십시오.

당신이하려는 일에 대한 자세한 내용은 더 나은 답변을 생성하는 데 도움이됩니다.

+0

전혀 나쁜 생각이 아닙니다. 여러 개의 앱으로 구성된 사이트를 하나의 조각으로 만들고 각자 자신의 DI 컨테이너를 사용하려는 경우 정확히 달성하려는 것입니다. –

+0

@Jeff : 의존성 삽입 아이디어는 의존성 해결이 한 곳에서 수행된다는 것입니다. 예를 들어, 리졸버 (resolver)를 사용하여'EnableUserCommand'에 종속 된'ValidateUserController'를 생성합니다.'EnableUserCommand'는'IMailSender'와'IDataMapper '에 의존하는'IUnitOfWorkFactory'에 종속됩니다. 리졸버는 한 번에 그래프. 특정 프레임 워크에 이미 불만족이있는 다른 앱을 사용하면 선택의 여지가 많지 않습니다. 이러한 프레임 워크가 필요합니다. 일부 앱에서 작동 할 수있는 기능은 이러한 프레임 워크를 선택한 fx로 라우트하는 것입니다. – Steven

+0

디자인 패턴이 무엇인지 압니다. 주변을 둘러 보시면 오픈 소스 프로젝트에서 저의 예를 찾을 수 있습니다. 나는 당신이 서로 다른 앱을 함께 사는 것에 대한 나의 요점을 듣고 있다고 생각하지 않는다. 그들 각각의 신중한 아키텍처가있다. –

1

공용 서비스 탐지기를 사용하는 것이 좋습니다. 기본적으로 각 영역은 특정 컨테이너에 대해 CSL을 설정할 수 있습니다.

아마도 의존성 분석기 사이에 어댑터를 만들거나 완전히 무시하고 CSL을 엄격하게 사용해야 할 것입니다.

일반적으로 나는 사업용 응용 프로그램에서 CSL을 사용하는 것을지지하지 않습니다. DI (MassTransit과 같은)를 사용하는 오픈 소스 구성 요소가 비즈니스 응용 프로그램에보다 쉽게 ​​통합되도록하기위한 것입니다. 그러나 이것은 예외 일 수 있습니다.

또한 mvccontrib 휴대용 영역을 살펴보십시오. 이 유형의 것을 위해 설계되었습니다.

관련 문제