Недавно анонсированная управляемая инфраструктура расширяемости (MEF).NET 4.0 - это инфраструктура внедрения зависимостей? Будет ли Microsoft Unity от шаблонов и практик устаревать в 4.0? Как MEF сравнивается с каркасом вроде Unity?
Является ли MEF основой для внедрения зависимостей?
Ответ 1
В частности, речь идет о втором ключевом слове PDC 2008 Скоттом Гатри, MEF имеет гораздо больше общего с вещами, такими как расширение Visual Studio 2008 и других приложений, без использования всех COM-технологий и более старых технологий... Очень хорошая демонстрация в дополнение к расширению текстового издания в VS2008. Начните примерно час и 15 минут во второй дневной ток (http://www.microsoftpdc.com), и вы получите прямую информацию, но в основном, если вы собираетесь "создать приложение со встроенными точками расширяемости, которое легко обнаружить и которое поддерживает обнаружение расширений", то MEF - это то, что вы хотите. UNITY - это то, что вы хотите для высококачественного контейнера IoC, который выполняет DI, а также другие решения там, но имеет большую и легкую интеграцию с корпоративной библиотекой.
Что касается Unity в EL4.0 (теперь 4.1 - http://msdn.microsoft.com/en-us/library/dd203099.aspx), то это фактически IoC, который находится поверх версии 2 ObjectBuilder и EL4.1 имеют точки расширяемости для объединения конфигурации различных блоков приложений EL с Unity.
MEF против Unity похож на сравнение яблок с апельсинами. Здесь приведены некоторые замечательные и конкретные подкасты/веб-трансляции, которые описывают UNITY в полной мере, что я настоятельно рекомендую:
DotNetRocks Show # 393 http://www.dotnetrocks.com/default.aspx?showNum=393 DNR.tv Показать # 126 http://www.dnrtv.com/default.aspx?showNum=126
Ответ 2
Я видел одну запись, которая заставляла ее звучать как одна, но более подробная информация (Скотт Гатри на PDC2008 [Видео/wmv]) заставил меня думайте, что это больше, чем основа для инъекций зависимостей. Из звуков вещей его можно использовать для инъекции зависимостей, но также делает больше.
Ответ 3
Здесь беседа о MEF/MAF/Unity/Prism, которую я нашел просветляющей.
Ответ 4
Я хотел бы добавить одну строку mopre, которую я только что прочитал, что MEF не является частью Inversion of Control (поскольку dependecny называется синонимом IOC), но он реализует его. Когда мы внедряем IOC через инъекции зависимостей, мы обычно используем Unity, который помогает обнаруживать статические зависимости, но MEF позволяет нам увеличивать расширяемость нашего приложения без статической настройки компонентов, даже если их можно обнаружить во время выполнения. Существуют и другие ссылки, которые могут помочь вам больше: Разница между Unity и MEF