MEF: замена PRISM? - PullRequest
       21

MEF: замена PRISM?

9 голосов
/ 25 августа 2009

В какой степени, если таковые имеются, MEF является заменой для PRISM?

Ответы [ 4 ]

37 голосов
/ 13 сентября 2009

Сегодня я бы сказал, что Prism и MEF дополняют друг друга. Так же, как Призма и Единство. Prism представляет набор специальных сервисов, таких как RegionManager, DelegateCommand и EventAggregator, которые помогают в создании составных приложений. MEF, с другой стороны, является более общим механизмом композиции для расширяемости приложений и сред независимо от того, являются ли они составными или нет. Ключевым отличием MEF является его обнаруживаемость, что означает, что он может выходить и обнаруживать все доступные части динамически.

Возможно, вам будет интересно проверить проект MEF contrib (mefcontrib.codeplex.com), который содержит уровень интеграции для Unity и MEF. С этим расширением Unity управляет MEF за кулисами, поэтому вы не соревнуетесь с двумя соперниками. Преимущество заключается в том, что он позволяет использовать Unity для обычных Pocos и MEF для обнаружения расширений. Таким образом, поскольку Prism в настоящее время построен на Unity, вы можете использовать его для использования MEF. Чтобы использовать проект contrib, вам нужно внести небольшие изменения в свой загрузчик Unity, но это должно быть довольно тривиально.

Определенно есть некоторые совпадения. Место, где оно наиболее заметно, касается модулей. Prism использует IModule как средство обнаружения. В MEF любой компонент может быть частью и может быть обнаружен динамически. Это означает, что с MEF у вас есть модульность сверху вниз, тогда как с Prism модули являются более детализированными модулями. Составные заявки - это определенно та область, с которой мы сталкиваемся во время MEF. Со временем вполне вероятно, что вы увидите все большую поддержку для создания приложений такого типа внутри самого MEF. Мы работаем с p & p, чтобы обеспечить плавный переход.

8 голосов
/ 25 августа 2009

Редактировать: Не читать этот ответ. Это смущающе неправильно. Я неудачник. Читайте блок Гленна ниже.

Это не очевидно, но это тот же вопрос: Структура управляемой расширяемости (MEF) против блока составного пользовательского интерфейса (CAB)

Консенсус в повторяющемся посте заключается в том, что MEF и Prism предоставляют один и тот же базовый набор функций по-разному, за исключением того, что Prism предоставляет Event Aggregator , который является средством связи между компонентами приложения. , Вы можете использовать это с MEF, однако. На самом деле все зависит от предпочтений.

2 голосов
/ 25 августа 2009

Посмотрите на этот Sparkling Client подкаст на MEF и Prism.

0 голосов
/ 01 сентября 2016

MEF никогда не заменит призму

MEF - менеджер внедрения зависимостей. Он не является контейнером внедрения зависимостей.
MEF предоставляет возможность назначать экспорт и импорт с использованием атрибутов.

Prism с MEF дает вам возможность автоматического обнаружения dll и возможность добавлять и удалять плагины путем добавления или удаления dll Где в качестве призменной структуры дается агрегатор событий, региональный менеджер, сервисный локатор.

Вы можете использовать призму без MEF. Существуют различные другие опции, такие как ninject, unity и другие контейнеры DI.

Вы можете использовать MEF с призмой для создания расширяемых приложений на основе плагинов.

...