2009-07-06 75 views
2

我們有一個大型應用程序,運行在大約5個位置。這些位置都沒有運行相同版本的應用程序。這使修補和更新非常複雜。我應該如何支持並繼續開發分叉式應用程序?

請嘗試關注此示例:我們將調用我正在討論的「應用程序A」的應用程序。現在我們要將應用程序B推出到這些位置之一,並且它必須實現應用程序A.我們必須修改A以接受B的要求。但是,我們的開發版本A(最終每個位置將具有的版本)也必須支持B。這意味着我們必須回退到在需要B的站點上運行的軟件的狀態,並且將這些變更改爲我們的A的開發版本。這也意味着其他4個位置正在實現A的無版本B支持。

所以你可以看到它在控制版本的過程中感到沮喪。如果我們想要支持站點2-5,我們不能使用我們的源代碼的開發版本,我們必須回滾到該站點上的特定版本。什麼是最好的方法來做到這一點?請記住,我們正在使用Visual Studio 2008和Team Foundation Server。

+2

聽起來像經典的「醫生,當我傷害做這個!」情況。 – 2009-07-06 17:57:03

回答

4

我會推薦的第一件事是重構你的應用程序,使其全部使用相同版本的核心產品。

嘗試將特定功能邏輯地分解到其自己的模塊中,並通過適配器類型模式訪問該功能。

+1

謝謝你的術語,約翰。正是我在尋找 - 「分叉應用程序」和「適配器模式」。 – Daniel 2009-07-06 18:55:03

1

約翰指出了一個關鍵的第一步。在你的代碼庫內部穩定之前,沒有什麼可以發生的。

但即使在將應用程序劃分爲具有定義明確的接口的可重用組件後,仍可能需要維護多個/所有這些組件的多個版本(「分支」),並行開發其版本。這就是分支進來的地方。

我強烈推薦閱讀新的TFS Branching Guidance論文。我對先前的修改很批評,但文檔團隊真的在這裏改進了他們的產品。 (部分歸功於TFS獲得更廣泛採用的額外反饋意見......但等於終於關注已建立的SDLC規範,遠遠早於微軟進入市場)

+0

「直到你的代碼庫內部穩定才能發生任何事情」 - 感謝Richard的評論,但那不是我的觀點。我的意思是通過某種類型的加載項模型來卸載核心功能並管理其他特定於位置的功能。所以每個人都有相同版本的應用程序X,位置y有y插件,位置z有z插件。 KWIM? – 2009-07-07 11:59:50

相關問題