Возможно ли (и разумно) использовать MEF и Prism (CAL) в одном проекте?

В настоящее время я работаю над проектом WPF с использованием Prism (CAL), и мне интересно, стоит ли использовать как Prism, так и MEF в одном проекте.

Я бы использовал Prism для модульности и MEF для расширяемости. Мой проект представляет собой приложение, похожее на рисование, поэтому Prism обеспечит разделение модулей (набор инструментов, холст как модули и т. Д.), А MEF будет использоваться для обеспечения точки расширения для новых фигур для рисования (например, прямоугольник, круг ...).

Будет ли это иметь смысл, или я могу получить аналогичную функциональность только с Prism?

Заранее спасибо и с наилучшими пожеланиями, crischu


person chrischu    schedule 28.07.2009    source источник


Ответы (2)


Конечно! Это очень уместный поступок.

MEF выглядит так, как будто он направлен на .NET Framework, поэтому я бы сказал, что это действительно хороший способ раскрыть область поверхности плагина, которая требует очень небольшой (и относительно неизменной) зависимости (только от MEF ... не всех остальных материал, который поставляется вместе с Prism) для авторов ваших плагинов.

Поскольку он будет в Framework, я готов поспорить, что с ним ознакомится больше людей, чем с Prism.

person Anderson Imes    schedule 30.07.2009

Это разумно делать, и у нас есть несколько клиентов, которые этим занимаются. MEF является частью .NET Framework 4.0, а также следующей версии Silverlight. В настоящее время мы поставляем MEF для .NET 3.5 на Codeplex.

Что касается Prism с MEF, проблема на этом этапе заключается в том, что вам нужно написать кучу кода, поскольку у Prism еще нет реализаций служб, необходимых для общения с MEF.

Один из вариантов - использовать уровень интеграции MEF / Unity, который есть в MEF Contrib (mefcontrib.codeplex.com). Это позволяет Unity и MEF взаимодействовать друг с другом, поэтому вы можете использовать существующий источник Prism с MEF через мост Unity.

Мы работаем с p & p, чтобы обеспечить прямую поддержку MEF.

Спасибо Гленн

person Glenn Block    schedule 12.09.2009
comment
Интересный материал. Спасибо, Гленн. - person Anderson Imes; 14.09.2009