我有一个像服务器一样的软件。客户端通过公开的接口与该软件进行通信。我们公司想为我们的软件引入新功能。
版本 1:客户端 <---> 接口 X1、Y1、Z1 <----> 服务器
版本 2:
客户端 <---> 接口 X2, Y2, Z2 ----> 服务器
客户希望能够随时切换到旧版本。当然,如果他们想切换到不同的服务器版本,他们会将界面更改为旧版本。我们公司希望我们有一个下拉菜单来选择不同的版本。选择最新版本应该会公开新功能。选择以前的版本应该隐藏新功能。现在,问题是新功能也修改了现有功能的行为!一些公开的接口已更改。这包括现有方法签名更改、一些方法删除和一些新方法添加。但现有方法中的主要代码更改尚未完成。每当切换版本时,客户端软件都会进行更改以适应服务器更改。我们的服务器代码维护是主要关注点,因为代码库非常大。所以我们公司既不希望我们添加 if/else 条件检查来实现这个目标,也不希望我们重复代码。该软件使用.NET 3.5 和 WCF 用 C# 编写。客户端使用 SOAP 与该软件进行通信。
请建议我实现这一目标的最佳方法。我可以参考的任何文档/设计/代码也受到赞赏。提前致谢