C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Callback против SendMessage/PostMessage
olegenty
Отправлено: 18.08.2005, 13:51


Ветеран

Группа: Модератор
Сообщений: 2412



вопрос: кто чем пользуется, организуя "минимальную" связь модулей? интересуют ваши за и против (и какими ещё методами пользуетесь)?
Vlad
Отправлено: 18.08.2005, 16:05


Машинист паровоза

Группа: Участник
Сообщений: 231



в каждом конкретном случае — по разному. Однозначно, трудно сказать.
Нужно подумать, проанализировать. wink.gif
olegenty
Отправлено: 18.08.2005, 16:18


Ветеран

Группа: Модератор
Сообщений: 2412



вот я собственно за анализом обратился smile.gif
Gedeon
Отправлено: 18.08.2005, 18:10


Ветеран

Группа: Модератор
Сообщений: 1742



Да и мне интерсно было бы, в основном делаю Send/Post, колбэки применял только раз и то для эксперимента.
olegenty
Отправлено: 19.08.2005, 17:23


Ветеран

Группа: Модератор
Сообщений: 2412



вот я тоже send/post, но когда работаешь в одном потоке, они встают в очередь, гады, и поэтому приходится пользоваться callback — чтобы вызвать там, где надо, и реакция была мгновенной.
Георгий
Отправлено: 20.08.2005, 16:29


Почетный железнодорожник

Группа: Модератор
Сообщений: 874



а я наоборот callback люблю. одно время использовал абстрактные интерфейсы, а теперь boost::bind.
если же модули оп своей архитектуре работают параллельно, то те же callback за которыми скрывается либо функция сериализации, либо проблемно-ориентированная очередь.

у callback, как их не оформляй — хоть вызов функци по указателю, хоть метода по абстрактному интерфейсу, хоть boost::bind очень высокий КПД. и проще программирование — не надо писать всякие while( есть сообщение) или if (есть сообщение), что упрощает дальнейшую поддержку кода
olegenty
Отправлено: 22.08.2005, 07:50


Ветеран

Группа: Модератор
Сообщений: 2412



угу, вот я из-за поддержки в основном. пришлось как-то на днях попотеть с отладкой: забыл про собственную мессагу, и никак понять не мог, ну ОТКУДА, мать его, эффект. а с Callback всё просто и понятно.
Sergey Boyko
Отправлено: 22.09.2005, 14:29


Ученик-кочегар

Группа: Участник
Сообщений: 4



"PostMessage" использую в основном для асинхронной связи между потоками (при отображении данных и т.п.).
А так — "в бою callback надежней".
Особенно, если не забывать, что использование send/post привязывает ваш код к определенной платформе.

Отредактировано Sergey Boyko — 22/09/2005, 14:30
olegenty
Отправлено: 22.09.2005, 14:37


Ветеран

Группа: Модератор
Сообщений: 2412



ну я уже тоже определился — перепишу (благо не очень много) всё на импользование того класса CSDICallback, что выложил тут и на borland.xportal.ru. вроде достаточно гибко получается, и сопровождать одно удовольствие. главное — функции не забывать регистрировать.
RVN
  Отправлено: 21.10.2005, 07:54


Ученик-кочегар

Группа: Участник
Сообщений: 17



Прошу прощения, что вмешиваюсь в разговор мастеров, но тема для меня интересная.
Работаю с базой PARADOX и BDE. Использую BCB6.
Основное приложение (не мое) использует DbiRegisterCallBack.
Мое приложение на локальной машине с базой работает нормально.
Т.е. если я своим приложением изменил данные, основная программа их видит и обновляет отображаемую информацию.И наоборот.
При работе по локальной сети все не так.
Изменения, сделанные моей программой, обновляются через пень-колоду.
Спрашивал на форумах описание DbiRegisterCallBack, просмотров много,но ответов нет.
По моему, класс CSDICallback поможет решить мою проблемму.
Большая просьба: дайте ссылки, где можно черпнуть информацию по этой теме.
olegenty
Отправлено: 24.10.2005, 10:56


Ветеран

Группа: Модератор
Сообщений: 2412



подожди пару дней — выложу последний вариант. причёсываю как раз, в простенькие классы организоваываю. а то, по прошествии времени, неудобно разбирать first, second и пр.
olegenty
Отправлено: 19.12.2005, 16:48


Ветеран

Группа: Модератор
Сообщений: 2412



вот теперь думаю, выкладывать, или нет?
разбил всё на пакеты, классы превратил в шаблоны, чтобы в будущем можно было всего лишь делать специализацию... для меня всё это стало удобнее, а вот для не меня — придётся очень долго разбираться.

выкладывать?
Георгий
Отправлено: 19.12.2005, 22:08


Почетный железнодорожник

