Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.07.11;
Скачать: [xml.tar.bz2];

Вниз

Уменьшение объема передаваемого кода программы   Найти похожие ветки 

 
vint45   (2004-06-26 14:41) [0]

Здраствуйте! Я хочу распространять свою программу через интернет.
Алгоритм программы занимает незначительный объем в отличие от интерфейсной части. Поэтому стоит их разделить, чтобы при обновлении только алгоритма, не приходилось заново обновлять и интерфейс. Я рассматриваю 3 варианта по отделению интерфейса и уменьшению объемов программы.

1 Вариант
Использование библиотеки KOL. Эта библиотека позволяет уменьшать размеры программы в 5-15 раз, правда сам я не пытался пока писать через нее программы, а только читал как с ней работать. Плюсом этой библиотеки является то, что она позволяет уменьшить размер компонентов за счет исключения вызова вирт. методов и
неиспользуемых в программе объектов. Но неизвестно поддерживает ли KOL работу с протоколом HTTPS и архивами. Некоторые интерфейсные компоненты, которые используются моей программой, могут не поддерживаться этой библиотекой (TCoolBar, TChart), или реализованы не полной мере (TTrackBar).

2 Вариант
Написание dll-плагинов. При написании dll-плагинов пишутся интерфейсные процедуры для вызова методов и свойств компонентов. Для каждого компонента создается свой плагин в целях уменьшения передачи данных при обновлении компонентов. Хотя плагины и не сжимают компоненты так как это делает KOL, но зато в них не хранится лишняя информация так как это происходит
при использовании package-модулей.

3 Вариант
Использование package-модулей. В этом варианте происходит отделение интерфейсной части от логики программы, но размер пакетов зашкаливает. В совокупе RTL и VCL занимают около 2 мегов (не считая вспомогательных пакетов, что может увеличить объем до 3-4 Мб), при этом скомпилированная без пакетов программа занимает
немногим более 600Кб. Т.е. в пакетах лежит много ненужной информации. Можно конечно править исходники и из них делать свои пакеты, но я читал что там много связей, которые довольно трудно разделить (отмечу также, что есть пакеты с компонентами, для которых у меня нет исходников).

Мастера! Помогите мне определиться с выбором варианта или поправьте меня, если я где-то не прав. Сам я склоняюсь к выбору второго варианта, мне кажется он наиболее компромисным. Спасибо.


 
Sir John ©   (2004-06-26 16:06) [1]

Привет!
Если мое мнение учитывается, то могу посоветовать вот такой вариант.
1. Приложение должно быть откопилировано с включенным значком Build with Runtime Packages. Это уменьшит занимаемый объем в несколько раз. Для этого необходимо в Project -> Options выбрать закладочку Packages и установить соостветсвующий значок.

2. Узнать, какие библиотеки необходимы для распространения мы можем из меню Project -> Information for Project имя_проекта. Справой стороны в окошке Used packages Вы увидите список необходимых для нормальной работы программы библиотек.
Таким образом, пользователь вправе будет сам выбирать, что ему необходимо для загрузки.

Второй вариант заключается в следующем: Приложение проектируется на COM модели, в двух частях:
- Сервер
- клиент
Вся логика выносится в серверную часть. В этом случае, пользователь установив один раз серверную часть на своем компьютере в дальнейшем будет обновлять только клиента. Конечно, при условии, что Вы правильно спроектируете Ваше приложение.
----------------------------------------
с уважением
Sir John


 
ЮрийК ©   (2004-06-26 16:08) [2]

dll-плагины отличаются от просто dll-ей?


 
vint45   (2004-06-26 17:04) [3]

> ЮрийК ©   (26.06.04 16:08) [2]
Я думаю что в малой степени. Плагин имхо, это та же сама длл, только определенного формата, что позволяет подключать программе эти длл автоматически, без изменения своего кода.

>Sir John ©   (26.06.04 16:06) [1]
Использование Package меня все-таки не устраивает из-за размеров самих Packages.
А по поводу клиент-серверной технологии отмечу следующее. Программа моя состоит из серверной части (в ней происходят основные расчеты) функционирующей на стороне веб-сайта, и клиентской части, которую пользователи должны скачивать себе на машину. Основное назначение клиентской части, это отправление запросов в виде http-пакетов на серверную часть, получение ответа, и вывода его пользователю.
Так вот, мне важно уменьшить размеры именно клиентской части, чтобы легче было передать ее пользователям через инет.


 
Sir John ©   (2004-06-26 17:16) [4]

тогда остается WinAPI. Ужасно маленькие экзешники получаются :)


 
ЮрийК ©   (2004-06-26 17:25) [5]

