人们倾向于在分布式系统设计中遇到这种问题。它出现在 Web 服务(定义参数和返回类型的 WSDL)消息系统中,其中消息的格式可能是 XML 或其他一些明确定义的格式。在所有情况下,控制客户端和服务器耦合的问题仍然存在。
你的哈希表会发生什么?假设您的请求包含“NAME”和“PHONE-NUMBER”,突然您意识到需要区分“LANDLINE-NUMBER”和“CELL-NUMBER”。如果您只是更改哈希表条目以使用新值,那么您的服务器需要同时更改。假设此时您不仅有一个客户端和一个服务器,而且可能正在处理某种交换或代理系统,许多团队实现了许多客户端,许多团队实现了许多服务器。要求他们所有人同时升级到新的消息格式是一项艰巨的任务。
因此,我们倾向于寻求可回溯的解决方案,例如添加更改,我们保留“PHONE-NUMBER”并添加新字段。服务器现在可以容忍包含旧格式或新格式的消息。
不同的分发技术对向后兼容具有不同的内置容忍度。在处理序列化类时,您可以处理旧版本和新版本吗?在处理 WSDL 时,消息解析器是否会容忍附加更改。
我将遵循以下过程:
1)。您是否会在客户端和服务器之间建立简单的关系,例如您是否对两者进行编码和控制,可以自由决定它们的发布周期。如果“否”,则支持灵活性,使用哈希表或 XML。
2)。即使您可以控制,请查看您的序列化框架支持版本控制的难易程度。强类型化、序列化的类接口很可能更容易使用,前提是您清楚地了解更改接口需要做什么。