2009-02-19 15 views
0

Je peux abandonner l'appel de service Web du client en appelant la méthode ABORT du proxy de service Web.Comment faire pour annuler l'appel à webservice à la fois côté client et serveur?

Toutefois, sur le serveur où le service Web est hébergé, l'appel se termine uniquement à la fin du traitement. Comme le serveur n'attend pas d'autres entrées liées à la méthode web déjà appelée pendant le traitement, je ne suis pas en mesure de le fermer du client.

Y at-il un moyen d'interrompre l'appel au niveau du serveur, c'est-à-dire d'arrêter le gros calcul (et d'extraire également des données du serveur de base de données) sur lequel le serveur fonctionne?

Répondre

2

Il n'y a certainement aucun moyen de le faire si vous utilisez des services Web ASMX. Peut-être que quelqu'un d'autre peut nous dire si c'est possible avec la WCF.

En général, il vous faudra écrire votre service pour vous attendre à une interruption. La plupart des codes de service ne sont pas écrits de cette façon.

Prévoyez-vous fréquemment annuler les demandes? Sinon, il peut être préférable de ne rien faire sur le serveur.

+0

Je ne m'attends pas à ce qu'il abandonne très fréquemment, mais le calcul est très important; Donc, si l'utilisateur décide de faire quelque chose d'autre, c'est-à-dire, d'une manière ou d'une autre, vouloir ignorer le résultat, alors je pense qu'il est préférable d'arrêter ce processus serveur. – Sun

1

Puisque vous parlez d'une requête-réponse synchrone simple, je ne sais pas comment vous le feriez.

Combien de temps dure un appel de méthode?

Le comportement que vous voulez vraiment ressemble:

  • Démarrer une séquence d'actions qui fait quelque chose (processus des données), récupérer un cookie
  • Lorsque le processus est terminé (sondage/être averti), chercher résultat en utilisant cookies
  • instructions de commande de Pass, comme abort, en utilisant le cookie

Cela ressemble vraiment à la modélisation de votre traitement en tant que flux de travail, et non un appel de fonction.

Si vous trouvez qu'il y a un grand avantage à passer à ce modèle de faire les choses, alors oui, vous avez des options. Sinon, il peut être plus simple de simplement consommer le coût des calculs (rarement) gaspillés.