Как создать совместимый веб-сервис на основе push-уведомлений? - PullRequest
2 голосов
/ 30 января 2011

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

Нам нужно, чтобы этот сервис был совместим с максимально возможным количеством клиентов за пределами платформы. Поэтому основанный на стандартах путь кажется хорошим.

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

Существует ли основанный на стандартах способ публикации pub-sub или какой-либо другой способ уведомления клиентов об интересных событиях?

Существует WS-Eventing, похоже, что для него нет широкой поддержки фреймворка.

Ответы [ 3 ]

2 голосов
/ 01 февраля 2011

Проверьте Comet, Ajax push и т. Д .: http://en.wikipedia.org/wiki/Comet_(programming))

Это специфично для JavaScript, но может хорошо работать с любым типом асинхронного клиента.Клиент "опрашивает" сервер.Затем сервер удерживает соединение, пока не появятся данные.Затем процесс повторяется.Однако необходимо учитывать тайм-ауты клиента.

Без того, чтобы клиент реализовал свою собственную службу, это примерно то, к чему вы приблизитесь к механизму push.Я не уверен, стоит ли сохранять все эти открытые соединения дороже или клиенту проводить настоящий опрос.В целом, я бы сказал, что чем дольше период между каждым опросом, тем лучше будет традиционный опрос.Хотя, если ваши серверы могут обрабатывать дополнительные подключения, у вас будет намного меньше задержка уведомлений.

2 голосов
/ 01 февраля 2011

В интересах других, я бы хотел выдвинуть идею использования XMPP для достижения этой цели. XMPP (ранее Jabber) - это стандарт IETF, который работает как электронная почта для обеспечения мгновенного обмена сообщениями с использованием расширяемого протокола на основе XML. Он также предлагает TLS для канального шифрования и SASL для аутентификации. XMPP также является основой Google Talk. Можно запустить сервер XMPP с использованием программного обеспечения с открытым исходным кодом, такого как Jabber, и, в крайнем случае, возможно использовать инфраструктуру Google Talk для передачи сообщений.

Существуют библиотеки XMPP для упрощения разработки клиентов и серверов.

1 голос
/ 31 января 2011

Мы можем поменять типичные роли хоста и клиента сервиса. Мы предоставим клиентам контракт WSDL, и им потребуется разместить веб-службу базового профиля, соответствующую этому контракту. Был бы простой метод веб-сервисов, который мы, в роли клиента, но являющегося поставщиком сервиса, могли бы использовать для уведомления клиента об интересном событии.

...