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

Вниз

Обратная связь   Найти похожие ветки 

 
Phoenix ©   (2009-09-01 08:22) [0]

Попробую вкратце описать задачу. У пользователя1 стоит клиентская программа которая отображает некоторый список данных. Другой пользователь2 забил какието данные и сохранил их. В этот момент у пользователя 1 список должен пополнится данными которые забил пользователь 2. Как подобное реализовать? Краем уха слышал что подобное можно зделать при трехзвенке , если такое и вправду реализуемо можно примерчик?


 
Mike Kouzmine   (2009-09-01 09:01) [1]

Пока не обновишь, не увидишь. База?


 
Sergey13 ©   (2009-09-01 09:13) [2]

> [0] Phoenix ©   (01.09.09 08:22)
> у пользователя 1 список должен пополнится

Почему должен то? Кому должен? Смысла в этом практически никакого. В 99.9% случаев.


 
Медвежонок Пятачок ©   (2009-09-01 09:26) [3]

Краем уха слышал что подобное можно зделать при трехзвенке

а я краем глаза видел, что пользователь №2 получает данные тогда, когда они ему реально становятся нужны


 
Phoenix ©   (2009-09-01 09:54) [4]

>>Почему должен то? Кому должен? Смысла в этом практически никакого. В 99.9% случаев.
В данном случае, пользователь1 должен увидеть что произошло некоторое изменение в данных и отреагировать на них.


 
Phoenix ©   (2009-09-01 09:56) [5]

Удалено модератором
Примечание: мат


 
Медвежонок Пятачок ©   (2009-09-01 10:08) [6]

В данном случае, пользователь1 должен увидеть что произошло некоторое изменение в данных и отреагировать на них.

Даже если он выключил программу и пошел пописать?


 
Sergey13 ©   (2009-09-01 10:13) [7]

> [4] Phoenix ©   (01.09.09 09:54)
> В данном случае

Опиши предметную область твоего "случая".

> [5] Phoenix ©   (01.09.09 09:56)

вот именно по программированию, потому за базаром следи.


 
Alf   (2009-09-01 10:22) [8]


> Phoenix ©   (01.09.09 08:22)  

Решение простое - бродкаст месседж


 
pavel_guzhanov ©   (2009-09-01 10:24) [9]

в базе делай триггер, который реагирует на изменения и выдает event. У пользователя1 программа реагирует на event и обновляет данные из базы.


 
Alf   (2009-09-01 10:26) [10]


> pavel_guzhanov ©   (01.09.09 10:24) [9]
> в базе делай триггер, который реагирует на изменения и выдает event.

Интересно - у него база умеет делать евенты :) или может вообще базы никакой нет...


 
Сергей М. ©   (2009-09-01 10:26) [11]


> пользователь1 должен увидеть что произошло некоторое изменение
> в данных и отреагировать на них


Например, настучать по репе пользователю2, который не спрося разрешения у пользователя1 взял да изменил тот же самый элемент списка, который пользователь1 в поте лица набирал целый час ?


 
Alf   (2009-09-01 10:28) [12]


> Сергей М. ©   (01.09.09 10:26) [11]

Эта проблема решаема очень просто


 
pavel_guzhanov ©   (2009-09-01 10:28) [13]


> > pavel_guzhanov ©   (01.09.09 10:24) [9]
> > в базе делай триггер, который реагирует на изменения и
> выдает event.
>
> Интересно - у него база умеет делать евенты :) или может
> вообще базы никакой нет...


Ну да, видимо надо было написать вначале "Если спользуется база, и она умеет делать эвенты..." :о)


 
Phoenix ©   (2009-09-01 10:33) [14]

Короче. Предметная область - приём заявок по техническому обслуживанию. Т.е пользователь забивает заявку на обслуживание. Как только он её забил и сохранил у системотехника должен появится "флажок" мол новая завка обрати внимание и обновится перечень заявок.
База Firebird 1.5


 
Ega23 ©   (2009-09-01 10:38) [15]


