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

Тема в разделе "Delphi - Компоненты", создана пользователем ivs4, 20 мар 2006.

Статус темы:
Закрыта.
  1. ivs4

    ivs4 Гость

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

    Barmutik Гость

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

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

    ivs4 Гость

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

    Barmutik Гость

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

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

    ivs4 Гость

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

    Barmutik Гость

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

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

    ivs4 Гость

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

    Barmutik Гость

    Везде есть плюсы и минусы ...
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей