SOAP/WSDL中的API可以轻松地向后兼容吗?

Dim*_* C. 5 soap wsdl backwards-compatibility

使用IPC库时,重要的是它提供了客户端和服务器即使在其API版本不同时也可以进行通信的可能性.由于我正在考虑将SOAP用于我们的客户端/服务器应用程序,我想知道SOAP/WSDL解决方案是否可以很好地处理API更改.

例如:

  • 向现有功能添加参数
  • 将变量添加到现有函数中使用的现有结构
  • 删除功能
  • 从现有功能中删除参数
  • 从现有函数中使用的现有结构中删除变量
  • 更改现有函数中使用的参数的类型
  • 更改现有函数中的参数顺序
  • 更改现有结构中复合零件的顺序
  • 重命名现有功能
  • 重命名参数

注意:"struct"我指的是复合类型

ewe*_*nli 2

据我所知,没有符合 SOAP/WSDL 标准的东西。但存在解决此类问题的工具。例如,在 Glassfish 中,您可以指定XSL样式表来转换 Web 服务的请求/响应。其他解决方案(例如 Oracle SOA 套件)提供了更精细的工具来管理 Web 服务的版本控制和组件集成。消息可以自动路由到不同版本的网络服务和/或转换。您将需要检查您的目标基础设施提供什么。

编辑

XML 和 XSD 在模式的演变方面比面向对象语言中的类型和序列化更加灵活。有些东西可以通过简单地将它们声明为可选来向后兼容,例如

  • 向现有函数添加参数- 如果参数是可选的,null如果客户端不发送它,您会得到一个值
  • 将变量添加到现有函数中使用的现有结构中- 如果该值是可选的,null则在客户端不提供它时您会得到
  • 删除函数- 这里没有魔法
  • 从现有函数中删除参数- 根据新定义,客户端发送的参数将是多余的,并将被省略
  • 从现有函数中使用的现有结构中删除变量- 在这种情况下我不知道
  • 更改现有函数中使用的参数类型- 这取决于更改。对于简单类型,序列化/反序列化可能仍然有效,例如 String 到 int。

请注意,我不能 100% 确定该列表。但一些测试可以告诉您什么有效,什么无效。要点是 XML 是通过线路发送的,因此它提供了一定的灵活性。