> Как только он её забил и сохранил у системотехника должен
> появится "флажок" мол новая завка обрати внимание и обновится
> перечень заявок.


Вот и запрашивай по таймеру - а не появилось ли новых заявок? Очень простой запрос, очень лёгкий. И если что-то пришло в БД новое - пусть у твоего "системотехника" в углу формы флажок моргает, типа аськи. А вот захочет он обновить у себя данные или нет - это уже исключительно его личное дело.


 
Сергей М. ©   (2009-09-01 10:40) [16]


> у системотехника должен появится "флажок" мол новая завка
> обрати внимание и обновится перечень заявок


Ну вот он увидел этот флажок, открыл перечень заявок и .. не увидел новую заявку ! Потому что юзер набив заявку тут же, скажем, уничтожил ее как ошибочную.. Что, еще один флажок вешать, типа ложная тревога ?)


 
Phoenix ©   (2009-09-01 10:45) [17]


> Вот и запрашивай по таймеру - а не появилось ли новых заявок?
>  Очень простой запрос, очень лёгкий. И если что-то пришло
> в БД новое - пусть у твоего "системотехника" в углу формы
> флажок моргает, типа аськи.

Рассматривал этот вариант но я вообще хотел узнать как можно реализовать вариант именно с обратной работой от сервера к клиенту, как это реализовать.

> Что, еще один флажок вешать, типа ложная тревога ?)

Нет. Пользователь не имеет возможности удалять заявку а только менять её статус, т.е если изменить статус на "ошибочная".


 
Сергей М. ©   (2009-09-01 10:52) [18]


> только менять её статус


Да какая разница ?
Все равно ложная тревога.

Ну а в целом, если не боишься что юзер и системотехник тебя поколотят за непродуманную логику, можешь задействовать механизм FB-ивентов, если его использование позволяют сетевые условия.


 
Ega23 ©   (2009-09-01 10:53) [19]


> Рассматривал этот вариант но я вообще хотел узнать как можно
> реализовать вариант именно с обратной работой от сервера
> к клиенту, как это реализовать.


Единственно универсальный способ - с клиента мониторить данные на сервере. Всякие триггера, UDP-рассылка и т.п. со стороны сервера, в общем случае, ненадёжны.
Как реализовывать мониторинг со стороны клиента - есть масса способов. Начиная от обновления по таймеру "всего" (отвратительный способ), обновление по таймеру только того, что произошло с момента последнего обновления, мониторинг изменений в БД с нотификацией пользователю и т.д.

З.Ы. Как только какая-то программа начинает себя из интернета обновлять без моего ведома, а также если у этой программы нет возможности отключения самообновления - я такую программу моментально сношу.


 
pavel_guzhanov ©   (2009-09-01 11:14) [20]

Firebird 1.5 может делать эвенты. Обрати внимание на

pavel_guzhanov ©   (01.09.09 10:24) [9]


 
Медвежонок Пятачок ©   (2009-09-01 11:37) [21]

Firebird 1.5 может делать эвенты. Обрати внимание на

Аха....
Юзер №1 ввел заявку.
Сработал евент.
Юзер номер два должен ее обработать.
Но он в это время ходил курить и программа была выключена.
Либо он ребутил комп во время этого самого евента.
Пришел он с покурки (или загрузил программу) - и где будет тот евент?


 
Сергей М. ©   (2009-09-01 11:43) [22]


> Пришел он с покурки .. - и где будет тот евент?


А поколотят-то в результате автора сего программного шедевра)



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

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

Наверх




Память: 0.5 MB
Время: 0.046 c
2-1250865488
Л.Д.
2009-08-21 18:38
2009.10.25
TListView


1-1220597243
Mephala
2008-09-05 10:47
2009.10.25
Какой выбрать разделитель при передаче параметров


15-1250689966
antonn
2009-08-19 17:52
2009.10.25
Подсобите с прогоном теста


11-1207080348
Lotos
2008-04-02 00:05
2009.10.25
Splitter


2-1251721550
AndrewG
2009-08-31 16:25
2009.10.25
Splitter





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский