我正在尝试使用SilverLight 5应用程序和.NET 4服务器之间的WCF流传输实时数据。我需要的是服务器和客户端之间的最小延迟。但是,看起来WCF在发送之前正在缓冲数据。我正在关注此网站的示例:http://blogs.msdn.com/b/carlosfigueira/archive/2010/07/08/using-transfermode-streamedresponse-to-download-files-in-silverlight-4.aspx。我已经实现了自定义流,我看到我得到了在一秒钟内读取10个小块(少于400个字节)但在线路上服务器每10秒返回一次数据(它返回32776个字节 - 这是我从Wireshark获得的数字)。我希望服务器在准备就绪后立即返回数据,或者至少将缓冲区设置为非常小的值,例如512字节。
我尝试更改客户端和服务器配置,但没有运气。我的配置如下所示:
客户端
<client>
<endpoint address=""
binding="customBinding" bindingConfiguration="CustomBinding_IWcfDownloadService_StreamedResponse"
contract="IWcfDownloadService" name="CustomBinding_IWcfDownloadService_StreamedResponse" />
</client>
<bindings>
<customBinding>
<binding name="CustomBinding_IWcfDownloadService_StreamedResponse">
<binaryMessageEncoding />
<httpTransport maxReceivedMessageSize="2147483647" maxBufferSize="2147483647" transferMode="StreamedResponse" />
</binding>
</customBinding>
</bindings>
服务器
<services>
<service name="WcfDownloadService">
<endpoint address="" binding="customBinding" bindingConfiguration="customBinding0" contract="IWcfDownloadService" />
</service>
</service>
<bindings>
<customBinding>
<binding name="customBinding0">
<binaryMessageEncoding />
<httpTransport transferMode="StreamedResponse" />
</binding>
</customBinding>
</bindings>