WCF REST推送流服务

时间:2012-10-08 14:21:44

标签: c# wcf rest

需要一些帮助来弄清楚我在寻找什么。基本上,我需要一种服务,其中Server将一堆XML转储到流中(在一段时间内),每次转储发生N个客户端读取转储。

示例:每当1000个股票中的一个上涨5美分时,该服务会将一些XML转储到流中。连接应用程序从流中获取信息。

我认为连接不会关闭,因为需要读取新数据流的内容。

这需要遵循WCF REST标准,那里有什么我正在寻找的东西吗?
最后,它只是一个不间断的数据流。

更新:看起来该服务需要是多部分/混合内容类型。

3 个答案:

答案 0 :(得分:6)

我正在开发的应用程序具有类似的体系结构,我计划使用SignalR使用长轮询技术将更新推送到客户端。 我还没有实现它,所以我不能发誓它会对你有用,但是他们的文档似乎很有希望:更新:我现在已经实现了它,并且它运行得很好。

  

将数据从服务器推送到客户端(而不仅仅是浏览器客户端)   一直是一个棘手的问题。 SignalR让它变得简单易行   处理所有繁重的工作。

Scott Hansleman关于这个主题有a good blog,这里有一篇有用的文章(涉及WCF,REST和SignalR):http://www.codeproject.com/Articles/324841/EventBroker

答案 1 :(得分:3)

您是否考虑ASP.NET MVC WebAPI而不是使用WCF?

有关在WebAPI中使用PushStreamContent的更多信息,Henrik有一个很好的blog示例(标题为'推送内容')。

答案 2 :(得分:2)

您考虑过archived Atom feeds了吗?它们是100%RESTful(hypermedia controls and all),最重要的是,它们具有很强的可扩展性

具体而言,存档文档永远不会更改,因此您可以将缓存过期设置为1年或更长时间。订阅文档是所有最新事件发生并且不断变化的地方,但是如果使用适当的HTTP缓存标头,您可以返回304 Not Modified,如果每个客户端请求之间没有任何更改。此外,如果您的服务具有自然时间分辨率,则可以设置max-age以利用该功能。例如,如果数据的分辨率为20分钟,则可以在订阅文档响应中包含以下标题:

Cache-Control: max-age=1200

通过这种方式,您可以让缓存完成大部分的提升,客户可以随时轮询订阅文档,而不会将您的服务带到它的膝盖上。