2009-06-24 109 views
3

我正在構建使用Web服務同步數據的客戶端服務器(c#)應用程序。如何將大量數據傳遞給Web服務

基本上我來回傳遞一個DataSet的XML。但取決於各種參數,數據集實際上可能相當大。我正在使用Gzip壓縮XML,並希望將其傳遞給Web服務器,並將得到的壓縮XML返回。

傳遞潛在的大塊數據的最佳方式是什麼?

說明:我想我問的是什麼格式是最好的傳遞數據。 JSON,SOAP,普通POST(我對Web服務不太熟悉,所以我確信還有更多我沒有想到的)。

+0

@Jared:考慮您應該更熟悉Web服務的可能性,而不是獲得您不瞭解的點解決方案。 – 2009-06-24 20:55:51

回答

4

最好可能取決於很多因素。如果最好的你的意思是最高效的,這裏有幾點考慮:

  • XML是不是在所有
  • 二進制序列的最佳方式是更爲有效。
  • 但是,如果您需要關心互操作性,您可能沒有此選項。在這種情況下,您可能需要考慮使用平面文件或分隔格式。
  • 如果這兩者都不可行,那麼你可以考慮發送改變的內容而不是所有的數據。
  • 如果這不是一個選項,那麼壓縮XML是一個...好的解決方案。

我會使用XML作爲最後的手段,因爲XML中包含了大量不必要的元數據,這些元數據很容易將有效負載的大小增加5倍以上。

+0

我不同意壓縮真的是一個很好的解決方案。如今,帶寬通常不再是瓶頸,服務方面的負載遠爲「有價值」。壓縮有效載荷只需在需要的帶寬與服務端的高負載之間進行權衡。 – fgysin 2011-08-22 07:18:54

1

什麼你可能想使用MTOM進行調查。這允許您以分塊方式發送二進制SOAP。這很酷,因爲將數據分塊,再加上一個AJAX用戶界面,將允許您向正在上傳的用戶展示進度條。

Here是使用MTOM以分塊方式發送/接收數據的一個示例。我希望這有幫助。

0

您可以嘗試壓縮文件並通過webservice以二進制形式發送它。另外,不要忘記修改上傳限制。

如何通過Web服務發送二進制數據:http://support.microsoft.com/kb/318425

0

對於Web服務,您有多種可以考慮的概念和可能性。

您是否需要多個客戶端管理相同的數據集?同時?

您是否有一個斷開連接的集合,在兩端進行管理,或者只有一個管理其他視圖/存儲/報告?

您是否簡單地使用客戶端作爲數據集的接口?如果是這樣,使用不同的UI(web)來管理數據集的不同部分作爲基於Web UI的應用程序是獨立的?

您是否在事務型交互中進行增量更改? (一端發送大數據集到客戶端,事務性更改是基於那個返回的?)

很難推薦一些特別的想法,關於如何/如何分析數據集以獲得更好的管理或瞭解更多詳細信息。

如果您必須發送大數據實體,那麼它只是您希望用於管道的方法的問題,它的簡單和上傳/下載以及您適當地管理端點。

對於一些隨想:

如果你想操作DOM中的數據,考慮JSON,它是用JavaScript很好地兼容。

如果您希望對XML數據集進行操作,那麼如果您需要傳遞整個數據集,則可以將zip或其他壓縮文件放在每一端。

相關問題