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

时间:2016-01-28 13:43:31

标签: web-services rest soap jersey cxf

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

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

此外,要为此WS构建Java客户端,我将重用WSDL和XSD并将其包装在单个JAR中,并使用一些帮助程序来调用WS。

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

今天,我需要创建一个RESTful WS,它只消耗和生成JSON数据。 我做了一些研究,我可能会使用的工具是泽西岛或Apache CXF(很可能是泽西岛)。但不管怎样,我不知道我的方法是什么。

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

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

你可以帮我理解吗?感谢

1 个答案:

答案 0 :(得分:0)

您基本上可以使用REST执行相同的过程,但有一些小但重要的区别:

步骤1 :定义应该可用的资源,并为这些资源的表示定义XML / Json /的模式。这在HTTP用语中称为Mime类型。它可以包含数据的Schema,但更重要的是描述了存在什么类型的链接及其含义。 (链接到下一个结果列表,链接到所有者,链接到详细信息等)除了技术描述哪些字段是必需/可选等之外,还要描述语义。

第2步:如果您愿意,可以生成课程。我找到了一个项目,说它可以为json做{:3}},我相信还有其他的。

第3步:实施。

第4步:部署。

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