J'ai un webservices dans laquelle il y a une fonction : MaFonction;
Et lorsque que j'ajoute sa reference dans un projet il me colle ces 2 fonction ( Begin... et End... )
A quoi elles servent ces 2 fonction ?
J'ai un webservices dans laquelle il y a une fonction : MaFonction;
Et lorsque que j'ajoute sa reference dans un projet il me colle ces 2 fonction ( Begin... et End... )
A quoi elles servent ces 2 fonction ?
ça me fait penser à du BeginInvoke et EndInvoke de delegate qui servent à lancer un traitement asynchrone puis a en recuperer le résultat. Je suppose que c'est la même chose ici.
EDIT : j'avais commencé ma réponse par "mais de quoi tu parles ?", c'etait avant de voir que c'etait de WebService, désolé. Donc ma réponse est bonne, il s'agit de lancer ta fonction de maniere asynchrone (et en enregistrant un callBack qui sera appelé qd le traitement sera fini), ton traitement principal se poursuit, qd le traitement asynchrone est terminé .Net te rappel sur ton callBack, et la tu appels le EndMaFonction pour en avoir le resultat.
Desolé, j'ai recentré un peu ma question, c'etait vraiment du pas clair du tout.
Je recommence :
J'ai creer un WebService tout bete dans lequel j'ai fait un fonction HelloWorld qui me renvoi une String ( en l'occurence : 'Hello World !')
J'ai ensuite fait une WebApplication alaquelle j'ai ajouter une reference Web ( mon WebService ).
Maintenant lorsque je vais dans le code de mon WebService, a ma fonction HelloWorld, il m'a rajouté 2 fonction : BeginHelloWorld et EndHelloWorld )
Je vois que tu as répondu avant que j'edite ma premiere réponse. Je te renvoie vers celle ci maintenant que je l'ai modifié.
aHa ...![]()
Que c'est dur de s'y mettre a ce truc ...![]()
![]()
J'ai pas tout bien compris. Cette histoire de CallBack, c'est comme un "thread" ?
Dans mon cas, je vais avoir beaucoup ( une 100aine ) d'utilisateurs connectés a mon WS et qui vont envoyer de grosse requetes.
Au lieu de dire, j'envoyer ma "question" et tant que le WS a pas repondu personne ne peut envoyer une autre question.
Tous les utilisateur peuvent envoyer un "Begin" et chacun attend son "End" en meme temps ... ?
Je sais pas si je suis tres clair encore une fois ...![]()
Un callBack c'est une fonction à toi, mais qui sera appelée par un autre "composant" à un moment donné (ici qd le traitement de ta fonction est terminé).
Le principe de l'appel asynchrone rappel effectivement les threads et concernant les problemes de concurrence que tu souleves, je pense que ça dépend beaucoup du design de ton WebService (y a t'il utilisation de variables statiques ? Est-il "thread safe" ? etc...) mais egalement des WebService eux meme. Le mieux serait que tu te documentes correctement sur le sujet, moi je n'y connais rien ou presque (mais encore une fois, a mon avis un appel à une méthode de WebService ne bloque pas d'autres appels, sauf blocage explicite par le développeur, c'est à la methode d'etre sans état afin de permettre l'acces concurrent). Dernier point, si les clients de ton WebServices sont des pages Web de tte façon tu ne pourras pas utiliser le Begin / End , c'est utile uniquement sur un client "lourd" (appli windows, service, ligne de commande...)
Ca, ca me rassure !Envoyé par Sphax
![]()
Et je viens de me rendre compte, qu'en fait, ce n'est pas mon WS qui gere les "files d'attentes" mais IIS directement tout seul comme grand !![]()
Merci pour ton aide Sphax !
IIS gere les files d'attente de la meme maniere que pour une page Web non ? Autrement dit il sert le plus de monde possible en même temps, et pour chacun il va instancier ton WebControl, dans un même appDomain, lancer l'exécution de la bonne fonction, et renvoyer le résultat au client. Du coup tu as toujours à gérer la concurrence (mais c'est trés simple encore une fois si tu ne maintiens pas d'etat dans ton WS ou tes fonctions). Arrete moi si je dis une betise hein, je ne maitrise pas les WebServices.
Je t'en prie, pour l'aide.
Bah il me semble oui !Envoyé par Sphax
![]()
![]()
Qu'entend tu par "concurrence" ?Envoyé par Sphax
Le fait que 2 client ( I.E. ) lance des question en meme temps ?
Si c'est le cas, je pense que ca ce gere au niveau de IIS directement![]()
A fouiller !![]()
![]()
Par concurrence j'entends effectivement plusieurs exécution simultanées de tes méthodes. Dans ce cas c'est a toi de t'assurer qu'une fonction exécutée par plusieurs threads simultanément fonctionnera bien dans ces conditions (le probleme se situe généralement au niveau de ressources partagées, que ce soit des variables statiques, des fichiers etc...) . Mais laisse tomber pour le moment, je suppose que si tu ne vois pas ce que je veux dire, c'est que tu n'en as pas besoin... ou alors tu t'appercevras assez tot du probleme.
Je pense que le probleme ne se posera pas dans mon cas mais effectivement, c'est un point a ne pas negliger !![]()
Dans mon cas, c'est juste mon WS qui se charge de recuper un "jeu" de données et de le renvoyer au client ... donc pas trop de souci de ce genre !![]()
Partager