2009-10-20 3 views
14

Я занимаюсь разработкой настольного приложения .NET 3.5 C#. Он должен расширяться через плагины.MEF vs Mono.AddIn

Есть ли какие-либо статьи и т. Д., Обсуждая различия между MEF и Mono.AddIn, чтобы помочь мне принять обоснованное решение?

Или еще лучше у вас есть опыт работы с обоими этими фреймворками и можете прокомментировать их?

Спасибо, Патрик

ответ

4

Я считаю, что Hanselminutes Show #181 имеет некоторое обсуждение Mono.AddIns и то, что она приносит к столу.

При чистке сети я также нашел this discussion, в которой подчеркивается разница в том, как эти две рамки в настоящее время обрабатывают кеширование каталога.

+0

Спасибо. Это начало ... –

1

Я исследовал оба варианта и решил пойти с MEF, главным образом потому, что он будет выпущен как часть .NET 4, поэтому автоматически будет поддерживаться поддержка, обсуждение и развитие. Кроме того, MEF, казалось, мог делать все, что мне нужно, используя атрибуты прямо в коде, а Mono.AddIns требовал некоторых файлов метаданных, если я правильно помню.

EDIT: Если вы хотите, чтобы увидеть результат моих усилий при использовании MEF, чтобы создать расширяемую платформу приложений, Я с открытым исходным кодом, и дал ему имя: SoapBox Core.

+0

Вы также можете управлять Mono.Addins из атрибутов. XML-манифест необходим только в том случае, если вы хотите подключить данные/метаданные или использовать некоторые из более сложных функций. Вы можете даже смешивать-и-матч! –

+0

@mhutch: Я знаю, но были некоторые функции, которые были доступны только в манифесте XML, и я предпочел полностью атрибутную модель MEF. Но это очень мало, я согласен. –

18

[Примечание: Я работаю на MonoDevelop, которая использует Mono.Addins, но я обсуждал различие между MEF и Mono.Addins экстенсивно с Гленн Блок из MEF команды на прошлой неделе]

MEF базируется на составление коды , хотя базовые абстракции очень гибкие. Напротив, Mono.Addins основан на дереве метаданных, где вы можете подключать данные/метаданные/код к богатой схеме вашего определения, поэтому расширения могут добавлять данные/метаданные, а также код.

Mono.Addins предоставляет вам систему управления добавлением/упаковкой/репозиторией/обновлением из коробки. Для MEF, на данный момент, вам придется создавать свои собственные.

MEF имеет несколько более низкий барьер для входа, и гораздо больше работ по дизайну перешло в его удобство использования и лежащие в основе абстракции. Кроме того, это часть .NET 4, поэтому у него будет гораздо больше сообщество разработчиков, работающих с/для него.

На данный момент, если вам нужно подключить данные/метаданные, а также код, и вы хотите иметь готовую систему упаковки, я бы рекомендовал Mono.Addins, иначе я бы рекомендовал MEF. Идя вперед, вполне вероятно, что функции Mono.Addins будут реализованы на MEF, поэтому, вероятно, будет путь миграции к MEF.

+0

Каков статус Mono.Addins с 2014 года? Последнее совершение в Codeplex было в 2012 году, это означает, что он либо мертв, либо очень стабилен :) – user3557327

+1

Он активно поддерживается на GitHub: https://github.com/mono/mono-addins –