2011-10-27 35 views
1

我有客戶端/服務器系統(使用套接字)與多個客戶端和單個服務器,它在所有客戶端上每秒發送xml數據。使用GZipStream客戶端/服務器異步通信

XML數據總是大小在1到18000個字符之間,服務器需要將這些XML數據同時發送到所有客戶端。

現在我想知道,如何使服務器和客戶端之間的通信更快。

也許我會問更多的一個問題,但我真的在這一點上困惑,我不能繼續了。

  • 我應該壓縮每個XML數據發送之前嗎?
  • 我該不該序列化 XML-Datas? (可能會減少xml數據的大小)
  • 是否需要將每個XML數據轉換爲byte []數組(緩衝區) ,因爲必須在同一時間爲所有客戶端完成通信。

謝謝!

回答

0

如果您當前正在迭代所連接的客戶端,則可以使用具有內置pub-sub拓撲的中間層。 0MQ能夠讓單個發佈者非常高效地發送給n個訂閱者,並且具有C#綁定。您也可以按照您的建議在發送之前壓縮郵件。

+0

是否有任何0MQ壓縮基準列表? 0QM我很奇怪。我可以將它用於我的系統嗎? – Racooon

+0

來自文檔:「它是類固醇上的套接字」。這是一款能夠消除網絡通信困難的中間件。 「ØMQ(ZeroMQ,0MQ,zmq)看起來像一個可嵌入的網絡庫,但它的行爲像一個併發框架,它爲您提供了跨過各種傳輸(如進程內,進程間,TCP和多播)的全部消息的套接字。套接字N對N,具有扇出,發佈 - 訂閱,任務分發和請求回覆等模式,這足以成爲集羣產品的結構。「它可以爲你做很多事情,讓你的生活更輕鬆。 – robowahoo

0

假設你在內部網上工作,我會建議你的xml數據爲multicast。這樣,您的服務器將每秒發送一份xml數據副本(而不是爲N客戶端發送N份數據副本)

+0

如果我不在Intranet上工作,該怎麼辦?有沒有其他方法來組播xml數據? – Racooon

+0

這取決於你的ISP,很可能不是。 –

0

如果您使用的是WCF,則可以輕鬆集成GZip壓縮。

這裏檢查:WCF Compression over HTTP sample

+0

很抱歉忘了說,這是一個應用程序使用套接字(tcp) – Racooon

+0

然後看看這個:http://www.codeproject.com/KB/IP/RCSStream.aspx –

+0

我會測試它,謝謝 – Racooon