J'essaie de créer un webservice qui permettrait à ses clients de télécharger des fichiers (ce qui peut être de très gros fichiers). Au niveau du serveur, j'ai beaucoup de fichiers qui doivent être renvoyés au consommateur, donc je compresse tous ces fichiers dans un gros fichier zip et les restitue à l'utilisateur. À l'heure actuelle, mon service Web commencera à compresser les fichiers, lorsque la requête entrera, formera les fichiers zip et les retransmettra. La compression peut parfois prendre beaucoup de temps et la requête peut expirer. Que puis-je faire pour éviter de telles situations? Ma solution est maintenant de séparer les données en fichiers zip plus petits, d'envoyer une réponse au consommateur disant qu'il y aurait ces nombreux fichiers plus petits, et de laisser les consommateurs envoyer des demandes pour des fichiers plus petits. Donc, si j'ai un fichier zip de 1 Go, je vais le décomposer en 10 petits fichiers zip, et demander au consommateur de demander des fichiers plus petits dans 10 demandes. Est-ce la bonne approche? Quels problèmes puis-je affronter? Quelqu'un a-t-il déjà géré de tels problèmes? Je serais heureux si vous pouvez partager vos expériences. Aussi, est-il possible de commencer à diffuser les fichiers zip sans les former complètement?Télécharger un fichier volumineux avec un service web C#
Répondre
Traite la demande et la livraison comme des opérations asynchrones.
Le client peut effectuer une requête pour le fichier en utilisant une méthode. Une autre méthode peut permettre au client de connaître l'état de l'empaquetage du fichier (s'il est encore prêt à être téléchargé). Une troisième méthode peut effectivement télécharger les fichiers.
Il peut être intéressant d'envisager une approche reposante. Plutôt qu'un service web de savon. Comme OrbMan, suggéré une approche asynch peut être le meilleur.
Avec REST, vous pouvez exposer une ressource comme: http://yourlocation/generatefile qui (lorsqu'elle est appelée avec un poste) renvoie une réponse HTTP avec un code de réponse de 301 « accepté » et une valeur d'en-tête de l'emplacement de l'emplacement = http://yourlocation/generatefile/id00124 qui suggère l'emplacement les données.
Vous pouvez ensuite interroger la ressource http://yourlocation/generatefile/id00124 (peut-être simplement la demande d'en-tête) pour obtenir le statut, c'est-à-dire le traitement/l'achèvement.
Lorsque le traitement est terminé. Faites un get sur le http://yourlocation/generatefile/id00124 pour télécharger votre fichier. Le message http de réponse doit identifier votre fichier et le format, c'est-à-dire les types de chiffrement et de compression, afin que tout consommateur sache comment le lire.
Ceci est une bonne solution aux problèmes qui sont longs en cours d'exécution et renvoie des données dans des formats autres que le savon anbd general xml.
J'espère que cette aide
C'est génial. J'ai une question, comment puis-je interroger la ressource pour le statut? Je suis désolé si c'est une question trop bête, mais je viens de commencer à travailler sur C# et Webservices. – Debby
je sondage du client appelant dans le cadre de la méthode qui obtient le fichier. Le code client peut couler quelque chose comme ceci:
byte[] GetFile()
{
response = request.Post(http://yourlocation/generatefile);
string dataResource = response.Headers["Location"];
bool resourceReady = false;
while(!reasourceReady)
{
resH = request.Header(dataResource);
if(resH.Headers[Status] == "complete")
break;
else
Thread.Sleep(OneSecond); ?? or whetever
}
fileRes = request.Get(dataResource);
return fileRes.ToByteArray();
}
Ce n'est psuedo, mais je l'espère, il est logique ...
- 1. Télécharger un fichier Fichiers volumineux PHP/AJAX
- 2. HttpWebRequest C# télécharger un fichier
- 3. Fractionner un fichier volumineux en C++
- 4. télécharger un fichier sur un site web avec ruby / rails
- 5. Télécharger un fichier avec VBS
- 6. télécharger un fichier par programme
- 7. Comment télécharger un fichier vers un service WCF?
- 8. Télécharger un fichier avec reste
- 9. Télécharger un fichier avec JSF?
- 10. Télécharger un fichier avec Sinatra
- 11. télécharger un fichier .mp3 sur le site Web avec NSSURLConnection
- 12. Impossible de télécharger un fichier vers un service Web et d'obtenir la réponse au format JSON
- 13. Télécharger un site Web entier en C#
- 14. Télécharger un fichier volumineux avec cURL en PHP - Page se bloque
- 15. Télécharger un fichier via un script python
- 16. Comment télécharger un fichier avec Catalyst?
- 17. avec un service Web Java
- 18. Télécharger le fichier à partir du Web C++ (avec winsock?)
- 19. Android - Comment télécharger un fichier txt sur un site Web?
- 20. Télécharger un fichier avec l'encodage via FTP en C#
- 21. asp.net C# télécharger un gros fichier et le traiter
- 22. Création d'un test Web Visual Studio pour télécharger un fichier avec un nom de fichier aléatoire
- 23. Upload/Télécharger des fichiers volumineux dans une application web
- 24. Télécharger un fichier avec Adobe AIR
- 25. Télécharger un fichier avec Emacs Lisp
- 26. Comment télécharger un fichier avec mod_python?
- 27. Restful WCF Data Service pour télécharger et télécharger des fichiers volumineux?
- 28. C# Comment télécharger un fichier sur un serveur PHP?
- 29. Téléchargement de fichiers volumineux via le service Web en Java
- 30. Comment recevoir/envoyer des fichiers avec un service Web Java
Yat-il un exemple que je peux référence? – Debby