2012-10-08 186 views
12

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

:每次1000股之一的5美分上升,服务转储一些XML成流。连接应用程序从流中获取信息。

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

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

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

+0

你在寻找类似Twitter的流API。 https://stream.twitter.com/1/statuses/sample.json –

+0

是的,这是我正在寻找的。但是从WCF/REST的角度来看。 – Dave

回答

6

我正在使用的应用程序具有类似的体系结构,我打算使用SignalR使用长轮询技术将更新推送到客户端。 我还没有实现它,所以我不能发誓它会为你工作,但他们的文档似乎很有前途: 更新:我已经实现了这一点,它的工作得很好。

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

斯科特Hansleman对主题a good blog,有一个有用的文章(包括WCF,REST和SignalR)位置:http://www.codeproject.com/Articles/324841/EventBroker

3

而不是使用WCF,你看看ASP.NET MVC WebAPI

有关在WebAPI中使用PushStreamContent的更多信息,Henrik通过示例(在'Push Content'标题下)有一个不错的blog

2

你考虑过archived Atom feeds吗?他们是100%RESTful(hypermedia controls and all),最重要的是,他们是非常可扩展的,他们是

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

Cache-Control: max-age=1200 

这样你可以让你的缓存做大部分的起伏升降和客户端可以查询申购尽可能多地记录文档,而不会将您的服务带到膝盖上。