12

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

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

我认为连接永远不会关闭,因为需要有一些东西读取流以获取新数据。

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

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

4

3 回答 3

6

我正在处理的一个应用程序具有类似的架构,我计划使用SignalR使用长轮询技术将更新推送到客户端。我还没有实现它,所以我不能发誓它会为你工作,但他们的文档似乎很有希望:更新:我现在已经实现了,而且效果很好。

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

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

于 2012-10-31T18:48:26.147 回答
3

而不是使用 WCF,您是否研究过ASP.NET MVC WebAPI

有关在 WebAPI 中使用 PushStreamContent 的更多信息,Henrik 有一个很好的博客示例(在标题“推送内容”下)。

于 2012-10-08T17:24:14.777 回答
2

您是否考虑过存档的 Atom 提要?它们是 100% RESTful(超媒体控件和所有),最重要的是,它们具有很强的可扩展性

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

Cache-Control: max-age=1200

这样,您可以让您的缓存完成大部分繁重的工作,并且客户可以根据需要随时轮询订阅文档,而不会影响您的服务。

于 2012-10-29T11:47:10.937 回答