0
我發現自己被吸引到在這種情況下使用兩個相同的接口,看起來不正確。然而,替代方案似乎是從我的服務中使用WCF裝飾的界面,這也感覺不對。WCF設計:避免接口複製
示例如下
這裏是接口爲我的WCF服務
[ServiceContract(Namespace="http://MyNameSpace")]
public interface IGetDataService
{
[OperationContract]
List<MyDataObject> GetData();
}
現在,讓我們說服務只能從數據庫獲取數據。我需要一個實現來促進這種檢索。這個類是否也應該實現IGetDataService,因爲方法是相同的?或者我應該有另一個接口,打了個比方,IDataRepository:
public interface IDataRepository
{
List<MyDataObject> GetData();
}
注意,這個接口是相同的IGetDataService在簽名的條款。唯一的區別是缺乏WCF相關的屬性。
class DatabaseDataRepository: IDataRepository
{
public List<MyDataObject> GetData()
{
// code to query database here
// return populated List<MyDataObject>
}
}
至於WCF服務本身(完整性)的實現:
class DataService: IGetDataService
{
public List<MyDataObject> GetData()
{
var repository = MyIocContainer.GetInstance<IDataRepository>();
return repository.GetData();
}
}
因此,要總結:我需要在內部IDataRepository或者是可重複使用的IGetDataService?
我相當有信心都會工作 - 對設計最佳實踐感興趣。
謝謝@Derek Van Cuyk。同意你的陳述。另外,考慮一下,有兩個接口的代碼對於需要檢測的代碼來說會更清晰。在服務中使用IGetDataService的實現可能有點混亂 – GinjaNinja