2011-06-30 21 views
1

我們有幾個(5+)應用程序碰到同一個數據庫,並且我們遇到了應用程序都自行掌握以獲取相同數據的查詢的問題。但是,由於不同的開發人員正在創建這些查詢,因此它們不盡相同,因此會不時返回不同的結果。創建服務來封裝業務查詢

據我所見,有兩種可能的解決方案。

  1. 創建庫,每個應用程序引用,以獲得正確的查詢
  2. 創建封裝每個應用程序使用的通用查詢WCF服務,並創建一個客戶端爲每個應用程序使用

我向選項2傾斜,因爲這將使我們能夠靈活地修改我們在查詢中使用的過濾器,從而一次更新每個應用程序。

的服務層次看起來像

public class QueryService 
{ 
    private readonly IRepository _repository; 

    public QueryService(IRepository repository) 
    { 
     _repository = repository; 
    } 

    public IEnumerable<int> GetCommonOperation() 
    { 
     return _repository.GetCommonOperation(); 
    } 

    public IEnumerable<AnotherDto> AnotherCommonOperation() 
    { 
     return _repository.AnotherCommonOperation(); 
    } 
} 

然後創建一個客戶端,將與QueryService互動。

所以我的問題是什麼是創建查詢服務的唯一目標是爲多個應用程序封裝常用查詢/操作的一般方法?

回答

1

您已經回答了您自己的問題。從本質上講,您希望將實現中的接口與Web服務(或WCF)完成相分離。如果您創建了一個程序集,那麼您仍然需要確保程序集與您的獨立客戶端一起部署,或者至少在任何應用程序都可以訪問的位置使用它。看起來像更多的工作。但是,請記住,如果您對服務簽名進行了更改,則使用該服務的任何客戶端也必須進行更新以反映新的定義。

關於Web服務(WSDL)的好處是它是通用的。您可以使用任何可以使用和解析WSDL的語言來編寫客戶端 - 與裝配不同,您將針對特定的構建或操作系統。因此,無論您是否擁有C#,Java,iOS,Android等客戶端,他們都可以利用您的服務。

+0

那麼,這就是答案。哈哈感謝您的答覆。 – gcso