1

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++??

2

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...
avatar
Webmaster du site Ti-FRv3 (et aussi de DevLynx)
Si moins de monde enculait le système, alors celui ci aurait plus de mal à nous sortir de si grosses merdes !
"L'erreur humaine est humaine"©Nil (2006) // topics/6238-moved-jamais-jaurais-pense-faire-ca

3

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...

4

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...

5

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...