![]() |
|
![]() ![]() ![]() |
|
ZVano |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 259 Регистрация: 11.12.2006 Где: Украина, Кривой Р ог Репутация: 1 Всего: 4 |
Работая в одной конторе я увидел готовый движек для создания приложений на Delphi с расширением функциональности за счет плагинов.
Это оказалось очень удобным и практичным решением. Теперь работаю в другом месте, программирую на Builder-е и хочется чего то подобного. НО! Перед написанием своего "велосипеда" хочу спросить у общественности: * Может уже есть готовое решение? * Если да, то какое? Программа состоит из оболочки с менеджером плагинов. Оболочка управляет окнами и объединяет проект. Менеджер читает конфиги и подгружает плагинв в виде BPL-ок. Часть плагинов грузится сразу, часть по-необходимости. Обращение плагинов друг с другом через интерфейсы. Менеджер плагинов реализует публичный интерфейс "Менеджер плагинов". Каждый плагин реализует общий интерфейс "Плагин". Общий интерфейс содержит описание метода инициализации, в который передается ссылка на менеджер плагинов. Таким образом плагин знает, как обратиться к менеджеру. Каждый плагин предоставляет публичный интерфейс ("Плагин А", "Плагин Б") и реализует свой публичный интерфейс. Иными словами алгоритм приблизительно такой: 0. Грузится оболочка. Оболочка загружает менеджер плагинов. Оболочка грузит обязательные плагины * Локализатор * Менеджер меню **Строит главное меню * Плагин-источник подключения к БД. ** Коннект к БД 1. При клике на пункт меню 1.1 Что-то из системы определяет какой плагин обслуживает этот пункт. Идет запрос к менеджеру плагинов. 1.2 Менеджер плагинов: * грузит плагин (BPL, если не загружена) (допустим, плагин А). * вызывает инициализацию * вызывает метод, который должен отработать действие. 1.3 Плагин А получает управление. Плагин определяет какое действие запрошено и выполняет соответствующий код внутри себя. 1.4 Коду может потребоваться еще какой-либо плагин (Плагин Б). В таком случае код запрашивает у менеджера плагинов нужный ему плагин. Получает ссылку на объект базового плагина. Приводит его к интерфейсу целевого плагина (Интерфейс плагина Б). Вызывает метод. -------------------- НЕ ФЛУДИМ. Пользуемся кнопками "+" или "-" для выражения своего отношения к теме или сообщению. Гуглим "Как правильно задавать вопросы" |
|||
|
||||
borisbn |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 18 Всего: 135 |
написанный в этой фирме или просто готовый OpenSource'ный? если второе - дай ссыль, плиз.
Исходники дельфи легко вставляются в проект билдера. да и какая разница на каком языке писать плагины (если, конечно, оболочка не заточена на дельфи-плагины) -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
||||
|
|||||
ZVano |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 259 Регистрация: 11.12.2006 Где: Украина, Кривой Р ог Репутация: 1 Всего: 4 |
Написаный на фирме. Исходников нет т.к. это собственность фирмы. А собственность работодателя я ценю очень высоко т.к. он мне зарплату платит (платил). Добавлено: Построена система была на базе jvcl (JEDI Visual Component Library). Плагины - наследники JvPlugin. URL: http://jvcl.sourceforge.net/ Лицензия: Mozilla Public Licence ("MPL") version 1.1. SVN: https://jvcl.svn.sourceforge.net/svnroot/jvcl Это сообщение отредактировал(а) ZVano - 14.4.2011, 09:21 -------------------- НЕ ФЛУДИМ. Пользуемся кнопками "+" или "-" для выражения своего отношения к теме или сообщению. Гуглим "Как правильно задавать вопросы" |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++ Builder" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C++ Builder | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |