gon33 Le 30/10/2012 à 23:09 Bonjour,
Je dois faire un WebService en C++ qui permette (entre autres) de transférer des fichiers d'environ 500 Mo.
J'ai trouvé gSoap et Axis qui permettent de transférer des données bufferisées à l'aide des protocoles MTOM et DIME.
Cependant je n'arrive pas à trouver un exemple de code client gSoap qui demande le chargement d'un fichier et un exemple de code serveur qui envoie effectivement le fichier.
C'est possible de faire ça??
Vous avez déjà fait ça en C++??
vince Le 30/10/2012 à 23:45 il faut forcément que ce soient des services web ? parce que soap s'appuie sur http et pour le coup, le transfert de fichiers énormes n'est pas forcément la spécialité de ce protocole même si ça reste possible...
gon33 Le 31/10/2012 à 11:16 Les solutions envisagées sont Rest et Soap.
L'idée est de ne pas écrire un protocole dédié et les requêtes à la main.
Je vais tester la solution REST avec C2Serve et tenter de gérer la requête d'envoi de fichiers à la main, pour voir ce que ça donne...
gon33 Le 31/10/2012 à 16:48 Bon, C2Serve c'est très agréable à utiliser (enfin, sauf la doc qui est inexistante, mais au moins la lib est simple), mais ça ne permet pas de bufferiser les envois.
Je me penche sur Axis...
gon33 Le 02/11/2012 à 11:25 J'ai implémenté avec gSoap un envoi de fichier découpé en morceaux de 1Mo.
C'est trèès lent : environ 3Mo/secondes en local + 1 à 2 CPU à 100%.
Après un peu de recherches, j'ai vu axis comme gSoap fournissent des exemples complets dans leurs sources.
L'exemple Axis/MTOM marche assez mal (segfault pour les gros fichiers) mais celui de gSoap est nickel!
Maintenant, reste à comprendre le code...