Как передать сжатые строки из Java в C # - PullRequest
2 голосов
/ 03 марта 2011

У меня есть сервер, написанный на Java, и клиент, написанный на C #. Они взаимодействуют через XMPP и отправляют сообщения друг другу. Сообщения представляют собой XML, и некоторые из них могут быть очень большими. Я думаю о сжатии данных, но мне интересно, что будет лучшим способом сделать это технически, так как я сжимаю в Java и распаковываю в C #.

Очевидно, мне нужно перевести сжатый буфер в BASE64, передать его, декодировать BASE64 и затем распаковать его. Какие возможности в JDK и .NET я должен использовать для сжатия / распаковки данных?

Ответы [ 3 ]

5 голосов
/ 03 марта 2011

В .NET вы можете использовать System.IO.Compression.GZipStream.

В Java java.util.zip.GZIPOutPutStream кажется подходящим для задачи сжатия.

Edit:
Другой альтернативой может быть 7-почтовый индекс. Существует SDK для c # и Java.

Редактировать 2:
Быстрый Google на "XMPP сжатие" показывает, что сам XMPP поддерживает сжатие потока . Это сожмет всю вашу связь и не потребует от вас кодирования BASE64 ваших сжатых данных. Это больше похоже на более эффективный и более совместимый способ сжатия данных, чем просто сжатие полезной нагрузки.

1 голос
/ 03 марта 2011

Вы можете использовать общий алгоритм, такой как ZIP, библиотек достаточно для обоих языков - они также работают только в оперативной памяти, то есть без файловой системы.

Для C # я могу порекомендовать: http://www.sharpdevelop.net/OpenSource/SharpZipLib/

0 голосов
/ 03 марта 2011

Звучит как злоупотребление XMPP.Я не очень хорошо знаю, но он может уже поддерживать сжатый XML / Stream ...

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

Посмотрите также на сжатие TLS.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...