Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> плагины. теория. 
:(
    Опции темы
andrew_121
Дата 10.2.2010, 07:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 6
Всего: 33



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


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
NewDima
Дата 10.2.2010, 11:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 922
Регистрация: 20.2.2006
Где: <?here?>

Репутация: нет
Всего: 12



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

Добавлено через 3 минуты и 10 секунд
ну соответственно, непосредственная проверка типа плагина, его интерфейса при подклюении
PM ICQ   Вверх
andrew_121
Дата 10.2.2010, 14:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 6
Всего: 33



вот что нашел: http://www.codeproject.com/KB/library/dynobj.aspx


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

это понятно.


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

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


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


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


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
NewDima
Дата 10.2.2010, 14:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 922
Регистрация: 20.2.2006
Где: <?here?>

Репутация: нет
Всего: 12



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

при инициализации плагина, или по его запросу получаются требуемые коллбэки, конечно которые предусматриваются интерфейсом заранее
PM ICQ   Вверх
SenkraD
Дата 10.2.2010, 15:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 933
Регистрация: 3.2.2006
Где: Украина::Киев

Репутация: 2
Всего: 23



Вот ещё посмотри, если не видел


--------------------
 Имеющий язык - да не убоится спросить! 
user posted image
PM MAIL ICQ   Вверх
EvilsInterrupt
Дата 11.2.2010, 11:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Executables research
***


Профиль
Группа: Завсегдатай
Сообщений: 1019
Регистрация: 14.7.2007
Где: Железнодорожный, МО, Россия

Репутация: 2
Всего: 9



Цитата

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

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

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

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

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

Это сообщение отредактировал(а) EvilsInterrupt - 11.2.2010, 11:37
PM MAIL WWW ICQ Jabber   Вверх
andrew_121
Дата 11.2.2010, 14:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 6
Всего: 33



EvilsInterruptSenkraD, спасибо за информацию.
разбираюсь пока с http://www.codeproject.com/KB/library/dynobj.aspx



--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0666 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.