Группа: Модератор
Сообщений: 874



а документация есть? biggrin.gif
Gedeon
Отправлено: 20.12.2005, 09:10


Ветеран

Группа: Модератор
Сообщений: 1742



QUOTE (Георгий @ 19/12/2005, 22:08)
а документация есть? biggrin.gif

Зря, Георгий, смеетесь, куча проделанной работы, без документации, как правило, ничего не стоит.
avc*
Отправлено: 20.12.2005, 09:51


Не зарегистрирован







QUOTE

куча проделанной работы, без документации, как правило, ничего не стоит

Это конечно так, но как редко доходит до нормальной документации. Обычно работа останавливается на этапе "заметки на полях". smile.gif
Gedeon
Отправлено: 20.12.2005, 09:54


Ветеран

Группа: Модератор
Сообщений: 1742



QUOTE (avc* @ 20/12/2005, 09:51)
Это конечно так, но как редко доходит до нормальной документации. Обычно работа останавливается на этапе "заметки на полях". smile.gif

А с этим-то я как раз и не спорю, сам такой же, раз в три месяца посещает желание, привести все в порядок, хватает, обычно, на день (1 раз на 2, вот тогда и был написан хэлп к библиотеке, которой до сих пор пользуюсь не только я), все остальное используется только мной и то не уверенно.
olegenty
Отправлено: 20.12.2005, 12:36


Ветеран

Группа: Модератор
Сообщений: 2412



где-то есть, где-то нет...
но критики хочется, так что, кто разберётся — критикуйте...

ставить пакеты в том порядке, что они приложены...

пакет 1 (OUtils), мелкий, ещё развивающийся, свои тулзы туда пока не слил, но он всё же используется в других пакетах.

User Attached Image Скачать файл
OUtils.zip


olegenty
Отправлено: 20.12.2005, 12:38


Ветеран

Группа: Модератор
Сообщений: 2412



Пакет 2 (OAdapterUtils) — шаблоны вспомогательных классов для использования в шаблонах адаптеров.


User Attached Image Скачать файл
OAdapterUtils.zip


olegenty
Отправлено: 20.12.2005, 12:40


Ветеран

Группа: Модератор
Сообщений: 2412



Пакет 3 (OAdapter) — шаблон адаптера


User Attached Image Скачать файл
OAdapter.zip


olegenty
Отправлено: 20.12.2005, 12:43


Ветеран

Группа: Модератор
Сообщений: 2412



Пакет 4 (OPlugin) — шаблон плагина на базе адаптера (эти плагины у меня находятся в DLL, а с главной формой и между собой общаются посредством адаптера. единственное исключение — событие завершения инициализации, посылаемое главной формой плагину, и событие закрытия плагина, посылаемое плагином главной форме).

User Attached Image Скачать файл
OPlugin.zip


olegenty
Отправлено: 20.12.2005, 14:22


Ветеран

Группа: Модератор
Сообщений: 2412



Смотрю кто-то качнул только один пакет (последний). А качать надо все. И разбирать в порядке, в котором я их опубликовал.
olegenty
Отправлено: 20.12.2005, 18:35


Ветеран

Группа: Модератор
Сообщений: 2412



да, и я вот только вчера вышел на работу из отпуска, который просидел с сыном. это я к тому, что там есть ошибки, вот уже четвёртый час не могу один AV отловить...
olegenty
Отправлено: 21.12.2005, 16:26


Ветеран

Группа: Модератор
Сообщений: 2412



AV отловил — CTable надо порождать от vector, тогда наступает счастье.
olegenty
Отправлено: 17.01.2006, 07:54


Ветеран

Группа: Модератор
Сообщений: 2412



версия, в которой не наблюдается никаких ошибок, ушедшая в опытную эксплуатацию (в составе реального проекта). Пакеты ставить в порядке:
1. OUtils
2. OAdapterUtils
3. OAdapter
3.1 (для работы с ADO, а вообще — пример потомка, для установки не обязателен) OADOAdapter
4. OPlugin
4.1 (для работы с ADO, а вообще — пример потомка, для установки не обязателен, требует OADOAdapter) OADOPlugin



User Attached Image Скачать файл
Adapter_Plugin.zip


Gedeon
Отправлено: 17.01.2006, 09:48


Ветеран

Группа: Модератор
Сообщений: 1742



2olegenty Вы уж озаботьтесь написанием хоть минимальной документации, или на худой конец демо проектом, тогда получите и тестирование и критику, в том числе и от меня. smile.gif .
Успехов.
olegenty
Отправлено: 17.01.2006, 12:38


Ветеран

Группа: Модератор
Сообщений: 2412



ок, следующее сообщение будет с примером использования.

Вернуться в Аспекты и идеология профессиональной разработки ПО