2011-10-04 32 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

相關問題