向后兼容性和 Web 服务

2024-05-27

所以我对 Web 服务有点陌生,最近出现了一种情况,我们向返回给客户端的数据类型添加了一个元素。客户抱怨这破坏了他们的实施,因为它被意想不到的新元素所阻碍。 (我们通过 Axis2 提供服务)。

对我来说,这似乎是一个无害的更改,客户端应该能够优雅地处理(我使用过一些非 Web 服务框架,在这些框架中添加可选信息是完全可以接受的)。我可以理解,如果我们删除或重命名某些字段,则会给客户带来问题。

基本上我希望 wsdl 表现得像一个接口。如果我们做出的更改本质上是该接口的子类型,我希望客户端会愉快地忽略无关的元素。这只是网络服务的一个缺点,还是有一种明智的方法可以对服务进行被动更改,以便新客户可以获得额外的数据,而老客户可以在闲暇时更新?


WSDL 实际上更像是一个契约,而不是一个接口。 WSDL 准确地描述了操作期望“接收”的内容以及期望“返回”的内容。与此最接近的类比是在 C 中更改函数的原型而不更改函数本身,它们不会匹配并且会导致问题。

WSDL 越具体,您“保证”实施的行为就越多。

如果您需要灵活地返回数据(即添加/删除字段等),您可以执行以下操作之一:

  1. 对 WSDL 定义进行版本控制并发布可以将旧版本重定向到新版本的服务
  2. 使用更抽象的数据返回类型(例如 XML)来隐藏复杂性或不断变化的数据。

2 有更多风险,但可以通过 XSD 或其他技术进行管理。您的特定项目要求将决定可接受的内容。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

