我目前正在重構由多個不同客戶端應用程序使用的一個服務合同接口(以下稱爲「SCI」)組成的大型WCF服務。我已經分解了SCI,因此對於每種類型的客戶端應用程序,都有一個特定於它所需操作的SCI。 SCI的某些共享部分在基礎SCI中定義,客戶應用程序特定的SCI繼承。爲WCF服務上可用的服務合同接口中的一個生成客戶端
有一個服務類實現所有客戶端特定的SCI。事實上,共享基地SCI存在菱形界面繼承的情況意味着,有時候,通過多個SCI可以實現相同的操作。當自動生成客戶端(尤其是使用異步客戶端方法)時,由此產生的代碼有很多醜陋的<generated-type>1,2,3
等...
爲了避免這種情況,我想添加一個服務引用到每個客戶端應用程序,只有爲與該特定應用程序相關的SCI生成客戶端。這應該不會因爲不同的SCI上出現相同的功能而出現問題。
這可能嗎?
對於在這種情況下實現模塊化和代碼重用的任何其他提示也將被讚賞。
所以這將意味着實現一個客戶端使用一個通道服務?是否有可能通過自動生成的異步操作來獲取自動生成的客戶端類型? – EdF 2011-12-13 23:57:52
是的,你可以通過裝飾你WCF服務與ASYNC版本,請參閱此文章:http://msdn.microsoft.com/en-us/library/bb885132.aspx IE: [OperationContract(AsyncPattern = true) ] IAsyncResult BeginDivide(double n1,double n2,AsyncCallback callback,object state); double EndDivide(IAsyncResult ar); 給出了一個異步方法 – 2011-12-14 00:22:46