Запустить событие по сети - PullRequest
0 голосов
/ 17 февраля 2009

С чего бы начать с запуска события по сети? В моем случае, когда я изменяю запись в базе данных, я хочу проинформировать любого другого пользователя в сети, работающей с тем же приложением, что он изменился.

Edit:

Ничего умного, не волнуйся. Я пишу систему управления документами, и когда документ каким-либо образом изменяется (удаляется, извлекается, выдается и т. Д.), Я хочу «рассказать» всем, что что-то изменилось. Я собирался использовать FileSystemWatcher для просмотра папки на сервере, подписывать каждый экземпляр до его события «Удалено» и просто создавать и удалять файл в каталоге отслеживания, но это просто грязно, не так ли? Как вы можете сказать, я не профессиональный программист:)

Ответы [ 5 ]

2 голосов
/ 17 февраля 2009

Какой срок уведомления у вас после? Я лично хотел бы, чтобы клиентские машины опрашивали сервер на предмет обновлений - например, «Мое последнее обновление было 17/02/2009 11:56:00 - что изменилось с тех пор?» - путем внедрения веб-службы или простого сервера на основе сокетов на реальном сервере.

В противном случае, если это распределенное приложение, вашей самой простой ставкой была бы широковещательная рассылка UDP - при условии, что они находятся в одной подсети и не разделены маршрутизаторами на 20 градусов.

Не могли бы вы рассказать нам немного больше о вашей ситуации?

0 голосов
/ 17 февраля 2009

Как вы отслеживаете изменения файлов?

Я предполагаю, что вы используете базу данных (если нет, сейчас самое время ее настроить) - в этом случае я бы порекомендовал написать веб-сервис ASP.NET (расширение .asmx - Visual Studio может сделать их действительно простыми). ) связаться с этой базой данных и сообщить клиенту, были ли какие-либо файлы изменены с момента последней проверки.

Попробуйте создать веб-сервис для сервера в Visual Studio, чтобы увидеть, как это делается. Чтобы использовать («использовать») веб-сервис на клиентском компьютере, откройте проект VS, щелкните правой кнопкой мыши узел «Ссылки» под проектом и выберите «Добавить веб-ссылку».

Однако клиент должен будет опросить веб-службу, поскольку это однонаправленный механизм типа "вызов-ответ".

Преимущество этого в том, что вам не нужно беспокоиться о сетевых ресурсах и подобных вещах. Недостатком, однако, является то, что вам нужен веб-сервер с поддержкой ASP.NET и ядро ​​базы данных, если они еще не присутствуют.

0 голосов
/ 17 февраля 2009

WCF может сделать это для вас. У меня есть сервер, который отправляет и сигнализирует всем клиентам, когда что-то происходит.

0 голосов
/ 17 февраля 2009

Попросите клиентов зарегистрироваться в центральном приложении. Всякий раз, когда клиент обновляет запись, он может уведомить центральное приложение, которое затем передает его зарегистрированным клиентам.

Определитесь с транспортным механизмом, но, возможно, вы захотите рассмотреть розетки.

0 голосов
/ 17 февраля 2009

Каждый экземпляр вашего клиентского приложения может прослушивать сокет сообщений.

Когда ваше серверное приложение изменяет запись базы данных (от имени клиента или по любой другой причине), оно также вставляет сообщение «что-то изменило» в очередь сообщений для каждого клиента.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...