我正在與我的團隊一起工作在我們工作的「核心」領域,我們有幾個DB,Webservices,Importer等等......我們通過後端WCF webservice向其他團隊公開域服務。這個web服務在幾個api(或地區)中被切斷。 我們在幾臺生產服務器(~80臺)上部署(1臺服務器< - > 1個客戶)。分支webservice api版本
問題是:有些api上市,我們必須通過許多版本維護相同的合同。其他團隊想要更多的靈活性(3內部API合同版本),因爲他們不能遵循我們的交付率(更長的週期)
其實我們只是作爲一個整體,我們正在使用經典的三分支分支/ MAIN/RELEASE'n')
我想升級我的TFS團隊收集組織處理的每個API版本定義版本的範圍:
- API富V2(hxxp:// - 主機 -/api/foo/v2/...)
- API Foo v3(hxxp:// - host-/api/foo/v3/...)
- API Bar v1(hxxp:// - host-/api/bar/v1/...)
- API Bar v2(hxxp:// - host-/api/bar/v2/...)
目前,我們有以下分支架構:
$\MyTeamCollection
|___\DEV {Branch}
|___\Databases
|___\MyDBProj (SSDT)
|___\Documents
|___\MyWebService\MyWebSvc.Usage.docx
|___\Projects
|___\MyWebService.Core
|___\MyWebService.API.Bar
|___\MyWebService.API.Foo
|___\Shared
|___\MyDB\MyDB.DacPac, etc...
|___\MyWebService\MyWebsvc.Bar.Contract.Dll <-- WCF DataContract/ServiceContract
|___\MyWebService\MyWebsvc.Foo.Contract.Dll
|___\MAIN {Branch} <-- This one is what is on the integration server
|___\R1 {Branch} <-- This one went on a production server and is kept aside
|___\R2 {Branch}
|___\Archive
|___\R0 {Branch} <-- This one is obsolete but is archived here
其實它處理一組單API版本的。 =>每個發佈船有一套最新的api版本(Foo,Bar)
我的問題是我怎麼能演變這個來處理每個版本中的多個Api版本(Foo-v1,Foo-v2,bar-v3, bar-v4) 我應該在分支內創建分支嗎?這不是一場噩夢嗎? 任何實際工作的團隊組織在你身邊?
謝謝, -Jeremy。
一些補充:
所有我的客戶都是淨,我們爲他們提供一個名爲MyWebsvc.Foo.Contract.Dll大會。該組件包含:
其由代理模式[ServiceContract]
public interface IFooService {
Foo Get(int Id);
}
而需要的所有數據契約(DTO +串行化)
[DataContract]
public class Foo {
// ...
}
上的Web服務側實施
的ServiceContract接口有實際執行
public class FooServiceImpl : FooApi.IFooService { ... }
你是否考慮過在IIS上運行不同的應用程序? – Aron
我已經考慮過這個問題,但問題是:我正在使用實體框架來實現數據訪問層,它與數據庫模式緊密結合。當我有模式的演變時,我必須更新所有IIS應用程序(8個apis x 3個版本x 80個客戶) –