Спроси и на КОЛ сайте про компоненты.


 
KilkennyCat ©   (2004-06-26 18:31) [6]


> 2. Узнать, какие библиотеки необходимы для распространения
> мы можем из меню Project -> Information for Project имя_проекта.
> Справой стороны в окошке Used packages Вы увидите список
> необходимых для нормальной работы программы библиотек.
> Таким образом, пользователь вправе будет сам выбирать, что
> ему необходимо для загрузки.


Да, вот только для НОРМАЛЬНОЙ работы программы, их надо выбрать ВСЕ.


 
Knight ©   (2004-06-26 23:29) [7]

Паковать исполняемый файл не пробовал...


 
ПсихЪ_клон   (2004-06-26 23:36) [8]

А если выносить алгоритм как интерпретируемый скриптовым языком код? И затем лишь подменять этот файлик...


 
K.o.Z   (2004-06-26 23:47) [9]

Assembler :)


 
vint45   (2004-06-28 10:45) [10]

>ПсихЪ_клон   (26.06.04 23:36) [8]
Я задумывался над этим, даже пытался писать свой скриптовый язык. Но потом понял, что размер скомпилированной длл (в которой хранится только алгоритм, а интерфейс вынесен отдельно) мало отличается от размера скриптового файла. Замечу, что для скриптов, необходимо через инет первоначально скачать пользователям и сам интерпретатор, размер которого занимает немалый объем.


 
Erik1   (2004-06-28 11:06) [11]

Из выше сказаного следует, что KOL для тебя подходит. KOL не подерживает работу с протоколом HTTPS и архивами, также ее неподерживает VCL! Нечего все мешать в одну кучу. Для обшения по HTTPS нужен невизуальный компенент, непример Indy. Инитерфейс придется переписать в любом случае, так что ныйдеш замену TTrackBar и пр..
 Что касается TChart так это отденьный компонент и немаленький. Выбросить алгоритм в Dll тоже можоно, одно другово неисключает.


 
Amoeba ©   (2004-06-28 11:18) [12]


> KilkennyCat ©   (26.06.04 18:31) [6]
> Да, вот только для НОРМАЛЬНОЙ работы программы, их надо
> выбрать ВСЕ.

А вот это не соответсвует истине. Можно ограничиться только СВОИМИ пакетами.


 
vint45   (2004-06-28 12:17) [13]

> Erik1   (28.06.04 11:06) [11]

> KOL не подерживает работу с протоколом HTTPS и архивами,
> также ее неподерживает VCL! Нечего все мешать в одну кучу.

Я и не говорил, что HTTPS - это VCL. В статье о KOL, говорится, что она может работать с обычными невизуальными компонентами. Просто я имел ввиду, что есть ли HTTPS-компоненты и т.п. адаптированные под работу KOL.
Вот выдержка из текста статьи по работе с KOL:
>Использование наследников TComponent из VCL
>Начиная с версии MCK v0.71, возможно использовать невизуальные >компоненты, основанные на VCL, в визуальных проектах KOL+MCK. >Для них будет сгенерирован код, их конструирующий, и >разрушающий, присвоены события и те свойства, которые >отличаются от присваиваемых в конструкторе.
>Тем не менее, использование компонентов VCL в проектах, >основанных на KOL, не рекомендуется, так как в любом случае >они> потянут за собой очень большой объем неиспользуемого кода.
Indy-компоненты все наследодованы от класса TComponent.

И потом, основу моего пользовательского интерфейса составляет компонент TChart, а это VCL-й компонент. Отказаться от него проблематично, а использование его в KOL исключается. Есть ли ему замена?

И еще повторюсь, я не пытаюсь сделать программу, которая занимала бы несколько килобайт. Мне не подходит использование чистого API и ассемблера, как некоторые советуют (моих познаний в этой области не хватает :) ). Основной момент, это разовая прокачка через интернет интерфейсной части программы, с возможностью повторного использования ее в дальнейшем без изменений в случае изменения алгоритма программы (допустим появится дополнительное окно настройки параметров). KOL хорошая штука, но смогу ли я ей воспользоваться, пока не знаю.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2004.07.11;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.039 c
3-1087051839
Sectey
2004-06-12 18:50
2004.07.11
Подключение к MS SQL через ADO


3-1087209087
stas
2004-06-14 14:31
2004.07.11
невозможно создать файл Con.udl в WinXP


1-1088599827
Ш-К
2004-06-30 16:50
2004.07.11
Как проверить XML документ на валидность


1-1088109321
Destroyer
2004-06-25 00:35
2004.07.11
Иконка из файла на кнопке


14-1087819008
YurikGL
2004-06-21 15:56
2004.07.11
Восстановление SCSI-винта





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский