SOAP或REST - 当有单个客户端&多个服务提供商+合同

时间:2016-03-12 16:15:11

标签: web-services rest soap architecture

我们使用基于SOAP的Web服务让最终用户安排服务约会。我们的门户网站是WebService客户端&我们有许多供应商(他们遍布全球各个时区)正在构建Webservice Server操作。 我们正在考虑将其构建为合约首先基于SOAP的Web服务,以便我们能够严格控制(基于接口,例如日期时间格式应该是标准的xsd:dateTime等),而不是可以发送的内容。作为XML消息的一部分收到,以获得可能的成功&错误情况(通过不同的错误代码)。我们希望为所有供应商保留单个客户端代码。我们想确定

1)我们应该考虑使用RESTful Web服务吗?

2)供应商是否有任何方式可以使用RESTful服务,如果他们想要最终(通过坚持我们的WSDL合同)&我们在最后使用SOAP

3 个答案:

答案 0 :(得分:0)

免责声明:请不要认为这个答案非常严重。

嗯,我觉得问题太抽象了。你为什么这么问?因为你发现自己目前一切都是RESTful的?那你就对了。你可以做任何协议。但是如果你用REST而不是XML做REST,那么每个人都会感谢你。如果你将使用40年的技术来​​创造现代服务,那么可能不会。对你的承包商来说也一样。

答案 1 :(得分:0)

SOAP在您的情况下似乎唯一的优势是它已经实现。

SOAP是一个复杂的标准,具有不友好的实现和冗长的实现 - 即难以使用和维护。另请注意,您甚至没有“按书”使用它,因为您的安全性在其外部并且未使用ws-security

基于REST的界面可以让您和您的用户的生活更轻松。我建议你看一下像swagger这样的标准和工具来构建API。如果你在内部运行,你可以看看像tyk这样的API网关如果你在云中运行你另请查看AWS API Gateway

答案 2 :(得分:0)

首先一点点,

REST(Representation State Transfer)是一种开发Web服务的架构风格。其中数据和功能被视为资源,可以通过URI(统一资源指示符)访问。它遵循客户端服务器体系结构并使用无状态协议(通常为HTTP)。通常在REST webserivces中,资源由GET,PUT,POST,DELETE操作执行。通常我们使用JSON在客户端和服务器之间交换数据。它重量很轻。

另一方面,SOAP(简单对象访问协议)是一种基于XML的语言协议。这通常用于企业级别,以将自己的接口和操作定义为服务。它也遵循REST架构。 基本上,它是一个RESTful Web服务。

现在回答你的问题,

您似乎打算在企业级别公开您的Web服务客户端。许多供应商将使用它来实现自己的Web服务服务器。

所以,它是完美的,你使用SOAP webservices。

  1. 您将定义Web服务的框架,如消息格式,操作,绑定等,称为WSDL。它是广泛使用的标准,非常容易被任何第三方理解。 WADL的东西也用于REST服务,但它不是非常用户友好。

  2. 您的供应商将使用相同的合同(WSDL)来使用某些API(例如JAX-WS)以自上而下的方式在其服务器上实现Web服务。

  3. 通过这种方式,您可以在单个合同(WSDL)中更严格地控​​制操作,格式,安全性等。

    现在,如果供应商想要使用REST Web服务而不是SOAP。您可以在客户端上构建JAVA代理。这会将您的soap消息转换为REST以发送/接收对REST Web服务的请求/响应。但是你不能用这种方法决定你的合同。虽然,您可以建议供应商构建自己的代理来处理SOAP Web服务请求。这样你的合同就完好无损。

    如果您要为小型应用程序公开您的Web服务客户端,那么可以使用REST,但如果您是一个企业并且将来要进行扩展,那么您应该使用SOAP来获得强大的功能并且易于维护。