0

我正在访问一个用 c# 编码的 Web 服务 - 我正在用 vb.net 编码我的应用程序。Web 服务的所有者最近通过在枚举中添加一些值以及向 WSDL 中公开的类添加一些其他字符串值来增强 WSDL。

当合作伙伴更新此 WSDL 时,我的应用程序停止将值正确绑定到我的对象。我的部分对象填充了值,但部分对象不是......它们是NULL。

我打开了编译好的代码并更新了网络参考,代码又开始工作了。我的代码运行良好,但我试图了解为什么会发生这种情况。这是在 VB.net 中编码的一些工件还是只是要处理的事情?我关心的只是未来的规划。

谢谢您的帮助。

4

1 回答 1

0

他们更改了 API 并破坏了与旧 API 的兼容性。他们发布了 WSDL 的事实使您更容易修复更改,但是一旦他们更新的 Web 服务开始运行,从该原始 WSDL 构建的客户端将工作或不工作(取决于更改的性质)。您可以放心,这也会在任何其他语言中发生。管理这种破坏的一种常见做法是在不同的 URL 上托管更新的 WSDL(通常在 URL 中带有版本号)。这样可以更轻松地并行运行不同版本,并且不会破坏旧应用程序。有时您需要破坏您的 API,因此与您的客户保持良好的沟通也是关键。我喜欢将我弃用的 API 设为只读,并首先显示错误消息,以帮助开发人员了解正在发生的事情,一旦看到对已弃用 API 的 API 调用,我就会立即发送电子邮件或拿起电话。这显然不适用于 PayPal,但如果它是一个选项,它可以让合作伙伴满意,到目前为止,它值得我花时间。

于 2013-05-10T21:34:41.720 回答