如何使用WCF 4.5 WebSockets“流式传输”大型数据

时间:2012-04-16 14:02:55

标签: wcf stream websocket

我正在研究新的 WCF 4.5 Websocket服务。 在通过浏览器调用服务时遇到麻烦。

事实证明(经过大量的谷歌搜索),当您将Web浏览器作为Web套接字的客户端处理时,WCF 4.5唯一可行的方法是,如果您定义 OperationContract < / strong>使用'操作=“*”'标记 [由于没有明确的方法从浏览器调用'特定'功能,您只需调用'ws .send(“asd”)'将消息发送到服务器,因此你需要为服务的所有命令调用定义一个处理程序,类似地只能有一个回调函数]

现在,如果您使用'Action =“*”',则在定义合同时只能使用数据类型“消息”。

这很好,如果你想创建一个echo服务器,但是假设你要上传/下载数据,在默认(缓冲)模式下,数据传输速度不是它们应该是的(20mb文件需要40-50秒)。提高速度的唯一方法是将模式设置为“流式传输”(我尝试使用“ StreamResponse ”)。

但现在麻烦的是,因为我们只能在定义合同时使用'消息'作为数据类型,而Message使用SOAP类型def。,它使用的是'缓冲'模式,即使其明确定义也是如此。 [如果我错了,请纠正我]

所以,我的问题是,有没有办法在WCF 4.5 Websockets中实现'流数据传输'。

而且,是的,我使用的是byteStreamMessageEncoding(4.5中提供的最新版本)。 我在web.config中使用“自定义绑定”,因为“ netHttpBinding ”无法与浏览器一起使用。

1 个答案:

答案 0 :(得分:0)

OHK .... 由于WCF没有工作......发现它可以使用ASP.Net 4.5处理程序完成。