2009-08-24 2 views

답변

8

편집 :이 대답을 읽지 마십시오. 그것은 당황스럽게 잘못되었습니다. 나는 실패했다. 글렌 블록을 읽으십시오.

그것은 분명 아니지만,이 같은 질문 : 중복 게시물에 Managed Extensibility Framework (MEF) vs. Composite UI Application Block (CAB)

합의가 프리즘이 Event Aggregator을 제공 제외 MEF와 프리즘, 다른 방법으로 기능의 동일한 기본 세트를 제공한다는 것입니다, 이는 응용 프로그램 구성 요소 간의 pub-sub 통신 수단입니다. 그러나 이것을 MEF와 함께 사용할 수 있습니다. 정말 많은 것을 선호합니다.

+5

어 ... 나는 1 년 전부터 알고 많은 것을 배웠다.하지만이 대답은 정말로 잘못되었다. Glenn Block의 게시물이 더 정확합니다.Prism V4는 다양한 형태의 IoC와 합성에 * MEF를 사용할 수있는 옵션이 있다는 점에서 가장 눈에 띄게 볼 수 있습니다. 나 자신의 게시물을 삭제하거나 심지어 downvote 수 없습니다. –

+6

뭔가 이상하게 읽고 누가 "이 바보 야? ... 오"라고 말하는거야. –

+3

+1 순수 정직. 귀하의 대답은 "가장 정확한"것은 아니지만 글렌의 답변과는 대조적으로 통찰력을 제공합니다. MEF/Prism/Unity/MAF 사이의 책임/기능 라인은 꽤 희미합니다 (그리고 당신은 downvote도받을 자격이 없습니다). – Doug

36

오늘 저는 프리즘과 MEF가 서로 보완한다고 말하고 싶습니다. 프리즘과 단결처럼. Prism은 복합 애플리케이션 구축을 지원하는 RegionManager, DelegateCommand 및 EventAggregator와 같은 특정 서비스 세트를 소개합니다. 반면에 MEF는 복합 요소이든 아니든간에 응용 프로그램 및 프레임 워크의 확장 성을위한보다 일반적인 구성 메커니즘입니다. MEF의 주요 특징은 발견 가능성이라는 것입니다. 즉, 사용 가능한 모든 부품을 동적으로 검색 할 수 있다는 것을 의미합니다.

Unity 및 MEF의 통합 레이어가 포함 된 MEF contrib 프로젝트 (mefcontrib.codeplex.com)를 확인해보십시오. 이 확장을 통해 Unity는 장면 뒤에서 MEF를 관리하므로 두 명의 컨테 이너와 경쟁하지 않습니다. 장점은 일반 Pocos에 Unity를 사용하고 확장을 검색하기 위해 MEF를 사용할 수있게한다는 것입니다. 따라서 Prism은 현재 Unity에 구축되어 있으므로이를 사용하여 MEF를 활용할 수 있습니다. contrib 프로젝트를 사용하려면 Unity Bootstrapper에 약간의 변경을 가해 야하지만 매우 사소한 것이 좋습니다.

확실히 일부 중복됩니다. 가장 눈에 띄는 부분은 모듈과 관련된 부분입니다. Prism은 발견 수단으로 IModule을 사용합니다. MEF에서 모든 구성 요소는 부분이 될 수 있으며 동적으로 발견 될 수 있습니다. 이것은 MEF를 사용하면 위에서 아래로 모듈화되어 있고, Prism으로 wheras를 가지고 있으며, 모듈은 더 세부적인 단위입니다. 복합 응용 프로그램은 확실히 MEF 시간에 우리가 소중히 여기는 영역입니다. 시간이 지남에 따라 MEF 자체 내에서 이러한 유형의 앱을 구축하는 데 점점 더 많은 지원이있을 것입니다. 우리는 p & p와 함께 작업하여 원활하게 전환되도록합니다.

+0

[프리즘의 MEF 지원이 끝나고 있습니다] (https://github.com/PrismLibrary/Prism) : "MEF는 이전 버전과의 호환성을 위해 WPF에서 지원됩니다. Windows 10 UWP 또는 Xamarin Forms에는 추가되지 않습니다. " – Informagic

0

MEF는 프리즘

MEF는 의존성 삽입 manager.its하지 의존성 주입 컨테이너 대체하지 않습니다.
MEF는 특성을 사용하여 delclaritively 내보내기 및 가져 오기를 할당 할 수있는 기능을 제공합니다.

프리즘과 MEF를 사용하면 dll을 자동으로 검색하고 dll을 추가하거나 삭제하여 플러그인을 추가 및 제거 할 수 있습니다. 프리즘 프레임 워크는 이벤트 수집기, 영역 관리자, 서비스 위치 지정자를 제공합니다.

MEF없이 프리즘을 사용할 수 있습니다. ninject, unity 및 기타 DI 컨테이너와 같은 다양한 옵션이 있습니다.

프리즘과 함께 MEF를 사용하여 플러그인 기반의 확장 가능한 응용 프로그램을 만들 수 있습니다.