Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Есть ли готовые движки приложений на Builder?


Автор: ZVano 13.4.2011, 19:05
Работая в одной конторе я увидел готовый движек для создания приложений на Delphi с расширением функциональности за счет плагинов.
Это оказалось очень удобным и практичным решением. 
Теперь работаю в другом месте, программирую на Builder-е и хочется чего то подобного.

НО! Перед написанием своего "велосипеда" хочу спросить у общественности: 
* Может уже есть готовое решение?
* Если да, то какое?


Программа состоит из оболочки с менеджером плагинов.
Оболочка управляет окнами и объединяет проект.
Менеджер читает конфиги и подгружает плагинв в виде BPL-ок.
Часть плагинов грузится сразу, часть по-необходимости.
Обращение плагинов друг с другом через интерфейсы.

Менеджер плагинов реализует публичный интерфейс "Менеджер плагинов".
Каждый плагин реализует общий интерфейс "Плагин". 
Общий интерфейс содержит описание метода инициализации, в который передается ссылка на менеджер плагинов. Таким образом плагин знает, как обратиться к менеджеру.
Каждый плагин предоставляет публичный интерфейс ("Плагин А", "Плагин Б") и реализует свой публичный интерфейс.



Иными словами алгоритм приблизительно такой:
0. Грузится оболочка.
Оболочка загружает менеджер плагинов.
Оболочка грузит обязательные плагины
* Локализатор
* Менеджер меню
**Строит главное меню
* Плагин-источник подключения к БД.
** Коннект к БД
1. При клике на пункт меню
1.1 Что-то из системы определяет какой плагин обслуживает этот пункт.
Идет запрос к менеджеру плагинов.  
1.2 
Менеджер плагинов:
* грузит плагин (BPL, если не загружена) (допустим, плагин А). 
* вызывает инициализацию
* вызывает метод, который должен отработать действие.
1.3 Плагин А получает управление.
Плагин определяет какое действие запрошено и выполняет соответствующий код внутри себя.
1.4 Коду может потребоваться еще какой-либо плагин (Плагин Б).
В таком случае код запрашивает у менеджера плагинов нужный ему плагин.
Получает ссылку на объект базового плагина.
Приводит его к интерфейсу целевого плагина (Интерфейс плагина Б).
Вызывает метод.

Автор: borisbn 13.4.2011, 22:03
Цитата(ZVano @  13.4.2011,  19:05 Найти цитируемый пост)
Работая в одной конторе я увидел готовый движек для создания приложений на Delphi с расширением функциональности за счет плагинов.

написанный в этой фирме или просто готовый OpenSource'ный? если второе - дай ссыль, плиз.

Цитата(ZVano @  13.4.2011,  19:05 Найти цитируемый пост)
Теперь работаю в другом месте, программирую на Builder-е и хочется чего то подобного.

Исходники дельфи легко вставляются в проект билдера. да и какая разница на каком языке писать плагины (если, конечно, оболочка не заточена на дельфи-плагины)

Автор: ZVano 14.4.2011, 09:02
Цитата(borisbn @  13.4.2011,  22:03 Найти цитируемый пост)
написанный в этой фирме или просто готовый OpenSource'ный?

Написаный на фирме. Исходников нет т.к. это собственность фирмы. А собственность работодателя я ценю очень высоко т.к. он мне зарплату платит (платил).

Добавлено:
Построена система была на базе 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

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