我工作的地方一個Silverlight 4的客戶端調用一個WCF web服務,返回大量數據的項目結合。一些分析顯示,最快的WCF的Silverlight 4
實際的Web服務方法的執行時間不到一秒(調用另一臺服務器/產生一個非常大的數據集的/ etc。,它已經非常優化的存在)
數據傳輸依賴在網絡上,但通常不是問題 - 它可以採取任何需要的東西
客戶端收到http答案(我認爲它在Fiddler中完成)和在Silverlight客戶端觸發的Completed事件之間的時間:〜15秒(IE /火狐/鉻之間沒有區別)
我想,15秒延時是在反序列化花費很大一部分。
我綁定使用HttpTransport
和BinaryMessageEncoding
,用在它上面的gzip壓縮。 Gzip壓縮似乎不會對性能產生影響:無壓縮和最大壓縮級別之間的差異幾乎不存在。 http答案是〜15 Mb未壓縮和〜400 kb壓縮(即使使用二進制XML,也有很多開銷!)
注意:Web服務完全是特設的,我對互操作性不感興趣並且具有完全自由在協議的選擇。
一個明顯的解決方案是傳送較少數據,但引入的尋呼將需要在體系結構是不可行的在當前時間的一些重大變化。減少數據集也相當困難,因爲解決方案可以由最終用戶完全自定義,正如您知道的,用戶並不總是知道自己在做什麼並最終創建巨大的請求。
我剩下的wcf綁定:這個項目從SL 2開始,通過SL 3和SL 4發展,所以也許我錯過了Silverlight 4中引入的某種更快的綁定。 是否有另一個更快的編碼器(或綁定)我可以用來避免客戶端上的反序列化瓶頸?
這是一個很好的提示,謝謝。如果我無法提高實際性能,我肯定會執行類似的操作。 – 2010-12-10 08:38:19