WCF REST 流式 GET 响应

WCF REST Streamed GET response

我需要 return 来自 WCF 服务的流式响应。

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

我知道最好使用 Signal R (WebSockets) 来完成此操作,但我想知道是否可以在 WCF 中实现此操作(不使用 Signal R)。 我不需要 return 大数据,我想发送间歇性的小 XML 数据。

让我知道是否有人使用 WCF REST 实现了类似的东西?

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

WCF 可以通过 NetHttpBinding.

使用 WebSockets

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

transportUsage=Always

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

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

Create a WCF Service that Communicates over WebSockets

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

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

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