2011-03-03 34 views
2

壓縮串我用Java編寫的服務器,並用C#編寫的客戶端。他們通過XMPP進行交互並相互發送消息。消息是XML,其中一些可能非常大。我正在考慮壓縮數據,但是我不知道從技術角度來看,採用Java進行壓縮和使用C#進行解壓縮的最佳方法是什麼。如何傳輸從Java到C#

很顯然,我需要壓縮緩衝區轉換爲Base64,它傳輸,解碼BASE64,然後解壓。我應該使用JDK和.NET中的哪些工具來壓縮/解壓縮數據?

+0

標準ZIP怎麼樣?我看到的Java配備'java.util.zip'和C#可以解壓縮:http://stackoverflow.com/questions/1023476/recommend-a-library-api-to-unzip-file-in-c – 2011-03-03 08:18:30

+0

爲什麼你會需要base64對它們進行編碼?這不像輸出必須是有效的XML。 – CodesInChaos 2011-03-03 08:21:15

+0

@CodeInChaos:據我所知,輸出需要是文本的。 – 2011-03-03 08:42:01

回答

5

在.NET中你可以使用System.IO.Compression.GZipStream

在Java java.util.zip.GZIPOutPutStream似乎適合於壓縮任務。

編輯:
另一種方法是7-ZIP。對於c#和Java都有一個SDK

編輯2:
快速谷歌的 「XMPP壓縮」 表明,XMPP本身支持stream compression。這會壓縮你的整個通信,並且不會要求你對BASE64編碼你的壓縮數據。這聽起來更像是一種更有效且更兼容的壓縮數據的方式,而不僅僅是壓縮有效負載。

+0

謝謝,當然看起來像使用XEP-0138是正確的方法。我不確定我在.NET方面使用XMPP的庫是否支持它,但如果不支持,我仍然可以使用其他選項。 – 2011-03-03 08:41:12

0

聽起來像XMPP的濫用。我不知道它好,但它可能已經支持壓縮XML /流...

http://xmpp.org/protocols/compress/

也看在TLS壓縮。

+0

這絕對是對XMPP的濫用,但是當您使用最流行的XMPP服務器而不支持流式壓縮和TLS時,以及當您有兩個庫非常部分地支持它時,您最終會自行完成它。 。 – 2011-03-03 16:02:57