WCF REST 推送流服务

12

我需要一种服务来实现以下功能: Server 定期向流中转储 XML,每次转储发生时,N 个客户端读取数据。

例如,每当一支股票上涨了 5 分钱时,服务就会将一些 XML 转储到流中。连接的应用程序从流中获取信息。

由于需要有某个程序读取新数据的流,因此我认为连接永远不会关闭。

这需要遵循 WCF REST 标准,是否有符合要求的解决方案?最终,它只是一个不间断的数据流。

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


你是否在寻找类似 Twitter 流式 API 的东西。https://stream.twitter.com/1/statuses/sample.json - L.B
是的,这正是我在寻找的。但从 WCF/REST 的角度来看。 - Dave
3个回答

6
我正在开发的应用程序具有类似的架构,计划使用SignalR通过长轮询技术向客户端推送更新。 我还没有实施过,所以不能保证它对您有效,但他们的文档看起来很有前途: 更新:我现在已经实施了它,并且运行得非常好。

从服务器向客户端(不仅仅是浏览器客户端)推送数据一直是一个棘手的问题。 SignalR使其变得非常简单,并为您处理所有繁重的工作。

Scott Hansleman在这个主题上有一篇好博客,这里还有一篇有用的文章(涉及WCF、REST和SignalR):http://www.codeproject.com/Articles/324841/EventBroker


3

你有没有考虑使用ASP.NET MVC WebAPI代替WCF呢?

如果想了解如何在WebAPI中使用PushStreamContent,可以参考Henrik的博客,里面有很好的示例(在“Push Content”标题下)。


2
您考虑过存档Atom订阅源吗?它们是100% RESTful(包括超媒体控件),最重要的是,它们非常可扩展
具体来说,存档文档永远不会改变,因此您可以设置1年或更长时间的缓存到期。订阅文档是所有最新事件发生的地方,而且不断变化,但使用适当的HTTP缓存头,如果每个客户端请求之间没有发生变化,您可以返回304未修改。此外,如果您的服务具有自然时间分辨率,您可以设置max-age以利用这一点。例如,如果您的数据具有20分钟的分辨率,则可以在订阅文档响应中包含以下标头:
Cache-Control: max-age=1200

这样,您可以让缓存承担大部分负载,客户端可以随意轮询订阅文档,而不会使您的服务崩溃。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接