Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > плагины. теория.


Автор: andrew_121 10.2.2010, 07:11
интересует теория. возможно кто-то писал реализацию плагиной системы? подскажите что почитать по теме?

Автор: NewDima 10.2.2010, 11:26
а что не ясно то? ну какая тут теория... динамически подключаемые библиотеки.
1. Создается список типов плагинов.
2. Для каждого типа плагина определяется его интерфейс, учитывая модель взаимодействия этого типа плагина с приложением. Может быть статический интерфейс (набор заранее определенных методов) или динамический, когда доступные методы определяет сам плагин и предоставляет их список через определенный экспортируемый метод.
Приходилось писать приложение с плагинами в Qt, Delphi и bcb6

Добавлено через 3 минуты и 10 секунд
ну соответственно, непосредственная проверка типа плагина, его интерфейса при подклюении

Автор: andrew_121 10.2.2010, 14:18
вот что нашел: http://www.codeproject.com/KB/library/dynobj.aspx


Цитата(NewDima @  10.2.2010,  11:26 Найти цитируемый пост)
ну какая тут теория... динамически подключаемые библиотеки.

это понятно.


Цитата(NewDima @  10.2.2010,  11:26 Найти цитируемый пост)
2. Для каждого типа плагина определяется его интерфейс, учитывая модель взаимодействия этого типа плагина с приложением. Может быть статический интерфейс (набор заранее определенных методов) или динамический, когда доступные методы определяет сам плагин и предоставляет их список через определенный экспортируемый метод.

и это понятно.


после прочтенной статьи, непонятным остается вопрос предоставления плагину интерфейса плагинной системы. теоретически, догадываюсь, что так же, каждый плагин требует определенного для себя интерфейса со стороны сервера. как-то так...


буду пробовать...

Автор: NewDima 10.2.2010, 14:54
Цитата(andrew_121 @ 10.2.2010,  21:18)
после прочтенной статьи, непонятным остается вопрос предоставления плагину интерфейса плагинной системы. теоретически, догадываюсь, что так же, каждый плагин требует определенного для себя интерфейса со стороны сервера.

при инициализации плагина, или по его запросу получаются требуемые коллбэки, конечно которые предусматриваются интерфейсом заранее

Автор: SenkraD 10.2.2010, 15:16
http://www.cyberguru.ru/programming/visual-cpp/application-with-plugins.html ещё посмотри, если не видел

Автор: EvilsInterrupt 11.2.2010, 11:37
Цитата

а что не ясно то? ну какая тут теория... динамически подключаемые библиотеки.

Необязательно  именно на  dll-ках! Но, как правило юзают именно этот путь, как наиболее простой и понятный многим путь к построению расширяемой системы.

К примеру, можно написать мини-линкер, компилить в obj-файлы и в памяти все связывать! Такие проекты есть и раньше были весьма в ходу! Также можно разработать свой формат исполнимых файлов и делать все по-своему, так довольно часто поступают протекторы и крипторы.

Но! Для начала вполне можно остановиться на длл, делать так:
1) загрузить плагин
2) вынести инициализацию модуля  в Инит функцию и вернуть контекст плагина
3) в SetPluginCtx , который задаст индивидуальность плагина

4) Учитывать и всегда! Что не смотря что плагины дают множетво удобств, они также потенциальная дыра в серьезном ПО !!! Пример? Создать троян и в DllMain кинуть код трояна, т.к. длл грузится, то DllMain все равно выполнится! ;)

Автор: andrew_121 11.2.2010, 14:43
EvilsInterrupt, SenkraD, спасибо за информацию.
разбираюсь пока с http://www.codeproject.com/KB/library/dynobj.aspx

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)