【问题标题】:Why does WSDL change break vb.net application?为什么 WSDL 更改会破坏 vb.net 应用程序?
【发布时间】:2013-05-10 21:26:53
【问题描述】:
我正在访问一个用 c# 编码的 Web 服务 - 我正在用 vb.net 编码我的应用程序。 Web 服务的所有者最近通过在枚举中添加一些值以及向 WSDL 中公开的类添加一些其他字符串值来增强 WSDL。
当合作伙伴更新此 WSDL 时,我的应用程序停止将值正确绑定到我的对象。我的部分对象填充了值,但部分对象不是……它们是 NULL。
我打开编译后的代码并更新了网络参考,代码又开始工作了。我的代码运行良好,但我试图理解为什么会这样。这是在 VB.net 中编码的一些工件还是只是需要处理的东西?我关心的只是未来的规划。
感谢您的帮助。
【问题讨论】:
标签:
.net
vb.net
service
web
wsdl
【解决方案1】:
他们更改了 API 并破坏了与旧 API 的兼容性。他们发布了 WSDL 的事实使您更容易修复更改,但是一旦他们更新的 Web 服务开始运行,从原始 WSDL 构建的客户端将工作或不工作(取决于更改的性质)。您可以放心,这也会在任何其他语言中发生。管理这种破坏的一种常见做法是在不同的 URL 上托管更新的 WSDL(通常在 URL 中带有版本号)。这样可以更轻松地并行运行不同版本,并且不会破坏旧应用程序。有时您需要破坏您的 API,因此与您的客户保持良好的沟通也是关键。我喜欢让我弃用的 API 首先读取错误消息,以帮助开发人员了解正在发生的事情,并且我会在看到对弃用 API 的 API 调用时立即发送电子邮件或拿起电话。这显然不适用于 PayPal,但如果它是一个选项,它可以让合作伙伴满意,到目前为止,这值得我花时间。