2011-07-28 19 views
1

再次我的問題是關於WCF服務客戶端基礎結構中基於事件的模型客戶端開發。我想知道的是,與使用ClientBase無關,可以使用ChannelFactory手動實現此模式,例如我可以編寫GetDataAsync進行客戶端訪問,仍然使用ChannelFactory並在此實現服務器端的異步調用?基於事件的模型客戶端和ChannelFactory <T>

回答

1

答案取決於您是否控制服務合同。如果您可以定義服務合同,則您添加返回/使用IAsyncResult的相應開始/結束方法shown in the code in this blog post.

如果您無法更改服務合同,則必須手動創建服務合同的異步版本,將其提供給ChannelFactory。 ChannelFactory本身不提供服務操作調用的異步模式。您的代碼將最終看起來像code in this MSDN sample.

+0

是我控制客戶端和服務器,所以我可以直接添加對我的合同dll的引用。你給我的鏈接並不是我想知道的。我想看到的是使用渠道工廠,並仍然基於基於事件的模式在客戶端實施 –

+0

查看答案中的MSDN示例鏈接,它非常清楚地顯示如何異步調用服務。您只需確定您的應用程序中將實施AddCallback方法的版本。 –

+0

我理解MSDN示例,但它是BeginXXX/EndXXX的傳統異步模式,並且沒有基於事件的模型方法,所以回到我原來的問題。我想在客戶端實現基於事件的模型,而WCF服務使用一些異步操作 –