Использование MEF как МОК

После чтения некоторого материала, такого как это: http://mikehadlow.blogspot.com/2008/09/managed-extensibility-framework-why.html

Я понимаю, что MEF имеет некоторый featcures, который я не найду в МОК, и что MEF имеет некоторый материал МОК, который является probaboly, не столь усовершенствованным, как некоторые другие системы МОК могут предложить.

Мне нужен материал MEF. Мне также нужна платформа МОК, или я согласился бы с тем, что имеет MEF?

Asher

15
задан Andy Robinson 20 July 2010 в 09:47
поделиться

4 ответа

Зависит от ваших требований/существующего кода.

Если у вас есть существующая инфраструктура кода, построенная на IoC-контейнере, вы действительно можете объединить их с MEF. Недавно я создавал каркас ASP.NET MVC+MEF, и несколько моих читателей спрашивали, как интегрировать Unity с созданным мной каркасом MEF+MVC. Это оказалось очень просто, благодаря проекту под названием Common Services Locator.

Проект CSL предназначен для обеспечения абстракции над расположением сервисов, поэтому я могу взять CSL-провайдер для Unity, соединить его с пользовательским ExportProvider, и MEF автоматически начнет компоновать мои IoC-ориентированные части.

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

На прошлой неделе я писал в блоге о сочетании MEF+Unity (а также MEF+Autofac в качестве еще одного примера), и хотя мои примеры предназначены для ASP.NET MVC, концепция одинакова для большинства других реализаций.

Если у вас есть возможность создать что-то новое с использованием MEF, вы, вероятно, обнаружите, что вам не нужен IoC-контейнер, MEF может обрабатывать внедрение свойств, внедрение конструкторов, управление временем жизни частей и разрешение типов.

Дайте мне знать, если у вас есть какие-либо вопросы :)

8
ответ дан 1 December 2019 в 04:08
поделиться

IoC преследует цель.

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

но, следовательно, это связано с накладными расходами.

если вы просто хотите реализовать IoC, поскольку это хороший шаблон проектирования для расширяемого и тестируемого программного обеспечения, то я бы порекомендовал AutoFac, поскольку он от того же разработчика. более или менее: -)

и, если вам нужны оба намерения. затем используйте Оба. как указал Мэтью, вы можете использовать CSL для абстрагирования и того, и другого. если бы захотел.

для плагинов -> MEF

для вашего IoC -> простой IoC

3
ответ дан 1 December 2019 в 04:08
поделиться

Мы используем MEF в качестве IoC-контейнера, и он работает для нас.

Тем не менее, вам стоит взглянуть на эту статью в блоге Глена Блока, где он перечисляет недостатки, с которыми вы можете столкнуться: Стоит ли мне использовать MEF для моих общих потребностей IoC?

3
ответ дан 1 December 2019 в 04:08
поделиться

Я использую MEF как для расширяемости, так и для IoC в SoapBox Core . Также есть статья о CodeProject под названием Создание расширяемого приложения с использованием MEF, WPF и MVVM , в которой описывается, как это работает.

2
ответ дан 1 December 2019 в 04:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: