0

JSON を使用して C で記述されたレガシー バックエンド システム (サーバー上に aa コンバーターがあります) と通信する Java デスクトップ クライアント ソフトウェアが、現場で大量に展開されたときに、単純に帯域幅を消費しすぎている状況があります。

圧縮オプションを検討した結果、一般的な JSON 圧縮ツールは自分の状況には合わないという結論に達しました。それらは、データベース クエリの結果をネットワーク経由で渡すシナリオに基づいているようですが、これは私の状況ではありません。簡単に圧縮できる便利な行/列アルゴリズムはありません。私たちのデータはもっと複雑です。

そこで、圧縮、Java の DeflaterOutputStream および InflaterInputStream (またはおそらくそれらの GZIP または ZIP フレーバー) の使用に取り掛かります。C 側には、サーバーが実行されている RedHat から入手できる zlib ライブラリなど、似たようなものがあるでしょう。

ワームの缶に足を踏み入れる前に、経験のある人が zlib 圧縮と Java でサポートされている圧縮の互換性について教えてもらえますか? Java 圧縮オプションのどちらが優れているか? 他より速い?

ちなみに、プロトコルは双方向です。サーバーとクライアントはどちらも JSON を使用してメッセージをエンコードするため、このシナリオでは両側で圧縮と解凍ができる必要があります。前もって感謝します。

4

1 に答える 1

1

Java の Deflator、GZIP、および ZIP ライブラリはすべて zlib ライブラリを使用して実際の圧縮を行うため、互換性があるだけでなく、まったく同じである必要があります。ほとんどの場合、GZIP と ZIP の方が移植性が高くなります。これは、Deflator が圧縮されたデータであり、ヘッダー/フッターが小さいためです。

于 2013-09-04T20:47:51.273 に答える