Asynchrone webservice dans Asp.net
Comment puis-je configurer un asynchrones service web dans asp.net?
Je veux appeler un service web à afficher des données d'une base de données, mais je ne m'inquiète pas si la réponse a échoué ou réussi.
Je peux utiliser .net 2.0 ou 3.5 seul et il peut être en vb ou c#.
- Je pense que tu veux dire "asynchrone".
- Pourquoi voulez-vous qu'il soit asynchrone? Est-ce parce que l'appel d'une simple web-service n'est pas assez rapide pour vous?
- Je veux ouvrir une session choses, mais je ne veux pas ce que je fais pour ralentir l'expérience de l'utilisateur. Donc, si ce webservice craps ou est lent pour une raison quelconque, je veux de l'application web principal de garder le long de camionnage. Donc, si c'est asynchrone ou synchrone, j'aimerais le faire.
- Asynchrone est certainement ce que vous voulez ensuite. J'ai édité ton post pour refléter votre intention.
- Êtes-vous l'appel du service web côté serveur ou côté client à l'aide de javascript?
- Je veux l'appeler sur le côté serveur.
- était-ce un sérieux commentaire? Il est presque toujours préférable d'écrire du code asynchrone et il suffit d'utiliser un port d'achèvement pendant l'attente de la réponse plutôt que de prendre un thread qui est juste en attente. C# serait un meilleur langage si il n'avait même pas synchrone I/O support et forcé tout le monde à utiliser les appels asynchrones.
- C# n'ont pas d'I/o, Que voulez-vous dire?
- Saunders, ce que j'ai dit est si C# n'ai pas de synchrone I/O, il serait mieux. Le modèle asynchrone prévoit en effet une bien meilleure utilisation des ressources et il y a d'autres langues qui ne fournissent que des e/S asynchrones api qui prennent souvent s'y habituer, mais de fournir de meilleurs résultats. J'ai lu une citation de quelqu'un de beaucoup plus d'autorité que me disent la même chose, mais j'ai essayé et je ne pouvais pas le trouver, si je dois le laisser comme juste mon avis.
- il a n I/O. Ce "I/O" faites-vous allusion?
- Saunders, je parle de toutes les API qui appeler pour potentiellement long de l'exécution de procédures et fournissent habituellement synchrone et asynchrone (début/Fin) les variations. Ces inclure des choses comme des Sockets, des Services Web, les opérations de Fichier, en gros tout communément appelé "I/O" ou "Entrée/Sortie". en.wikipedia.org/wiki/I/o
- rien de tout cela est une partie de C#!!!
- Saunders, vous êtes peut-être en référence au fait que je continue de dire des C# quand je veux vraiment dire la .NET?
- vous avez raison!
- Saunders, vous avez raison, mais je suis curieux de savoir, à quand remonte la dernière fois que vous avez programmé en C# sans l'aide de l' .NET framework?
- meilleure question: à quand remonte la dernière fois que j'ai programmé dans VB.NET? En utilisant plus d'un .NET de la langue et de la programmation, le même cadre, le rend très clairement la distinction entre C# et .NET. VB.NET n'ai-je/O BTW, à moins qu'il ne si ils ont gardé l'ancienne BASE I/O consolidés.
Vous devez vous connecter pour publier un commentaire.
Lorsque vous créez le service de référence dans visual studio, cliquez sur le bouton "Avancé..." et cocher la case "Générer les opérations asynchrones". Ensuite, vous aurez la possibilité d'effectuer des appels asynchrones contre le service web.
Voici un échantillon à la fois synchrone et le même appel asynchrone à un service web public.
Il pourrait être tentant de simplement appeler
BeginXxx
et de ne pas faire n'importe quoi avec le résultat, puisque vous ne vous inquiétez pas à ce sujet. Vous aurez effectivement de fuite de ressources bien. Il est important que chaqueBeginXxx
appel est mis en correspondance avec un correspondantEndXxx
appel.Même si vous avez un rappel que les appels
EndXxx
, c'est déclenché sur un thread du pool et le thread d'origine qui a appeléBeginXxx
est libre de finir dès que leBeginXxx
appel est fait (il n'attend pas la réponse).Webservices sont généralement pour la Requête/Réponse des services de style. Cela dit, il y a un mécanisme simple à faire implémentation asynchrone: http://msdn.microsoft.com/en-us/library/aa480516.aspx. Il y a des façons de faire de feu et d'oublier les webservices ainsi: http://blogs.x2line.com/al/archive/2007/05/21/3108.aspx à l'aide de OneWay attribut sur SoapDocumentMethod .
Il ne sonne pas comme il n'y a aucune raison pour que le service web doit être synchrone. Aller asynchrone pour un maximum de performances, surtout si certaines tâches peuvent être de longue durée.