【问题标题】:How to validate WSDL contract break?如何验证 WSDL 合同中断?
【发布时间】:2013-05-03 14:58:28
【问题描述】:

我知道什么会违反 WSDL 合同 (What are considered non-breaking or backwards-compatible changes to a WSDL contract?),但是每次我们对某些 WSDL 进行更改时,我们都需要向其他团队证明该更改是否违反了合同。由于我们不想将整个应用程序构建为我们服务的客户端,因此我们希望为此目的使用一些更简单的工具,例如soapUI。

我已经查看了soapUI 断言并在互联网上,但仍然没有找到任何线索。 有人可以帮帮我吗?

感谢和问候,

【问题讨论】:

    标签: soap wsdl soa soapui contract-first


    【解决方案1】:

    您可以为您的 wsdl 合约创建一个 xml 方案或 dtd,然后您可以使用它来轻松地验证您的 wsdl xml 的结构。

    【讨论】:

    • 嗨,马可!感谢您的答复。我知道从 WSDL 生成 XML 模式并不容易,尤其是当您有多个服务时。不过,您的解决方案是我迄今为止找到的最好的解决方案。我真的不明白为什么soapUI或其他类似工具无法验证这一点......再次感谢!
    • 不幸的是,因为您使用的是基于 xml 的服务,我认为没有其他方法可以做到这一点,它并不完美,但这就是我们所得到的。至于工具,也许还没有人知道 :)
    • 不,仅模式是不够的。 SOAP 请求不仅仅是 XML。操作、编码、SOAP 1.1/1.2、样式、策略——所有这些(以及更多)都可能破坏向后兼容性。查看我的免费工具:wsdldiff.mockmotor.com,它有望发现所有使 WSDL 版本不兼容的修改。
    • @VladatMockMotor 是的,是的。每个 xml 文档、soap 或其他文档都可以使用 xml 方案或 dtd 进行结构验证,所以是的,你完全错了。有可以生成xml方案文件的工具,不用你介绍了...
    • @MeTitus 当您拥有有效负载 XML 时,您可以对其进行验证。但是,问题在于拥有旧的和更新的 WSDL,而不是有效负载。假设一个新的 WSDL 将 xsd:sequence 替换为 xsd:all。它会破坏合同吗?形式上,它确实 - xsd:all 未指定顺序。但是,旧代码生成的 xsd:sequence 将被新代码验证为 xsd:all,即有效性是定向的。甚至 xsd:all 结果也可以(错误地)验证为 xsd:sequence 如果元素的顺序在此实现中意外匹配序列中的顺序。在其他实现中,它可能会中断。
    【解决方案2】:

    看看WSDL Diff Command Line Tool。该工具根据您服务的两个 WSDL 文件(原始文件和修改后的文件)生成 HTML 报告。在报告中,您可以看到修改后的合同中引入的所有重大更改。

    【讨论】:

    • 不幸的是,它不能捕捉到所有的变化。我记得有一个修改过的,我想,这给了我一些麻烦。该工具似乎没有得到积极开发。
    猜你喜欢
    • 2012-05-02
    • 1970-01-01
    • 1970-01-01
    • 2010-09-14
    • 1970-01-01
    • 2012-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-02
    相关资源
    最近更新 更多