向后兼容性和 Web 服务 的相关文章

  • 使用不在证书存储中的客户端证书

    我正在尝试使用我的客户端证书对 WebService 进行身份验证 但是 由于某些原因 我解释 我不想从存储加载证书 而是从光盘读取它 下列 gw is teh WebService client X509Certificate cert
  • CXF 增加连接池大小而不更改 http.maxConnections

    最近我被要求将 CXF 配置为与我们旧的 XFire 服务相同的参数 这些参数之一是Keep Alive timeout 60 max 20 然而 我做了一些研究 看来 CXF 使用 JVMHttpURLConnection引擎盖下的对象
  • 是否可以将 WSDL 与 REST Web 服务结合使用?

    我是网络服务领域的新手 是否可以将 WSDL 与 REST 绑定一起使用 或者我应该使用 WADL 可以将 WSDL 与 REST 绑定一起使用 但这实际上没有必要 REST 的简单性使得编写代码来使用该服务变得非常容易 使用 WSDL 只
  • 如何引用 WEB-INF 中的 client_deploy.wsdd 文件?

    一个基本问题 但我似乎找不到答案 我有一个 Axis 生成的 Web 服务 它还调用另一个 Web 服务 其存根也是使用 Axis 生成的 它部署在weblogic 9 2中 所谓的 Web 服务需要身份验证 我已经用谷歌搜索了设置身份验证
  • 使用 Copy.CopyIntoItems Web 服务将文件上传到 SharePoint 2010 时收到 400 错误请求

    SharePoint 新手 我尝试使用 Java 的 CopyIntoItems Web 服务方法将文档上传到 SharePoint 但不断收到 400 错误请求 我使用 Java 的 wsimport 从 wsdl 文件生成类文件 这是我
  • 为什么我们需要 RESTful Web 服务?

    我将学习 RESTful Web 服务 最好说我必须这样做 因为它是 CS 硕士学位课程的一部分 我在 Wikipedia 上阅读了一些信息 还在 Sun Developer Network 上阅读了一篇有关 REST 的文章 我发现这不是
  • 错误:使用 Microsoft WebService.dll 通过 Delphi7 规范化 XML

    我正在使用 Delphi7 修改旧项目以添加使用证书和签名 经过一番搜索后我发现XML 规范化函数 https learn microsoft com en us previous versions dd815358 v vs 85 但我无
  • 如何保护 RESTful Web 服务的安全?

    我必须实施安全RESTful Web 服务 https www ibm com developerworks webservices library ws restful 我已经使用谷歌做了一些研究 但我陷入困境 Options TLS H
  • python 3 suds 缓存不工作

    我正在尝试编写一个通过 Python 访问 Sharepoint 的脚本 已安装以下库 suds jurko ntlm 以下代码成功 但需要接近 20 秒 usr bin env python3 from suds client impor
  • 没有 ASP.NET/IIS 的 .NET Web 服务?

    我正在实现一个需要公开 Web 服务接口的服务器组件 但应用程序不需要它在 IIS 上与 ASP NET 一起运行 有没有一种直接的方法可以在不使用 ASP NET IIS 的情况下在 NET 中实现 Web 服务 我使用的是 NET 3
  • android:web服务图像替换为本地文件夹中的图像

    我进入了 Android 聊天应用程序的最后阶段 我在使用图像和网络服务时遇到了一些问题 因此 当我选择图像并将该图像发送到 Web 服务时 我从服务获取 URL 我如何将该网址转换为本地文件夹中的图像 我很困惑如何才能使其发挥作用 我想在
  • 请求失败,HTTP 状态 401:未经授权

    我有一个在 IIS6 XP Pro SP2 中运行的 NET 2 0 网站 VB 和托管 ASMX Web 服务的 NET 3 5 当然 在 IIS 的 ASP NET 选项卡下配置为 NET2 在 Chrome 中 我可以成功调用 ASM
  • 将 s:element 和 s:complexType 命名为相同的名称

    将 s element 和 s complexType 命名为相同名称是否合法 可以看到下面的代码 element和complextype具有完全相同的名称 这是 wsdl 文件的一大块
  • 有哪些好的 WWSAPI 信息源?

    有人对 WWSAPI 及其使用的网站 书籍 教程或其他信息源有一些好的建议吗 我正陷入一个使用它的项目的深渊 并且想让自己跟上进度 http msdn microsoft com en au magazine ee335693 aspx h
  • TSQL 返回 NO 或 YES,而不是 TRUE 或 FALSE

    如果某些列返回 FALSE 如何显示不同的值 例如 COLUMN BASIC 返回 FALSE 但我需要向用户显示 YES 或 NO 情况为 FALSE 返回 NO 如果是 varchar 或 bit 则处理 NULL case when
  • 如何处理用户界面中的数据库约束违规?

    我们使用存储过程在数据库中实现大部分业务规则 我永远无法决定如何最好地将数据约束违规错误从数据库传递回用户界面 我所说的约束更多地与业务规则相关 而不是与数据完整性相关 例如 诸如 无法插入重复的键行 之类的数据库错误与业务规则 不能有多个
  • 为什么静态方法不能用作 ASMX Web 服务中的 Web 服务操作?

    我只是想了解为什么我不能在 Web 服务中使用静态 Web 方法 为什么会受到限制 有人可以给我对此进行简洁的解释吗 答案是 因为你不能 它不是这样设计的 其设计是 将创建 Web 服务类的实例 然后调用实例方法 我只能猜测微软为什么这样设
  • 当会话令牌无效时,我应该使用什么状态代码?

    创建 Web 服务 RESTful 时 当会话令牌无效时我应该使用什么状态代码 目前我公司的人给我发了一个404 未找到 但我认为这是不正确的 因为资源存在 也许我应该使用 401 Unauthorized 你怎么认为 您建议我在这种情况下
  • 如何使用 PHP 构建正确的 SOAP 请求

    我需要格式化 构建此 SOAP 服务 的请求 http api notificationmessaging com NMSOAP NotificationService wsdl http api notificationmessaging
  • 从Web API同步调用外部api

    我需要从我的 Web API 2 控制器调用外部 api 类似于此处的要求 使用 HttpClient 从 Web API 操作调用外部 HTTP 服务 https stackoverflow com questions 13222998

随机推荐