Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C++ Builder > Есть ли готовые движки приложений на Builder? |
Автор: ZVano 13.4.2011, 19:05 |
Работая в одной конторе я увидел готовый движек для создания приложений на Delphi с расширением функциональности за счет плагинов. Это оказалось очень удобным и практичным решением. Теперь работаю в другом месте, программирую на Builder-е и хочется чего то подобного. НО! Перед написанием своего "велосипеда" хочу спросить у общественности: * Может уже есть готовое решение? * Если да, то какое? Программа состоит из оболочки с менеджером плагинов. Оболочка управляет окнами и объединяет проект. Менеджер читает конфиги и подгружает плагинв в виде BPL-ок. Часть плагинов грузится сразу, часть по-необходимости. Обращение плагинов друг с другом через интерфейсы. Менеджер плагинов реализует публичный интерфейс "Менеджер плагинов". Каждый плагин реализует общий интерфейс "Плагин". Общий интерфейс содержит описание метода инициализации, в который передается ссылка на менеджер плагинов. Таким образом плагин знает, как обратиться к менеджеру. Каждый плагин предоставляет публичный интерфейс ("Плагин А", "Плагин Б") и реализует свой публичный интерфейс. Иными словами алгоритм приблизительно такой: 0. Грузится оболочка. Оболочка загружает менеджер плагинов. Оболочка грузит обязательные плагины * Локализатор * Менеджер меню **Строит главное меню * Плагин-источник подключения к БД. ** Коннект к БД 1. При клике на пункт меню 1.1 Что-то из системы определяет какой плагин обслуживает этот пункт. Идет запрос к менеджеру плагинов. 1.2 Менеджер плагинов: * грузит плагин (BPL, если не загружена) (допустим, плагин А). * вызывает инициализацию * вызывает метод, который должен отработать действие. 1.3 Плагин А получает управление. Плагин определяет какое действие запрошено и выполняет соответствующий код внутри себя. 1.4 Коду может потребоваться еще какой-либо плагин (Плагин Б). В таком случае код запрашивает у менеджера плагинов нужный ему плагин. Получает ссылку на объект базового плагина. Приводит его к интерфейсу целевого плагина (Интерфейс плагина Б). Вызывает метод. |
Автор: ZVano 14.4.2011, 09:02 |
Написаный на фирме. Исходников нет т.к. это собственность фирмы. А собственность работодателя я ценю очень высоко т.к. он мне зарплату платит (платил). Добавлено: Построена система была на базе 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 |