Я думаю, что «лучшая практика» здесь будет зависеть от количества настольных клиентов, которых вы ожидаете обслуживать. Если есть только один рабочий стол, который будет уведомлен, тогда опрос вполне может быть прекрасным подходом - да, опрос намного больше накладных расходов, чем уведомление на основе событий, но это, безусловно, будет самым простым решением для реализации.
Если накладные расходы опроса действительно неприемлемо, то я вижу две основные альтернативы:
- Держите постоянное соединение открытым между настольным компьютером и веб-сервера (может быть -стиль веб-запрос «Комета», или соединение с сырым гнездом)
- Предоставьте услугу из приложения для настольных компьютеров и зарегистрируйте адрес службы на веб-сервере. Таким образом, веб-сервер может потребоваться на рабочем столе по мере необходимости.
Будьте осторожны, однако - обе альтернативы полны захлебков.Несколько основных моментов:
- Сохраняя соединение открытым может быть сложно, так как вы хотите, чтобы ваши веб-серверы, чтобы быть горячей замены
- Вызов к внешней службы (например, на рабочем столе) с веб-сервера является опасным, поскольку этот запрос может зависать. Вы хотите переместить это уведомление на отдельный поток, чтобы избежать привязки веб-сервера.
Чтобы смягчить некоторые проблемы, вы можете отделить ненадежный рабочий стол от веб-сервера, представив сервер промежуточных уведомлений - веб-сервер может опубликовать обновление где-нибудь, и рабочий стол может опросить/подключиться/зарегистрируйтесь, чтобы получить уведомление. Чтобы избежать повторного использования колеса здесь, это может включать в себя некоторую систему MessageQueue ... Это, конечно же, добавляет сложность необходимости поддерживать новый посредник.
Опять же, все эти подходы, вероятно, довольно сложны, поэтому я бы сказал, что опрос, вероятно, лучший вариант.
Было ли мое предложение убедить вас? – Ahmy
Нет, это по сути то же самое, что я предложил в моем вопросе. Я все еще жду чего-то еще. Но я не получу лучшего решения, я приму свой ответ :) –