Je tente de refactoriser un code .NET existant modérément complexe pour qu'il soit utilisable dans Silverlight. Le problème principal est que tous les appels de services Web Silverlight doivent être asynchrones et que le code existant a été implémenté de manière synchrone assez typique.Implémentation d'un scénario asynchrone imbriqué "call call" dans .NET
pile d'appels existants pour une opération typique pourrait être quelque chose comme ceci:
page -> GetPersonMethod -> PersonBusinessObject -> PersonDataObject -> CallWebservice -> (réponse à bulles sauvegarde de la pile)
Ma pensée est de diviser toutes les méthodes en méthodes distinctes de demande et de réponse et de préserver la structure globale de l'application.
alors la nouvelle pile d'appel pour la même opération comme ceci:
page -> GetPersonRequest -> PersonBusinessRequest -> PersonDataRequest -> WebserviceRequest
page < - GetPersonResponse < - PersonBusinessResponse < - PersonDataResponse < - WebserviceResponse
questions fondamentales:
Est-ce une idée terrible, et devrais-je vraiment juste le réécrire à partir de zéro avec une perspective plus asynchrone?
En supposant que je prenne cette approche, comment puis-je préserver la pile d'appels pour mes réponses imbriquées?
TIA
-Eric
Ceci est impressionnant chunck de code, je l'ai eu travailler dans une application de test en un rien de temps! Très utile! Merci! Mais je n'ai pas encore compris comment faire pour que votre proposition de "synchronisation via async" fonctionne pour les appels de services Web asynchrones ... Ma compréhension est que WaitOne() n'est pas supporté par Silverlight? – Scrappydog
http://msdn.microsoft.com/en-us/library/cc190477(VS.95).aspx Semble indiquer WaitOne est là. – MichaelGG