IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Web & réseau Delphi Discussion :

Compresser un flux SOAP (XML) Web Service


Sujet :

Web & réseau Delphi

  1. #1
    mls
    mls est déconnecté
    Membre à l'essai
    Inscrit en
    Mai 2004
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 18
    Points : 13
    Points
    13
    Par défaut Compresser un flux SOAP (XML) Web Service
    Bonjour à tous,

    Je travaille actuellement sur une application développée avec Delphi 2009 (j'utilise le composant THTTPRio) qui interroge un Web Service SOAP (XML) développé lui en Java (par mes collègues). Tout fonctionne parfaitement .

    Mais pour aller plus loin et soulager également les réseaux (beaucoup de données peuvent être transférées), est-il possible avec Delphi 2009 de compresser le flux SOAP (XML) généré ? Si oui, par quelle méthode ?

    Merci d'avance et bonne journée.

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 586
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 586
    Points : 25 256
    Points
    25 256
    Par défaut
    Il faut que le serveur SOAP et le client soit au courant de la compression !

    En utilisant un tunneling SSH (outil comme Putty ou compo Secure Black Box), si tu active la compression, level 6 ou 9, tous les echanges entre le deux ordi seront compressés (et surtout sécurisés)
    Une solution qui change l'architecture mais ne demande aucune modification du Java et du Delphi !

    Si tu peux modifier les Deux
    Tu as encore le choix
    - Zip + Base 64 à la main
    Tu modifie ton WSDL pour indiquer l'utilisation d'un objet string
    Celui-ci pourra contenir une chaine encodé en Base64

    L'emetteur :
    génère un XML
    Compression du XML dans un Stream via un composant comme TVCLZip
    Encodage du Stream Compressé en Stream Base64 (multiplie par 4 la taille) via EncdDecd.EncodeStream

    le Recepteur
    Recupère la chaine dans le SOAP (paramètre de fonction tout simplement)
    Décode la Base64 en binaire compressé
    Decompresse le binaire en XML
    Applique un XSD (ou les machin-truc pour contrôler le schéma)
    ...

    Je l'ai fait pour l'envoi de fichier CSV qui pouvait monter facilement à 20-30Mo, une fois compressé (level 9), cela faisait entre 0.5 et 1.5Mo, une fois encodé 2Mo à 6Mo (faut penser à augmenter la limite des buffers SOAP d'apache réglé à 1Mo par défaut, si tu utilises un autre serveur web, tu dois avoir des limitations similaires)

    J'ai procédé de même avec des fichiers Excel, le taux de compression était moins bon (10% pour un CSV, 30% pour un Excel), et une fois le Base64 appliqué, c'était même plus volumineux que le fichier Excel d'origine (mais moins que si l'on avait directement encode le fichier Excel)

    - SOAP file attachment qui semble utiliser un encodage soit Hexadecimal (x16) et Base 64 (x4)
    Pour cela, il y a le TSOAPAttachment, je ne l'ai jamais utilisé, en Delphi 7 car cela n'existait pas !


    Maintenant, tu peux changer SOAP et passer à REST en mode binaire, je ne connais cette techno que de nom (j'avais survolé pour voir ce qui se faisait, Marco Cantu, présent au Code Way Tour, propose un composant REST (ou alors c'est une nouveauté des derniers Delphi)

Discussions similaires

  1. SOAP et Web Services
    Par mosit dans le forum Langage
    Réponses: 4
    Dernier message: 15/07/2009, 13h16
  2. [Web Service][SOAP] Client Web Service en PHP5
    Par bm_belgacem dans le forum Bibliothèques et frameworks
    Réponses: 6
    Dernier message: 07/05/2008, 18h03
  3. [C# 2.0]Compression des flux SOAP
    Par guitoux1 dans le forum Services Web
    Réponses: 4
    Dernier message: 13/11/2007, 15h15
  4. [Web Service][SOAP] Problème Web Service
    Par goddet dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 10/10/2007, 10h12
  5. [XML] Web Service/PHP/XML
    Par jokaris dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 04/08/2006, 13h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo