MEF против PRISM. В чем разница? Что будет поддерживаться в будущем?

Я читал похожие посты, но мне это не понятно.

То, что я хочу создать, - это приложения Silverlight с несколькими вкладками/модулями, которые будут отдельными DLL.

Я вижу, что PRISM имеет концепции Shell/Module, которые, как представляется, направлены на выполнение пользовательского интерфейса, и я нахожу приятную демонстрацию (показывающую, как искать digg/twitter).

Но похоже, что MEF будет включен в VS2010, поэтому я хотел бы пойти с этой опцией.

Может ли кто-нибудь четко объяснить различия? (Я не продвинутый программист)

(обновление 1) Таким образом, MEF и Unity в основном одинаковы... и PRISM находится поверх этих концепций и специфичен для пользовательского интерфейса...

Таким образом, ответы, похоже, на использование PRISM, так как я спрашиваю о том, как создать приложение Silverlight в отдельных частях пользовательского интерфейса.

Кто-нибудь знает будущее развития PRISM? Это сделано или продолжается?

Ответы

Ответ 1

MEF и Prism выполняют две очень разные цели.

Prism - это в основном руководство для проектирования составных приложений - где у вас есть оболочка и "регионы", которые динамически назначаются и интегрированы. Он включает контейнер IoC (Unity), который он использует для его инъекции.

MEF - это инфраструктура инъекций зависимостей - главная цель - "заполнить" зависимости во время выполнения приложения. В этом отношении он выполняет ту же цель, что и Unity в Prism (и на самом деле вы могли бы легко переработать Prism для использования MEF вместо Unity).

Призма в какой-то мере расширяет сферу охвата, но также действительно ограничена приложениями GUI. MEF просто делает одну вещь (Dep.Injection), но предназначен для более общего назначения для любого типа приложений.


Изменить в ответ на обновление:

Что касается времени жизни этих продуктов - здесь нет ответа, но это как бы то, как они разрабатываются:

Призма была разработана командой "Шаблоны и практики". Цель состоит не в том, чтобы обязательно делать программное обеспечение, а в том, чтобы давать указания. Таким образом, они обновляют (хотя и нередко) библиотеку и образец Prism, но Prism не является основной частью структуры, поставляемой Microsoft. Это действительно сторонняя библиотека (хотя MS финансирует ее много, большинство людей P & P не являются MS FTE).

MEF, из сообщений в блоге, похоже, что он планируется интегрировать в структуру и использоваться непосредственно внутри проектов MS. Таким образом, он получает тяжелое развитие, непосредственно от Microsoft, и используется в своих продуктах.

Я лично прочитал документацию Prism (и имею книгу) и прошел через образцы. Очень полезно понять, как разбить приложение, но на самом деле это руководство больше, чем полная, пригодная для использования структура. Образцы очень хорошо выполняют то, что они предназначены, - обучают архитектора тому, как разработать составное приложение.

Если ваша цель - просто сохранить чистое разделение проблем в приложении silverlight, я бы больше сосредоточился на изучении MVVM, а не просто при использовании Prism.

Если вы хотите использовать MEF, есть и другие хорошие варианты. Например, WPF Application Framework - это вся инфраструктура MVVM, построенная поверх MEF и довольно приятная.

Ответ 2

В основном, MEF представляет собой универсальную инфраструктуру расширяемости:

Если вы создаете расширяемые приложения, расширяемые фреймворки и расширения приложений, то MEF для вас.

тогда как Prism в основном предназначен для создания GUI:

Руководство по составлению составных клиентов разработано, чтобы помочь вам легче создавать модульные клиентские приложения Windows Presentation Foundation (WPF) и Silverlight.

Ответ 3

Итак, MEF и Unity в основном одинаковы...

Ну, не совсем. MEF больше ориентирован на расширения, которые неизвестны во время компиляции, тогда как контейнеры IOC обычно сосредоточены на зависимостях, которые известны во время компиляции. Главный ответ на этот вопрос дает хорошее объяснение различий.