2012-08-27 35 views
0

我希望能夠創建一個客戶端看起來像是同步的WCF服務,但實現服務器端是異步的。我知道ASP.NET允許我通過實現IHttpAsyncHandler來實現這一點,但似乎無法在WCF中找到等價物。Asynchronous WFC server side like IHttpAsyncHandler

這是一個已經存在的服務,我們希望轉移到異步實現服務器端,而不更改客戶端。這可能嗎?

回答

1

如果您使用.Net 4.5,請更改服務合同界面中的OperationContract方法,以返回Task<type>而不是類型。在實現接口使用異步調節劑的方法和使用類中,遵循基於任務的異步模式等待
http://msdn.microsoft.com/en-us/library/ms734701 http://channel9.msdn.com/Events/TechEd/NorthAmerica/2012/DEV326

+0

我們還沒有在.NET 4.5中,我們可以升級服務器沒問題,但升級客戶端會更復雜。無論如何沒有改變合同呢? – Robert

+0

如果將服務升級到WCF 4.5,即使您返回任務而不是類型,合同也將保持不變。該示例生成了客戶端代理,該代理也具有任務,但這是可選的。如果客戶端版本較低,客戶端將生成非異步方法。 – softveda

+0

+1。 WCF元數據始終將接口描述爲同步,所以將異步WCF實現與客戶端同步應該沒有問題。有關.NET 4.0上的'async' WCF的詳細信息,請參閱我的博客文章[Async WCF Today and Tomorrow](http://nitoprograms.blogspot.com/2012/08/async-wcf-today-and-tomorrow.html)和4.5。 –