SOAP/WSDL/XSD 和 REST 方法之间的比较

Posted

技术标签:

【中文标题】SOAP/WSDL/XSD 和 REST 方法之间的比较【英文标题】:Comparison between SOAP/WSDL/XSD and REST approaches 【发布时间】:2016-01-28 13:43:31 【问题描述】:

到目前为止,我一直在专门研究用 Java 编写的 SOAP Web 服务。 要构建一个新的 SOAP WS,我的方法是这样的(主要步骤):

定义 WSDL/XML 模式 (xsd) 合同 从 XSD 生成 JAXB 类,从 WSDL 生成 JAVA 接口 实现生成的接口,即 Web 服务 部署 Web 服务

另外,为了为这个 WS 构建一个 Java 客户端,我重用了 WSDL 和 XSD 并将其包装在一个 JAR 中,并带有一些帮助程序来调用 WS。

所以是“自上而下”的方法。我使用 Apache CXF 来构建和部署我的 WS,尤其是它的 WSDL2Java 工具。

今天,我需要创建一个仅使用和生成 JSON 数据的 RESTful WS。 我做了一些研究,我可能会使用的工具是 Jersey 或 Apache CXF(很可能是 Jersey)。但无论如何,我不知道我必须采取什么方法。

可以和 SOAP Web 服务一样吗?我知道有 WADL,但是在我的情况下它可以用作 WSDL,特别是考虑到我的目标是使用 JSON 吗?我希望我的 POJO 也可以从某些模式生成,例如 SOAP WS 的 JAXB 类,以便更好地维护。

我完全偏离主题了吗?我知道 REST 和 SOAP 不应该以同样的方式看待。

你能帮我理解吗?谢谢

【问题讨论】:

我建议使用 Spring REST API。它有你想要的一切。 【参考方案1】:

您基本上也可以使用 REST 执行相同的过程,但差异很小但很重要:

第 1 步:定义应该可用的资源,并为 XML/Json/任何东西定义这些资源的表示形式。这在 HTTP 用语中称为 Mime 类型。它可以包含数据的模式,但更重要的是描述存在什么样的链接以及它们的含义。 (指向下一个结果列表的链接、指向所有者的链接、指向详细信息的链接等)除了对哪些字段是必填/可选等的技术描述外,还要在此处描述语义。

第 2 步:根据需要生成类。我发现一个项目说它可以为 json 做到这一点:https://github.com/joelittlejohn/jsonschema2pojo,我相信还有其他的。

第 3 步:实施。

第 4 步:部署。

注意:不存在与 SOAP 相同的 WSDL 或“服务类”。这是因为 REST 包含导航和语义信息(如果操作正确的话)。无需描述服务在哪里或如何访问它,因为所有客户端都可以通过链接到达那里,并且所有客户端都知道 GET。这实际上使得实现客户端也不同于使用 SOAP。

【讨论】:

以上是关于SOAP/WSDL/XSD 和 REST 方法之间的比较的主要内容,如果未能解决你的问题,请参考以下文章

Rest API 和 Google PubSub 之间更快的通信方法

Java REST Api(在 tomcat 上运行)- 在客户端和服务器之间获得实时同步的最简单方法

使用 Django rest 框架在两个 api 之间配置身份验证的最佳方法是啥?

Kafka 和 REST 用于微服务之间的通信?

Servlet Get和Web Service Rest之间的区别是什么? [重复]

REST 调用和 URL 之间的区别