如果我的术语不准确,我仍在深思熟虑。
我正在创建一个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
现在我遇到的问题是我创建的Register调用将使用异步调用登录XMPP。但是寄存器调用本身也是非同步的。因此,我不知道Web服务调用等待其他服务的异步调用的最佳方式
我想做的是让Register成为单向调用,其想法是我的服务器将登录XMPP然后在登录后推送客户端(或fileld等)
[OperationContract(IsOneWay = true)]
void Register(string name, string password, string nickname);
但是当我导入Service Reference时,生成的类似乎有一个RegisterCompleted()调用,调用调试show。但我认为单向意味着没有响应,所以为什么呢?
答案 0 :(得分:3)
单向意味着没有响应数据。 Internet协议是请求 - 响应模型,其中存在对接收请求的确认。您的注册服务不返回任何数据(无效),因此RegisterCompleted确实完成了接受三个字符串参数并且没有返回任何数据"。
这是一件好事 - 现在您知道如果您在开始注册时出现问题,或者一切都很好,所以一切照旧,直到您从服务器收到回复为止。您还不知道您是否实际注册过,这就是为什么您的客户端继续轮询服务器直到服务器响应 - 好或坏。
他的previous article使用PollingDuplexHttpBinding引用了一个好MSDN example。