То, что сказал Дэниел, хорошо. Я бы добавил:
Если вы посмотрите видео о System.Addins, они явно говорят об очень больших проектах. Он говорит о том, что одна команда управляет хост-приложением, другая команда управляет каждой надстройкой, а третья команда управляет контрактом и конвейером. Исходя из этого, я думаю, что System.Addins явно предназначен для более крупных приложений. Я думаю о приложениях, таких как системы ERP, например SAP (может быть, не такие уж большие, но вы поняли). Если вы смотрели эти видео, то можете сказать, что объем работы по использованию System.Addins очень велик. Это было бы хорошо, если бы у вас было много компаний, разрабатывающих сторонние надстройки для вашей системы, и вы не могли бы разорвать ни один из этих контрактов надстройки под страхом смерти.
С другой стороны, MEF, похоже, имеет больше общего со схемой надстроек SharpDevelop, архитектурой надстроек Eclipse или Mono.Addins. Его гораздо легче понять, чем System.Addins, и я считаю, что он намного более гибкий. Что вы теряете, так это то, что вы не получаете изоляцию AppDomain или строгие контракты на управление версиями прямо из коробки с MEF. Сильные стороны MEF в том, что вы можете структурировать все свое приложение как состав частей, чтобы вы могли поставлять свой продукт в различных конфигурациях для разных клиентов, а если клиент покупает новую функцию, вы просто перетаскиваете часть для этой функции в их установочный каталог. и приложение его видит и запускает. Это также облегчает тестирование. Вы можете создать экземпляр объекта, который хотите протестировать, и передать ему имитационные объекты для всех его зависимостей, но когда он работает как составное приложение, процесс композиции автоматически объединяет все реальные объекты вместе.
Самым важным моментом, который я хотел бы упомянуть, является то, что хотя System.Addins уже находится в структуре, я не вижу много свидетельств того, что люди его используют, но MEF просто сидит на CodePlex, предположительно, для включения в .NET 4, и люди уже начинают создавать на нем множество приложений (включая меня). Я думаю, это кое-что говорит вам о двух фреймворках.
person
Scott Whitlock
schedule
14.05.2009