I podcasten som vi spelade in i början på veckan, MSDN Radio 21 April – Heisenbugs Fiender, blev Johan och hag involverad i en diskussion om Managed Extensions Framework, vilket är ny funktionalitet som kommer i .NET 4.0. Jag gjorde några påståenden som Johan inte riktigt kunde svara på. Efteråt insåg jag att jag hade blandat ihop MEF och System.AddIn, vilket är en teknik för att på ett enkelt sätt kunna hantera tillägg i en applikation.
Utifrån denna fadäs kände jag att jag behövde ta reda på vad som är skillnaden mellan dessa två tekniker. Här kommer en lista med de viktigaste skillnaderna.
- AddIn har möjligheten att lägga de olika tilläggskomponenterna i egna Application domains, vilket innebär att man enkelt kan hantera säkerhet. Komponenterna körs i en såkallad sandbox.
- AddIn gör det enkelt att ha olika versioner av samma komponent körande samtidigt.
- MEF hjälper till med Dependecy Injections.
- MEF gör att man slipper statiska beroenden mellan typer, vilket gör att man kan ändra funktionalitet utan att behöva kompilera om koden.
Man kan säga att System.AddIn handlar om isoaltion och att MEF handlar om extensibility (utbyggbarhet). Det är fullt logiskt och till och med användbart att använda båda tillsammans men bara använde dem var och en när man behöver det. Så klart ska du inte använda System.AddIn om du inte behöver isolation och MEF när du vill ha en öppen modell som tredje part kan addera funktionalitet till i efterhand.
Vänligen,
Magnus
http://blog.noop.se
http://twitter.com/noopman
Posted by: Magnus Mårtensson | 2009-04-25 at 16.08