【问题标题】:WCF REST Push Stream ServiceWCF REST 推送流服务
【发布时间】:2012-10-08 14:21:43
【问题描述】:

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

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

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

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

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

【问题讨论】:

标签: c# wcf rest


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    您没有使用 WCF,而是查看了ASP.NET MVC WebAPI

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

    【讨论】:

      【解决方案3】:

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

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

      Cache-Control: max-age=1200
      

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

      【讨论】:

        猜你喜欢
        • 2016-12-11
        • 1970-01-01
        • 2021-06-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多