(я знаю о других вопросах MEF/MAF, но это более конкретная проблема)Расширяемое приложение WPF - MEF, MAF или простая загрузка?
Я хочу создать приложение WPF, который будет в основном быть только простой надстройкой хоста, GUI и настройки. Вся фактическая работа будет выполняться одним или несколькими плагинами. Им не нужно связываться между собой, основное приложение будет отправлять им пользовательский ввод/команды, и они возвратят некоторые результаты (например, элементы интерфейса WPF для рендеринга).
Теперь, поскольку ядро приложения будет основано на плагинах, мне нужно выбрать хороший способ управления ими. Я хочу иметь возможность загружать/выгружать/перезагружать их во время выполнения (например, когда обновление найдено и загружается). Вероятно, они должны работать в собственном домене приложений и/или для обеспечения стабильности и безопасности.
Из некоторых исследований и экспериментов я пришел к трем вариантам:
System.AddIn (МАФ): Кажется, это может сделать все, что нужно. Существует конвейер, который позволяет одновременно запускать несколько версий API для совместимости и т. Д. Но если мне не хватает чего-то, мне нужно создать API несколько раз - представление хоста и плагина, контракт и два адаптера для контракта. Также мало информации (по сравнению с MEF) и ресурсов, и большинству статей несколько лет. Я беспокоюсь, что это медленно умирает и не будет использовать его для нового проекта.
MEF: Это одна кажется проще, но он также чувствует, что есть много магии, что я не могу контролировать, и слои не разделены так же, как и в МАФ. Я хочу только небольшую библиотеку, которую вы можете связать с новым проектом, реализовать интерфейс и сделать плагин.
Ручная загрузка: Последний вариант будет папка вручную сканировании .dlls, использование отражение, чтобы найти плагин классы и создавать экземпляры. Хотя это выполнимо, я предпочел бы использовать некоторые рамки, чем вручную загружать сборки, создать отдельный процесс/AppDomain и т.д.
Итак, что один будет лучше для такого рода приложений, или есть что-то, что я вы пропустили?
Настоящий опрятный предмет. пара хорошие статьи; http://pwlodek.blogspot.com/2011/07/isolating-mef-components.html и http://blogs.msdn.com/b/tilovell/archive/2011/08/19/wf4-hosting-the- workflowdesigner или-другой-МОФ-материал-в-отдельном-AppDomain.aspx – Will