我正在访问以c#编码的Web服务 - 我正在使用vb.net编写我的应用程序。 Web服务的所有者最近通过在枚举中添加了一些值以及将一些其他字符串值添加到WSDL中公开的类中来进行WSDL增强。
当合作伙伴更新此WSDL时,我的应用程序停止正确地将值绑定到我的对象。我的对象的一部分填充了值,但是部分对象不是......它们是NULL。
我打开了编译代码并更新了Web引用,代码又开始工作了。我的代码工作正常,但我试图理解为什么会发生这种情况。这是VB.net中的一些编码工具还是只是要处理的东西?我关心的只是未来的计划。
感谢您的帮助。
答案 0 :(得分:0)
他们更改了API并破坏了与旧API的兼容性。他们发布WSDL的事实使得更容易修复更改,但是一旦他们更新的Web服务开始运行,使用原始WSDL构建的客户端将工作或不工作(取决于更改的性质)。你可以放心,这也会发生在任何其他语言中。管理此破坏的常见做法是在不同的URL上托管更新的WSDL(通常使用URL中的版本号)。这样可以更轻松地并行运行不同版本,而不会破坏旧版应用程序。您有时需要打破API,因此与客户保持良好的沟通也很关键。我喜欢制作我弃用的API,只读取错误消息,帮助开发人员了解正在发生的事情,并且当我看到对不推荐使用的API的API调用时,我会立即发送电子邮件或拿起电话。这显然不适用于PayPal,但如果它是一个选项,它可以让合作伙伴高兴,到目前为止,它值得我的时间。