2012-11-18 94 views
12

我們在.NET 3.5(現在在.NET 4.0下重新編譯)中構建了一個強大的WCF客戶端,該客戶端通過net.tcp綁定與我們自己的WCF服務通信。強大的客戶端使用ChannelFactory <IOurServiceInterface>()生成服務代理,通過該服務代理我們當前對該服務進行同步調用。我們從每次通話中獲得結果;我們沒有單向電話。如何應用任務異步模式和WCF的ChannelFactory <TChannel>?

我們正在遷移到.NET 4.5/C#5,並希望使用async/await/TAP使客戶端異步。如何以最好的方式做到這一點,從而實現乾淨的代碼和良好的運行時性能? (我已經看過關於這個主題的MS文檔,但它總是談論關於運行svcutil,我們不使用svcutil;我們直接使用ChannelFactory,另外:用於調用操作的MS文檔使用下面的通道工廠異步執行。 NET 4.5不變,因爲NET 3.0天。似乎的ChannelFactory並沒有接受新的不同步。)

回答

6

你可以用現有的APM(Begin*/End*)端點到TAP準備Task S使用TaskFactory.FromAsync

您可能會發現我的Async WCF Today and Tomorrow post有幫助,它顯示瞭如何在VS2012之前使用TAP。

+0

謝謝斯蒂芬。根據您的答案搜索信息後,在閱讀您的文章後,我認爲這是最好的可以完成的。我很驚訝ChannelFactory在這個時代仍然期望你使用APM模式。 –

3

你看到this? 我舉了一個等待[OperationContract]返回Task<TResponse>的例子。

+0

謝謝;我會檢查一下。 –