Когда пользователь обновляет некоторые данные в нашем приложении .net, наш сервер отправляет обновления заинтересованным клиентам, сообщая им, что эти данные обновлены.В настоящее время каждый клиент также является сервером (т. Е. Они прослушивают порт), сервер отслеживает, какие клиенты вошли в систему, и отправляет им сообщения об обновлениях через удаленное взаимодействие.
Это работает хорошо, но имеет потенциальные проблемы, поскольку брандмауэры должныбыть настроен для разрешения доступа к клиентским ПК.
Есть несколько способов, которые я вижу, чтобы обойти это, но у каждого есть свои недостатки.В настоящее время я изучаю wcf или систему очередей типа msmq, однако у меня нет никакого опыта с ними, и кривая обучения кажется крутой.Другие варианты, которые я имею в виду:
- Получение клиентов для вызова метода сервера, который не возвращается, пока не появится сообщение - потенциальные проблемы с таймаутами, отключениями и т. Д.?
- Изменитьв WCF и использовать обратные вызовы - не уверены, требует ли это, чтобы клиент был конечной точкой?
- Использовать таймер и проверять сообщения каждые несколько секунд - возможность затопить сеть
Есть ли другой способ, которым это может быть реализовано?Я рассматриваю это как проблему, которая, вероятно, уже решена, так что, надеюсь, реализация будет простой.В идеале ни один подключенный клиент не должен пропустить сообщение, и это может быть использовано для других типов обновлений, например.ход выполнения обновлений серверных заданий и т. д.