2011-10-04 34 views
1

如果我的术语不准确,仍然深入学习,那么我会告诉您。单向Web服务仍然会返回响应

我正在创建一个Web服务,充当Silverlight和XMPP之间的中介。为了开始所有这些工作,我创建了一个Web服务调用,以使我能够请求服务器代表我进行登录,并且我的想法是服务器将登录,然后在完成后再推回到我的客户端。

我已经基于代码的形式本网站上的想法:http://weblogs.asp.net/dwahlin/archive/2011/02/06/syncing-data-with-a-server-using-silverlight-and-http-polling-duplex.aspx

现在我的问题是,注册致电我创建将使用异步调用登录到XMPP。但寄存器调用本身也是不同步的。所以我不知道一个Web服务调用等待另一个服务的异步调用的最佳方式

我想做的是使注册单向调用的想法是,我的服务器将登录到XMPP然后推送客户端登录后(或fileld等)

[OperationContract(IsOneWay = true)] 
void Register(string name, string password, string nickname); 

但是,当我导入的服务引用生成的类似乎具有RegisterCompleted()调用,它示出了调试被调用。但我认为单向意味着没有回应,为什么呢?

回答

3

单向意味着没有响应数据。互联网协议是一个请求 - 响应模型,其中有一个确认收到请求。你的注册服务没有返回任何数据(void),所以RegisterCompleted确实“完成了接受三个字符串参数并且没有返回任何数据”。

这是一件好事 - 现在你知道如果你开始注册时有问题,或者一切都很好,所以一切如常,直到你从服务器回听。你还不知道你是否真的注册过,这就是为什么你的客户端继续轮询服务器,直到服务器响应 - 好或坏。

他的previous article引用关于使用PollingDuplexHttpBinding的好MSDN example

+0

感谢您的回答。这对我的理解非常有帮助 – Firedragon