Разбиение приложения на подключаемые модули

  • Автор темы ivs4
  • Дата начала
Статус
Закрыто для дальнейших ответов.
I

ivs4

Гость
#1
Добрый день. Тема моего вопроса не нова, но вразумительного ответа я до сих пор не нашел. Речь пойдет о разбиении приложения на модули. Я сразу откинул использование ActiveX и OLE по причине необходимости их регистрации в системе. Осталось два способа: dll и bpl. Тут то и начинается мучительный процесс выбора. Основным критерием создания приложения стало распространение его без runtime библиотек среды разработки. Если пойти таким путем в отношении dll, то их надо компилировать бес runtime библиотек наряду и с основной частью, и получаем дублирование системного кода и в основной части и в подключаемых модулях. Общий размер от этого не уменьшается.
При использовании bpl работа без runtime библиотек среды разработки вообще невозможна. Если у меня в пакете в области requires упоминаются библиотеки, то их к сожалению придется таскать с дистрибутивом, т.к. без динамического подключения оных основная часть не находит зарегистрированный в пакете класс.
Вопрос: Существует ли вариант, при котором и все runtime библиотеки среды разработки включаются в приложение, и не происходит дублирование кода в основной части и в подключаемых модулях? Или же я не до конца отработал описанные мною выше варианты? Заранее благодарен.
 
B

Barmutik

Гость
#2
Сталкивался с подобной проблемой .. вопрос в том какие части кода Вы хотите вынести в отдельные модули.

Если это только куски кода, вы полняющие вычислительные функции то DLL вполне нормальный вариант, но если Вы планируете выносить в модули формы, фрэймы и потом плотно работать с ними (дочить и т.д.) то Ваш единственный вариант это BPL...
 
I

ivs4

Гость
#3
Приложение состоит их нескольких модальных форм. Сейчас это все в одном exe скомпилированном без runtime библиотек (по принципу "все что нужно ношу в себе"). Каждая форма сожержит ряд визуальных и невизуальных контролов (ADO, Data Controls...). Хотелось бы все это разбить на отдельные модули по возможности сохранив отказ от runtime библиотек (т.е. в дистрибутив должны включаться только мои bpl, а не системные Delphi). Я так понял, что если идти по пути модулей-bpl, то без таскания системных bpl не обойтись.
 
B

Barmutik

Гость
#4
Используя механизм BPL этого не удастся сделать... системные пакеты всё равно придётся таскать... Но если Вы говорите что Ваши формы являются чисто модальными .. то Вас вполне устроит мехнизм использования DLL для хранения в них различных модальных форм...

Вопрос другой что это не будет работать если Вы ходить их дочить в основное приложение... а в модальном режиме работы DLL хороший выход из ситуации...
 
I

ivs4

Гость
#5
Понятно. Я предполагаю, что при использовании dll в случае если в двух модулях используются системные runtime то их придется компилировать в оба модуля. Отсюда наблюдаю избыточность кода.
P.S. Большая просьба разъяснить термин "дочить".
 
B

Barmutik

Гость
#6
Да .. от избыточности кода уйти не удастся в случае использования DLL, его возможно избежать только в случае использования BPL.

Дочить (извините за слэнг :)) - dock window = технология, которая позволяет вставлять окна внутрь другого окна.
 
I

ivs4

Гость
#7
Спасибо за ответы. Остановился на использовании bpl. При этом размер основной части и модулей упал до нескольких килобайт. Правда придется у клиента оставлять системные bpl (каждая порядка мегабайта), и здесь палка о двух концах.
С одной стороны при удаленном обновлении по каналу передать несколько килобайт пройдет без заминок.
С другой - при смене среды разработки те самые системные bpl все же придется менять.
 
Статус
Закрыто для дальнейших ответов.