【问题标题】:WCF REST Streamed GET responseWCF REST 流式 GET 响应
【发布时间】:2015-02-11 14:08:34
【问题描述】:

我需要从 WCF 服务返回流式响应。

客户端会在 WCF REST URI 上调用 GET,而服务器会在可用时发送 XML 响应。如果没有可用的响应,服务器将每隔几秒发送一个虚拟 XML 响应以保持连接处于活动状态。

我知道理想情况下这应该使用 Signal R (WebSockets) 来完成,但我想知道是否有办法在 WCF 中实现这一点(不使用 Signal R)。 我不必返回大数据,我想发送间歇性的小型 XML 数据。

如果有人使用 WCF REST 实现了类似的目标,请告诉我?

【问题讨论】:

  • 那么您想使用 WCF 在客户端和服务器之间创建持久连接吗?像这样的东西 - msdn.microsoft.com/en-us/library/ms751463%28v=vs.110%29.aspxcodeproject.com/Articles/166763/…?基本上,您要绑定的是 transferMode="Streaming"
  • 感谢 timothyclifford 对此进行调查。是的,在客户端向 WCF REST 服务发出 GET 后,我需要客户端和服务器之间的持久连接。提供的示例是以流模式流式传输大文件。我有小的 XML 数据需要在可用时从服务器流式传输到客户端(就像 Twitter 提要一样)。我已将 transferModel 设置为“StreamedResponse”。

标签: c# xml wcf rest


【解决方案1】:

我不确定你使用 WebAPI 有多灵活,如果它不是你想要的,很抱歉,但我在下面遇到了这段代码,它基本上是一个 api 控制器,它将数据作为 HTTP 响应持续推送回客户端..

客户端基本上是一个HttpClient,它连接到一个发出GET HttpRequestMessageUri地址。消息以SendAsync 发送,流以response.Content.ReadAsStreamAsync() 接收...

这里是链接:http://aspnet.codeplex.com/SourceControl/changeset/view/bb167f0b0013#Samples/Net4/CS/WebApi/PushContentControllerSample/PushContentController/Controllers/PushContentController.cs

【讨论】:

  • 感谢 FatGiant 为我指出正确的方向。虽然我会喜欢在 WCF 中这样做,但我已经花了足够多的时间来使用 WCF 完成这项工作,但没有任何成功。将我的项目从 WCF 转换为 Web API 并使用提供的示例所花费的时间要少得多。
【解决方案2】:

在服务器和客户端之间创建持久连接的最佳方式是使用 WebSockets。

WCF 可以通过 NetHttpBinding 使用 WebSockets。

配置后,您可以通过以下方式强制始终通过 WebSockets 进行通信:

transportUsage=Always

由于您有一个持久连接,因此您需要使用callbacks 来管理发送数据时的应用程序流。

还有一个detailed article here 描述了在 .NET 中创建 WebSocket 连接的几种不同方法(没有 SignalR)。

Create a WCF Service that Communicates over WebSockets

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-18
    • 2023-03-10
    • 1970-01-01
    • 2011-02-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多