2008-12-09 4 views
2

Je dois m'interfacer avec un système légèrement archaïque qui n'utilise pas les services web. Afin d'envoyer des données à ce système, j'ai besoin de poster un document XML dans un formulaire sur le site Web de l'autre système. Ce document XML peut devenir très volumineux, donc je voudrais le compresser. L'autre système se trouve sur IIS et j'utilise C# ma fin. Je pourrais bien sûr implémenter quelque chose qui compresse les données avant de les publier, mais cela nécessite que l'autre système change pour pouvoir décompresser les données. Je voudrais éviter de changer l'autre système car je ne le possède pas.Comment compresser de manière transparente les données que je publie dans un formulaire en utilisant C# et IIS?

J'ai entendu des choses vagues sur l'activation de la compression/http 1.1 dans IIS et le navigateur, mais je n'ai aucune idée de la façon de traduire cela dans mon programme. Fondamentalement, y a-t-il une propriété que je peux définir dans mon programme pour que mon programme compresse automatiquement les données qu'il envoie à IIS et que IIS le décompresse de manière transparente afin que l'application réceptrice ne connaisse même pas la différence?

Voici un exemple de code pour montrer à peu près ce que je fais; "Data = xyz" sera en fait "data = [un document XML de plusieurs MB]".

Je suis conscient que cette question peut finalement tomber sous la bannière de non-programmation si cela est réalisable par des moyens non-programmatiques, donc excuses à l'avance.

Répondre

0

Aucune idée si cela fonctionnera puisque tous les exemples que je pourrais trouver étaient pour téléchargement, mais vous pouvez essayer d'utiliser gzip pour compresser les données, puis définir l'en-tête Content-Encoding sur le message sortant à gzip. Je crois que la longueur devrait être la longueur du message compressé, bien que vous puissiez vouloir jouer avec lui faisant la longueur du message non codé si cela ne fonctionne pas.

Bonne chance.

EDIT Je pense que le problème est de savoir si le filtre ISAPI qui prend en charge la compression est invoqué toujours/de manière configurable lors du téléchargement. Je ne pouvais pas trouver une réponse à cela, donc je soupçonne que la réponse n'est jamais, mais vous ne saurez pas jusqu'à ce que vous essayez (ou trouver la réponse qui m'a échappé).

2

Je ne vois aucune façon de compresser les données d'un côté et les recevoir sans compression de l'autre côté sans décompressé activement les données ..

Questions connexes