Подтвердить что ты не робот

Создание приложения с поддержкой Plug-in

Я начинаю новый проект, который в значительной степени выиграет от программных надстроек. Программа в своей базовой форме считывает данные из последовательного порта и анализирует его в записи базы данных. Примерами надстроек, которые можно было бы написать, было бы надстройка авто-архива, надстройка для записи фильтров и т.д. Я пишу как программу, так и надстройки, но некоторым заказчикам нужны индивидуальные решения, поэтому вместо того, чтобы разворачиваться и делать совершенно отдельную программу, дополнения были бы замечательными. Простейшим дополнением, вероятно, была бы форма, конструкция которой принимает объектную ссылку, каким-то образом манипулирует объектом, а затем закрывается.

К сожалению, я понятия не имею, с чего начать кодирование, и почти так же мало, где искать. Все, что я ищу, вызывает браузерные надстройки. Из того, что я собрал, мне нужно изучить динамические загружаемые DLL. Кроме того, я не знаю. Есть ли у кого-нибудь хорошие ресурсы или примеры, о которых они знают?

Я рад предоставить более подробную информацию, но этот проект находится в его начале, поэтому у меня нет тонны конкретных деталей (особенно характерно и то, что поражает точки надстроек).

4b9b3361

Ответ 1

Вам следует серьезно подумать об использовании Managed Extensibility Framework (MEF) для обработки вашей архитектуры плагина. Это требует думать о вещах немного по-другому, но это хорошо стоит.

Ответ 2

Это простой пример, иллюстрирующий основную технику.

codeproject.com - Архитектура плагина с использованием С#

Эта статья демонстрирует вам, как включить... как плагин для другого приложения или использования это как отдельное приложение.

в .NET 4 у вас теперь есть Managed Extensibility Framework (MEF), чтобы выполнить большую часть сантехники.

В .NET 3.5 у вас был System.AddIn, но многие считали его слишком сложным.

codeproject.com - AddIn Enabled Приложения с System.AddIn

AddIns (иногда называемые плагинами) - это отдельно скомпилированные компоненты, которые приложение может находить, загружать и делать использование во время выполнения (динамически). приложение, предназначенное для использовать AddIns можно разработка дополнительных AddIns) без необходимо, чтобы оригинальное приложение изменен или перекомпилирован и протестирован

Ответ 3

Вам действительно нужно посмотреть Managed Extensibility Framework (MEF). Это специально предназначено для поддержки надстроек и другой расширяемости.

Ответ 5

Я думаю, Отражение будет играть важную роль.

Я воспользовался приложением с плагиной. Наблюдатель файловой системы будет следить за папкой, и когда в нее будет помещена новая DLL, она будет использовать рефлексию, чтобы определить, какие типы подключаемых модулей включены, загрузили их и добавили в список доступных классов и т.д.

Ответ 6

Попробуйте использовать термин "надстройка" или "плагин" для своих исследований вместо "add-on". Это должно помочь некоторым.

Если вы используете .Net 4, там есть пространство имен надстройки в рамках, которое поможет вам там частично.

Написание поддержки плагинов для приложения - непростая задача. Вам нужно будет поддерживать довольно строгие различия между вашими интерфейсами, вам нужно предоставить библиотеку interop, которая определяет ВСЕ поддерживаемых типов подключаемых модулей, и вы захотите провести некоторые исследования в отношении инъекции зависимостей и инверсии контроля в дополнение к ранее предложенным исследованиям рефлексии.

Похоже, у вас может быть занятый уик-энд, проводящий исследования.