2010-02-02 30 views
2

我有一個接口ICustomerService:從界面定義中分離wcf服務契約是否有任何價值?

public interface ICustomerService 
{ 

    CustomerList FindAll(); 
} 

,並實現該接口的具體類。現在我需要使用WCF /休息暴露在網上的方法,我已經不得不改變接口定義的:

[ServiceContract] 
public interface ICustomerService 
{ 
    [OperationContract] 
    [WebInvoke(
    Method = "GET", 
    UriTemplate = "Customers")] 
    CustomerList FindAll(); 
} 

我的問題是,如果有任何缺點有這些屬性附加到您的接口如果有客戶想要使用dll引用的實現而不是使用其餘的api?我知道使用REST的缺點就像必須將參數設置爲類型字符串(如果它在uri中)。

回答

0

除了代碼可讀性(如果你的客戶必須看你的接口源代碼),除了可能的代碼可讀性外,應該沒有這些屬性的缺點。

屬性可以被感興趣的任何人閱讀(如WCF框架)或將被忽略。實際上,它們在任何實施課程中都不可見(請參閱this question)。

但是,在體系結構級別,請考慮使用2個接口,一個用於dll引用客戶端,另一個用於REST客戶端。他們可能在開始時是相似的,他們甚至可能共享相同的基本接口和實現,但是如果業務案例需要它們,您可以使它們相互轉移。
此外,這使您可以將WCF屬性填充到WCF Web應用程序項目中的接口以及核心類庫項目中的乾淨接口和實現中。

相關問題