내 애플리케이션이 확장 가능해야합니다. 내 자신의 필요에 따라 몇 가지 서비스를 구현했습니다. 이러한 서비스는 IoC/DI 원칙을 기반으로합니다. 따라서 서비스는 애플리케이션 개념을 캡슐화합니다.addin/addon/plugin 전략을 구현하는 모범 사례
예를 들어, IApplicationService가 있습니다. ApplicationService는 현재 실행중인 응용 프로그램에 대한 정보를 표시합니다. AssemblyInfo 등이 지정됩니다. 다른 예는 INavigationService입니다 (샘플의 mef.codeplexcom 참조). 이 서비스는 지정된 현재 선택된 항목에 대한 정보와 일부 이벤트를 제공하는 일부 속성을 제공합니다.
"서비스 접근법"이 가장 쉽고 응용 프로그램의 확장 점을 단순화한다고 생각합니다. 그래서, 이것이 정말로 최선의 접근법인지 확신 할 수 없습니다. 어떻게 생각해? addins/addons/plugins와 같은 응용 프로그램에서 "extensions points"를 구현하는 방법은 무엇입니까?
답장을 보내 주셔서 감사합니다. 그리고 미안 해요, 제 영어는 가난합니다. ;)
정보를 추가하려면 ** 원래 게시물을 편집하여 ** 업데이트 **하십시오. 자신의 답변을 추가하지 마십시오. 따라하기가 더 어려워집니다. –
예, MEF는 ** 아닙니다 ** a DI 컨테이너 - 그 직업이 DI 컨테이너와 다르기 때문에. 그러나 MEF와 DI 컨테이너 (StructureMap 또는 Unity와 같은)를 섞는 것이 그렇게 어렵지는 않으며 꽤 잘 할 수 있다는 것에 동의하지 않습니다. 당신은 왜 이것이 oyu에서 작동 할 것이라고 생각하지 않는지 더 자세히 설명 할 필요가있을 것입니다 ..... –
AppDomain으로 로딩을 관리하는 것은 그리 쉬운 일이 아니며 대부분의 DI 프레임 워크가 이것을 처리 할 것이라고 생각하지 않습니다. AppDomain 경계를 넘기 위해서는 모든 서비스가 프록시되어야합니다. 이는 앞뒤로 전달되는 모든 클래스가 MarshalByRef 또는 Serializable이어야 함을 의미합니다.제한된 수의 마샬링 된 서비스에만 액세스 할 수있는 '신뢰할 수있는'확장명 (마샬링 없음)과 '신뢰할 수없는'확장명 범주를 고려할 수 있습니다. –