繁体   English   中英

Silverlight 4最快的WCF绑定

[英]Fastest WCF binding for Silverlight 4

我正在一个Silverlight 4客户端调用返回大量数据的WCF Web服务的项目中。 一些分析显示

  • webservice方法的实际执行时间不到一秒钟(调用另一台服务器/生成一个非常大的数据集等,已经在那里进行了优化)

  • 数据传输取决于网络,但通常不是问题-它可以根据需要进行传输

  • 客户端收到http答案(我在Fiddler中看到它已完成)与Silverlight客户端中触发的Completed事件之间的时间〜15秒 (IE / firefox / chrome之间没有区别)

我认为15秒钟的延迟大部分用于反序列化。

我的绑定使用HttpTransportBinaryMessageEncoding ,并在其顶部进行gzip压缩。 Gzip压缩似乎对性能没有影响:无压缩和最大压缩级别之间的差异几乎不存在。 http答案是未压缩的〜15 Mb和压缩的〜400 kb(即使使用二进制XML也会产生很多开销!)

注意:Web服务完全是临时的,我对互操作性不感兴趣,并且在选择协议方面拥有完全的自由。

一个明显的解决方案是传输较少的数据,但是引入分页将需要对体系结构进行一些重大更改,而这些更改目前尚不可行。 减少数据集也相当困难,因为该解决方案完全可以由最终用户定制,并且您知道用户并不总是知道自己在做什么,最终导致创建大量请求。

我剩下wcf绑定了:该项目从SL 2开始,并通过SL 3和SL 4进行了演变,因此也许我缺少Silverlight 4中引入的某种更快的绑定。我还有另一个更快的编码器(或绑定)吗?可以用来避免客户端上的反序列化瓶颈?

怎么样“作弊”(仅提高预期的性能)?

在第一次调用时返回一小部分数据,然后启动一个后台进程以获取所需的所有信息。 如果您显示的数据为只读数据,则可能会有所帮助。

编辑:查看优先级绑定...它允许您将多个数据源绑定到您的网格。 如果慢速连接稍后再返回,silverlight将自动绑定新的数据源...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM