2010-12-07 38 views
2

Nous avons une application C++ MFC et un service Web C#. Ils communiquent via HTTP, mais comme ils échangent des données de texte, la compression aidera beaucoup. Mais pour certaines raisons, nous ne pouvons pas utiliser une bibliothèque externe.Compression simple en C++

Nous avons essentiellement besoin de compresser un réseau d'octets d'un côté et de le décompresser de l'autre côté.

Que devrions-nous utiliser pour compresser nos données? Le meilleur scénario serait s'il y a quelque chose dans MFC/win32 api. Ou y at-il un code simpliste avec au maximum la licence LGPL que nous pourrions intégrer dans notre projet?

Répondre

3

Comme cela a déjà été dit, le zlib est probablement ce que vous cherchez.

Il y a plusieurs algorithmes dans le secteur:

  • Le deflate et inflate paire
  • zlib se
  • lzo

Le plus simple est probablement lzo (je vous conseille de passer la taille non compressée sur du côté), mais zlib n'est pas très compliqué non plus et le taux de compression peut être paramétré (vitesse/taille trade off) qui peut être un plus en fonction de vos contraintes.

Pour les données XML (puisque vous parliez de services web), LZO m'a donné un facteur de compression 4x.

1

zlib a un très libéral license. Vous ne pouvez pas simplement activer la compression HTTP?

3