Lors de l'écriture d'une application Silverlight connectée à un service Web WCF, la seule option qui nous est présentée lors de l'utilisation du service Web consiste à effectuer des appels asynchrones à l'interface WS.Modèles de conception de service Web asynchrone
-à-dire
WebService client = new WebService();
client.ServiceMethodCompleted += new EventHandler<Args>(client_Handler);
client.ServiceMethodAsync();
client.close()
...followed by
void client_Handler(object sender, Args e)
{
//Next step, possibly another method?
}
Même si je comprends la raison pour les appels asynchrones lors de l'écriture webapps (filet de sécurité), quel type de modèle de conception pourrait-on utiliser si une méthode a été écrite où chaque étape dépendait du résultat de l'appel du service Web? Par exemple, s'il existait une méthode dans le service Web qui vérifiait les informations d'identification de l'utilisateur du visiteur, et en fonction du groupe de cet utilisateur, effectuerait une action.
public MyPage() //Constructor
{
CheckCredentialsAsync();
if(result.IsUserTypeA)
{
//something complex
}
else if(result.IsUserTypeB)
{
//something else complex
}
...etc
}
Est-il possible d'y arriver sans l'aide d'une conception « domino » des méthodes déclenchées par les appels asynchrones précédents événements terminés? Il semble que cela peut devenir désordonné s'il y a beaucoup d'interaction client/service.
Merci!