当编写一个Silverlight应用程序连接到WCF Web服务时,我们在使用Web服务时唯一提供的选项是对WS接口进行异步调用。异步Web服务设计模式
即
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?
}
虽然我写的webapps当(安全网)了解异步调用的原因,将一个其中每个步骤是依赖的结果,使用什么类型的设计模式,如果一个方法是写Web服务调用?例如,如果在Web服务中有一种方法检查访问者的用户凭证,并且取决于该用户的组,则会执行某些操作。
public MyPage() //Constructor
{
CheckCredentialsAsync();
if(result.IsUserTypeA)
{
//something complex
}
else if(result.IsUserTypeB)
{
//something else complex
}
...etc
}
有没有办法做到这一点,而不使用由先前的异步调用完成的事件引发了“多米诺骨牌”的方法设计?看起来如果有很多客户/服务交互可能会变得混乱。
谢谢!