Те, що сказав Даніелг, добре. Я додам:
Якщо ви дивитесь відео про System.Addins, вони чітко говорять про дуже великі проекти. Він розповідає про одну команду, яка керує хост-додатком, іншу команду, яка керує кожним AddIn, і третю команду, яка керує контрактом і трубопроводом. Виходячи з цього, я думаю, що System.Addins очевидно для більш великих додатків. Я думаю, що такі програми, як ERP-системи, як SAP (можливо, не такі великі, але ви розумієте). Якщо ви переглядали ці відео, ви можете сказати, що обсяг роботи з використання System.Addins дуже великий. Було б добре, якби у вас було багато компаній, які програмували сторонні надбудови для вашої системи, і ви не можете розірвати жоден із цих договорів надбудови під страту.
З іншого боку, MEF, схоже, поділяє більше подібності до схеми надбудови SharpDevelop, архітектури плагінів Eclipse або Mono.Addins. Це набагато простіше зрозуміти, ніж System.Addins, і я вважаю, що це набагато гнучкіше. Те, що ви втрачаєте, - це те, що ви не отримуєте ізоляцію AppDomain або сильні контракти на версію версії з МЕФ. Сильні сторони MEF полягають у тому, що ви можете структурувати всю свою програму як складову частину, так що ви можете відправляти свій товар у різних конфігураціях для різних клієнтів, і якщо клієнт купує нову функцію, ви просто занесіть частину цієї функції в каталог їх встановлення. і програма бачить його і запускає. Це також полегшує тестування. Ви можете створити об'єкт, який ви хочете протестувати, і подати з нього глузування з об'єктів за всіма його залежностями,
Найважливіший момент, який я хотів би зазначити, це те, що, незважаючи на те, що System.Addins вже є в рамках, я не бачу багато доказів того, як люди його використовують, але MEF просто сидить там на CodePlex, який, як видно, повинен бути включений в .NET 4, і люди вже починають створювати з ним безліч додатків (включаючи і мене). Я думаю, це говорить вам щось про дві рамки.