olegenty |
Отправлено: 18.08.2005, 13:51 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
вопрос: кто чем пользуется, организуя "минимальную" связь модулей? интересуют ваши за и против (и какими ещё методами пользуетесь)?
|
|
Vlad |
Отправлено: 18.08.2005, 16:05 |
|
Машинист паровоза
Группа: Участник
Сообщений: 231
|
в каждом конкретном случае — по разному. Однозначно, трудно сказать.
Нужно подумать, проанализировать. |
|
olegenty |
Отправлено: 18.08.2005, 16:18 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
вот я собственно за анализом обратился
|
|
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
|
а документация есть? |
|
Gedeon |
Отправлено: 20.12.2005, 09:10 |
|
Ветеран
Группа: Модератор
Сообщений: 1742
|
QUOTE (Георгий @ 19/12/2005, 22:08) | а документация есть? |
Зря, Георгий, смеетесь, куча проделанной работы, без документации, как правило, ничего не стоит.
|
|
avc* |
Отправлено: 20.12.2005, 09:51 |
|
Не зарегистрирован
|
QUOTE |
куча проделанной работы, без документации, как правило, ничего не стоит
|
Это конечно так, но как редко доходит до нормальной документации. Обычно работа останавливается на этапе "заметки на полях". |
|
Gedeon |
Отправлено: 20.12.2005, 09:54 |
|
Ветеран
Группа: Модератор
Сообщений: 1742
|
QUOTE (avc* @ 20/12/2005, 09:51) | Это конечно так, но как редко доходит до нормальной документации. Обычно работа останавливается на этапе "заметки на полях". |
А с этим-то я как раз и не спорю, сам такой же, раз в три месяца посещает желание, привести все в порядок, хватает, обычно, на день (1 раз на 2, вот тогда и был написан хэлп к библиотеке, которой до сих пор пользуюсь не только я), все остальное используется только мной и то не уверенно.
|
|
olegenty |
Отправлено: 20.12.2005, 12:36 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
где-то есть, где-то нет...
но критики хочется, так что, кто разберётся — критикуйте...
ставить пакеты в том порядке, что они приложены...
пакет 1 (OUtils), мелкий, ещё развивающийся, свои тулзы туда пока не слил, но он всё же используется в других пакетах.
|
|
olegenty |
Отправлено: 20.12.2005, 12:38 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
Пакет 2 (OAdapterUtils) — шаблоны вспомогательных классов для использования в шаблонах адаптеров.
|
|
olegenty |
Отправлено: 20.12.2005, 12:40 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
Пакет 3 (OAdapter) — шаблон адаптера
|
|
olegenty |
Отправлено: 20.12.2005, 12:43 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
Пакет 4 (OPlugin) — шаблон плагина на базе адаптера (эти плагины у меня находятся в DLL, а с главной формой и между собой общаются посредством адаптера. единственное исключение — событие завершения инициализации, посылаемое главной формой плагину, и событие закрытия плагина, посылаемое плагином главной форме).
|
|
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
|
|
Gedeon |
Отправлено: 17.01.2006, 09:48 |
|
Ветеран
Группа: Модератор
Сообщений: 1742
|
2olegenty Вы уж озаботьтесь написанием хоть минимальной документации, или на худой конец демо проектом, тогда получите и тестирование и критику, в том числе и от меня. .
Успехов.
|
|
olegenty |
Отправлено: 17.01.2006, 12:38 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
ок, следующее сообщение будет с примером использования.
|
|