2011-03-03 3 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 –

+0

왜 base64로 인코딩해야합니까? 출력이 유효한 XML이어야하는 것은 아닙니다. – CodesInChaos

+0

@ CodeInChaos : 내가 이해하는 한, 결과는 텍스트이어야합니다. –

답변

5

당신이 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 용 라이브러리를 지원하고 있는지 확실하지 않지만 그렇지 않다면 다른 옵션을 사용할 수 있습니다. –

1

ZIP과 같은 일반적인 알고리즘을 사용할 수 있습니다. 두 언어에 대한 라이브러리가 충분합니다. 또한 파일 시스템없이 메모리에서만 작동합니다.

C#을 위해 나는 추천 : .NET에서 http://www.sharpdevelop.net/OpenSource/SharpZipLib/

0

소리가 XMPP 악용과 유사합니다. ... TLS 압축에서 또한

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

봐 나는 잘 모르지만 이미 압축 된 XML/스트림을 지원할 수 있습니다.

+0

확실히 XMPP의 남용이지만, TLS와 함께 스트림 압축을 지원하지 않는 가장 인기있는 XMPP 서버를 사용할 때, 그리고 부분적으로이를 지원하는 두 개의 라이브러리가있을 때 직접 끝내게됩니다. . –

관련 문제