我正在構建使用Web服務同步數據的客戶端服務器(c#)應用程序。如何將大量數據傳遞給Web服務
基本上我來回傳遞一個DataSet的XML。但取決於各種參數,數據集實際上可能相當大。我正在使用Gzip壓縮XML,並希望將其傳遞給Web服務器,並將得到的壓縮XML返回。
傳遞潛在的大塊數據的最佳方式是什麼?
說明:我想我問的是什麼格式是最好的傳遞數據。 JSON,SOAP,普通POST(我對Web服務不太熟悉,所以我確信還有更多我沒有想到的)。
我正在構建使用Web服務同步數據的客戶端服務器(c#)應用程序。如何將大量數據傳遞給Web服務
基本上我來回傳遞一個DataSet的XML。但取決於各種參數,數據集實際上可能相當大。我正在使用Gzip壓縮XML,並希望將其傳遞給Web服務器,並將得到的壓縮XML返回。
傳遞潛在的大塊數據的最佳方式是什麼?
說明:我想我問的是什麼格式是最好的傳遞數據。 JSON,SOAP,普通POST(我對Web服務不太熟悉,所以我確信還有更多我沒有想到的)。
最好可能取決於很多因素。如果最好的你的意思是最高效的,這裏有幾點考慮:
我會使用XML作爲最後的手段,因爲XML中包含了大量不必要的元數據,這些元數據很容易將有效負載的大小增加5倍以上。
我不同意壓縮真的是一個很好的解決方案。如今,帶寬通常不再是瓶頸,服務方面的負載遠爲「有價值」。壓縮有效載荷只需在需要的帶寬與服務端的高負載之間進行權衡。 – fgysin 2011-08-22 07:18:54
如果您將WCF用於Web服務,則可以使用MTOM作爲二進制附件發送數據。請參閱:
What is the best way to send large data from WCF service to Client?
您可以嘗試壓縮文件並通過webservice以二進制形式發送它。另外,不要忘記修改上傳限制。
如何通過Web服務發送二進制數據:http://support.microsoft.com/kb/318425
如果你想要的是gzip壓縮適用於你可以考慮在HTTP傳輸層實現透明gzip壓縮XML數據(接受編碼:gzip,內容-Encoding:gzip)並讓iis處理它。
請參閱http://weblogs.asp.net/owscott/archive/2004/01/12/IIS-Compression-in-IIS6.0.aspx#58745
對於Web服務,您有多種可以考慮的概念和可能性。
您是否需要多個客戶端管理相同的數據集?同時?
您是否有一個斷開連接的集合,在兩端進行管理,或者只有一個管理其他視圖/存儲/報告?
您是否簡單地使用客戶端作爲數據集的接口?如果是這樣,使用不同的UI(web)來管理數據集的不同部分作爲基於Web UI的應用程序是獨立的?
您是否在事務型交互中進行增量更改? (一端發送大數據集到客戶端,事務性更改是基於那個返回的?)
很難推薦一些特別的想法,關於如何/如何分析數據集以獲得更好的管理或瞭解更多詳細信息。
如果您必須發送大數據實體,那麼它只是您希望用於管道的方法的問題,它的簡單和上傳/下載以及您適當地管理端點。
對於一些隨想:
如果你想操作DOM中的數據,考慮JSON,它是用JavaScript很好地兼容。
如果您希望對XML數據集進行操作,那麼如果您需要傳遞整個數據集,則可以將zip或其他壓縮文件放在每一端。
@Jared:考慮您應該更熟悉Web服務的可能性,而不是獲得您不瞭解的點解決方案。 – 2009-06-24 20:55:51