Сегодня я бы сказал, что 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, чтобы обеспечить плавный переход.