2012-12-07 125 views
3

有2個團隊正在開發一款產品。一個團隊正在研究服務器端邏輯,作爲WCF服務公開,另一個團隊正在實現前端(ASP.NET MVC網站)。這兩個團隊之間共享服務API的正確解決方案是什麼?通過API我的意思是一個Web服務接口+一堆DTO類。我們正在使用git和TeamCity進行持續集成。服務和前端是獨立開發和部署的。共享客戶端和服務器的WCF合同

在此基礎上,我看到的選項是:

  1. 將所有「接口」的東西到一個單獨的項目,並通過混帳模塊共享。客戶端和服務器都將共享代碼。
  2. 將所有「接口」內容放入單獨的項目中,並將其發佈到私人NuGet存儲庫。客戶端和服務器都將引用唯一的通用程序集。
  3. 將客戶端和服務器都放到單個VS解決方案中,並真正地共享程序集。

選項3感覺像是最簡單的方法,易於實現和理解,但我並不是很滿意獲得更大解決方案的整個想法。選項1和2的感覺完全相同,但我更喜歡選項2。

您認爲在這裏更好的方法是什麼?其他解決方案?

回答

5

我們使用選項4 - 客戶機和服務器在不同的解決方案,但兩種方案包含相同的WCF合同項目(只包含[DataContract][ServiceContract]定義),並將其與項目參考而不是彙編參考進行比較。這聽起來很有趣,但它工作得很好。

兩種解決方案都可以單獨建立,他們都得到了相同的DLL,因爲無論順序排列內置的,第二個版本將不會重新編譯DLL,因爲它已經是最新的。

這樣做的主要優勢,因爲我看到的是,當有人讓源代碼變更合同項目中,變化是立即提供給客戶端和服務器端的代碼,而無需「刷新」任何東西。這削減了參數,像「我做出的改變」,「不,你沒有」,「是的,我做了」,「好還看不出來」等等

1

在我的項目,我們使用了類似的方式,你在選項1共享代碼描述

2

我們做專賣店我們的通用代碼採用單獨的解決方案它生成的.dll被添加爲一個簡單的程序集引用到多個依賴它們的其他項目。

所有的構建都是在nant文件中定義的,我們確實有一些.bat文件以適當的順序運行構建。

當你只是想建立從VS項目,依賴.dll文件很可能已經建立。如果你想成爲100%你有一切都是建立在最新的變化,你運行這些蝙蝠腳本,這將觸發nant構建和重建一切。

相關問題