旧协议需要改变时,如何保持和旧协议的兼容。

时间:2022-10-28 19:31:28

两大方法:
一,扩展旧协议
二,重新定义新协议

下面讨论扩展旧协议的两种方法:

1,版本号:每个协议都有个版本号(或者只需要一个客户端的版本号就可以???)。服务器兼容客户端好办,因为服务器可以随时升级。考虑服务器兼容不能及时升级的客户端的问题。
   服务器上的代码
   if( ver == 1)
{
///解析REQ结构
   ///给客户端回版本号为1的ACK协议结构
}
else   ///if( ver == 2 ) 不要做这种限制 因为有时候REQ协议没改 但处理流程改了(这时候版本号也会改的)
{
  ///解析REQ结构
  ///给客户端回版本不是1的ACK协议的结构
}


2,不依赖版本号  依赖TKSUFFIXIDX  然后把新增的内容都放在最后。
 如果处理流程改了而协议结构没改,依赖TKSUFFIXIDX就不太合适了。这时只能定义新协议了。定义新协议还需要把一些旧协议的处理流程搬到新协议里面或者抽取出来定义成公共函数

总结:兼容旧版本有三种方式

1,新增的都放在后面。

2,版本号

3,定义新协议