我有一個像服務器一樣的軟件。客戶端通過暴露的接口與該軟件進行通信。我們公司希望爲我們的軟件引入新功能。使軟件根據版本選擇更改其行爲
版本1: 客戶< --->接口X1,Y1,Z1 < ---->服務器
版本2:
客戶< --->接口X2,Y2,Z2 ---->服務器
客戶希望能夠隨時切換到舊版本。當然,如果他們想切換到不同的服務器版本,他們會將其界面更改爲舊版本。我們公司希望我們有一個下拉選擇不同的版本。選擇最新版本應該公開新功能。選擇以前的版本應該隱藏新的功能。現在,問題是新功能還修改了現有功能的行爲!一些暴露的界面已經改變。這包括現有的方法簽名更改,某些方法刪除和一些新的方法添加。但是,現有方法中的主要代碼更改沒有完成。客戶端軟件將進行更改以適應服務器更改,無論何時切換版本。由於代碼庫相當大,我們的服務器代碼維護是主要關注的問題。因此,我們公司既不希望我們添加if/else條件檢查來實現此目標,也不會重複編碼。該軟件使用.NET 3.5 & WCF以C#編寫。客戶端使用SOAP與此軟件進行通信。
請建議我實現此目標的最佳方法。任何文件/設計/代碼我可以參考也讚賞。在此先感謝
感謝ArsenMkrt的指導。爲了深入研究更多細節,合同 - 接口由第三方提供。這是所有公司都應遵循的標準。所以我們無法控制接口。我們需要實施和支持他們。有沒有什麼辦法可以符合這兩個版本的接口而沒有太多的改變? – Alerter
保持兩份合同的問題是什麼?你可以在這種情況下擁有兩個接口併爲這兩種情況保留實現,它不一定會重複代碼,你可以在一個服務中實現它或者有一些幫助類 –
謝謝你理解我的問題。你能多提一些嗎?由於我沒有做太多的設計工作,如果你能舉一些例子或指向一個我可以檢查的地方,我會非常感激。 – Alerter