我的應用程序有2個「服務」,比方說一個是基本(整數)計算器,另一個是浮點計算器。我表示這些接口如下:WCF和接口繼承 - 這是一件可怕的事情嗎?
public interface IBasicCalculator
{
int Add(int a, int b);
}
public interface IFloatingPointCalculator
{
double Add(double a, double b);
}
我想通過WCF公開這些。不幸的是,WCF似乎與所有可能的操作都需要經過一個單一的服務接口 - 你不能在服務之間共享會話,這在客戶端很麻煩,因爲你需要創建一個單獨代理每個人,似乎沒有任何「子服務」等...
所以,我已經收集到,我需要提出一個「組合」接口(也可以稱之爲門面),像這樣:
[ServiceContract]
public interface ICalculatorService : IBasicCalculator, IFloatingPointCalculator
{
[OperationContract(Name = "AddInt")]
new int Add(int a, int b);
[OperationContract(Name = "AddDouble")]
new double Add(double a, double b);
}
如果我這樣做,那麼WCF暴露了這兩種方法的客戶端,可以打電話給他們,而這一切實際工作。
但是,「繼承接口」似乎是不明智的。 特別的new
int Add
和new
double Add
。嚴格來說,一個方法上的new
表示隱藏了一個基本的方法,而我根本沒有這樣做。我可以省略new
,但後來我得到的編譯器警告相當於「我認爲我隱藏了這種方法,您需要重命名它的方法或在其上放置新的」。
所以,這是一個2部分的問題:
難道我的軌道上與我「一切都結合成一個接口」的邏輯,或者是有實際揭露「子服務」還是有辦法使用WCF的「多個鏈接服務」?
如果這是需要做的,有沒有更好的方法?
謝謝!
順便提一下,我使用標記接口作爲所有數據協定的基礎。這使我能夠一般地處理我的WCF框架內的數據合同。 – 2009-01-23 22:07:51