MEF (Managed Extensibility Framework) срещу IoC/DI

Какви проблеми решава MEF (Managed Extensibility Framework), които не могат да бъдат решени от съществуващите IoC/DI контейнери?


person alex    schedule 20.09.2008    source източник


Отговори (3)


Основната цел на MEF е разширяемостта; да служи като рамка на „добавка“, когато авторът на приложението и авторът на добавката (разширение) са различни и нямат специални познания един за друг извън публикуван интерфейс ( договор) библиотека.

Друго проблемно пространство, адресирано от MEF, което е различно от обичайните IoC заподозрени, и една от силните страни на MEF е откриването на [разширение]. Има много, добре, разширими механизми за откриване, които работят с метаданни, които можете да свържете с разширения. От сайта на MEF CodePlex:

„MEF позволява маркиране на разширения с допълнителни метаданни, което улеснява богатите заявки и филтриране“

В съчетание със способността за забавяне на зареждането на маркирани разширения, възможността за запитване на метаданни за разширението преди зареждането отваря вратата към множество интересни сценарии и значително позволява възможности като [plug-in] версия.

MEF също има „Договорни адаптери“, които позволяват разширенията да бъдат „адаптирани“ или „трансформирани“ (от тип > към тип) с пълен контрол върху детайлите на тези трансформации. Договорните адаптери отварят друг творчески фронт по отношение на това какво означава и включва „откриване“.

Отново „намерението“ на MEF е тясно фокусирано върху разширяемостта на анонимни добавки, нещо, което много го отличава от другите IoC контейнери. Така че докато MEF може да се използва за композиция, това е просто малка пресечна точка на неговите възможности спрямо други IoC, с които подозирам, че ще видим много кръвосмесителни взаимодействия в бъдеще.

person J Healy    schedule 26.09.2008
comment
Имате много различен избор на думи. - person BlueRaja - Danny Pflughoeft; 14.04.2011

IoC контейнерите се фокусират върху онези неща, които знаете, т.е. знам, че ще използвам един регистратор в Unit Test и друг регистратор в моето приложение. MEF се фокусира върху онези неща, които вие не правите, има от 1 до n регистратора, който може да се появи в моята система.

person Glenn Block    schedule 16.10.2008

Скот Хензелман и аз разгледахме тази тема по-подробно в последните hanselminutes.

http://www.hanselminutes.com/default.aspx?showID=166

person Glenn Block    schedule 01.02.2009