Структура управляемой расширяемости (MEF) и блок составного пользовательского интерфейса (CAB) - PullRequest
5 голосов
/ 22 мая 2009

В настоящее время мы рассматриваем использование CAB или MEF для нашего следующего приложения. Я не видел ни одного примера в кодеклексе о том, как обрабатывается брокер событий для контроля над родным братом, возможно, я пропустил это. Как работает межконтрольная связь в MEF?

Кроме того, мы планируем использовать Infragistics, которая предоставила дополнительные компоненты для инфраструктуры CAB. Насколько хорошо средства управления инфраструктурой будут интегрированы в MEF?

В целом, стоит ли MEF стремиться к прилично большим 15 000 часам строго разработки, приложения?

Ответы [ 4 ]

7 голосов
/ 22 мая 2009

Возможно, я ошибаюсь, но я не думаю, что у MEF есть посредник. Это общий механизм компоновки, похожий на контейнеры ioc, но предназначенный для более общего решения по расширению подключаемых модулей и приложений. CAB и Prism, с другой стороны, являются структурами пользовательского интерфейса, которые позволяют составлять приложения, которые состоят из компонентов пользовательского интерфейса. Поскольку компоненты пользовательского интерфейса, скорее всего, должны будут взаимодействовать друг с другом и реагировать на действия других компонентов пользовательского интерфейса, базовая структура должна обеспечивать механизм для обработки событий (pub / sub) между компонентами пользовательского интерфейса.

6 голосов
/ 25 мая 2009

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

http://codebetter.com/blogs/glenn.block/archive/2009/02/23/event-aggregation-with-mef-with-and-without-eventaggregator.aspx

Как это работает, вы экспортируете классы составных событий Prism.

НТН Гленн

6 голосов
/ 25 мая 2009

Если вы используете MEF с WPF и шаблоном MVVM, ваши детали обычно экспортируют классы ViewModel и классы View (например, DataTemplates и т. Д.). Ваш View привязывается к ViewModel и использует свойства зависимостей и команды для взаимодействия вперед и назад. Следовательно, если части A необходимо связаться с частью B, то часть A может импортировать ссылку на ViewModel части B, и они могут совершать вызовы методов туда и обратно. Часть A также может регистрировать обработчики событий для событий части B и т. Д.

2 голосов
/ 23 июня 2010

Я согласен со Скоттом. «Общая» модель pub / sub кажется интересной, но редко она мне нужна. Если я хочу отделенное сообщение, с помощью MEF я просто определяю IMessage контракта, а затем экспортирую реализацию, а затем импортирую ее туда, где мне это нужно. Если это строго типизированное сообщение, я импортирую именно ту часть, с которой мне нужно поговорить, и напрямую сообщу об этом.

...