Подтвердить что ты не робот

WCF REST Push Stream Service

Нужна помощь в выяснении того, что я ищу. В принципе, мне нужна служба, в которой Server сбрасывает кучу XML в поток (в течение определенного периода времени), и каждый раз, когда возникает дамп N количество клиентов считывает дамп.

Пример. Каждый раз, когда одна из акций 1000 увеличивается на 5 центов, служба выгружает некоторый XML в поток. Соединительные приложения захватывают информацию из потока.

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

Это нужно придерживаться стандартов WCF REST, есть ли что-то там, что я ищу?
В конце концов, это просто непрерывный поток данных.

Обновление: похоже, что услуга должна быть многокомпонентным/смешанным типом контента.

4b9b3361

Ответ 1

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

Нажатие данных с сервера на клиент (а не только на клиентов браузера) всегда была сложной проблемой. SignalR делает его мертвым легко и обрабатывает весь тяжелый подъем для вас.

Скотт Ханслман хороший блог по этому вопросу, и здесь есть полезная статья (включая WCF, REST и SignalR): http://www.codeproject.com/Articles/324841/EventBroker

Ответ 2

Вместо использования WCF загляните в ASP.NET MVC WebAPI?

Для получения дополнительной информации об использовании PushStreamContent в WebAPI, Henrik имеет приятный blog с примером (под заголовком "Push Content" ).

Ответ 3

Рассматривали ли вы архивные каналы Atom? Они являются 100% RESTful (элементы управления гипермедиа и все) и, самое главное, они очень масштабируемы.

В частности, архивные документы никогда не меняются, поэтому вы можете установить срок действия кеша 1 год или более. Документ подписки содержит все новые события, которые постоянно меняются, но с соответствующими заголовками кеширования HTTP вы можете сделать так, чтобы вы вернули 304 Not Modified если ничего не изменилось между каждым запросом клиента. Кроме того, если у вас есть естественное временное разрешение, вы можете установить max-age, чтобы воспользоваться этим. Например, если данные имеют разрешение 20 минут, вы можете включить в ответ на подписку следующий заголовок:

Cache-Control: max-age=1200

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