Architecture SOA-微服务:使用API REST或SOAP

Architecture SOA-微服务:使用API REST或SOAP,architecture,soa,microservices,Architecture,Soa,Microservices,我面临着一个大难题:在我的公司,我们正在研究微服务体系结构,并转向一个完整的SOA生态系统 一些顾问和开发人员表示,最好使用SOAP for web服务,因为它允许指定并向所有开发团队提供经过验证的格式。我担心使用肥皂最终会受到限制 根据您的经验,对于SOA/Microservices体系结构,使用SOAP还是restapi更好 提前感谢您的有用反馈。很难根据您在问题中提供的信息选择架构样式,因为您没有解释您的业务需求或约束类型。你也没有解释这些服务的用途 我使用SOAP和REST已经有一段时间

我面临着一个大难题:在我的公司,我们正在研究微服务体系结构,并转向一个完整的SOA生态系统

一些顾问和开发人员表示,最好使用SOAP for web服务,因为它允许指定并向所有开发团队提供经过验证的格式。我担心使用肥皂最终会受到限制

根据您的经验,对于SOA/Microservices体系结构,使用SOAP还是restapi更好


提前感谢您的有用反馈。

很难根据您在问题中提供的信息选择架构样式,因为您没有解释您的业务需求或约束类型。你也没有解释这些服务的用途

我使用SOAP和REST已经有一段时间了,我可以告诉你,两者都有adv/dis。但是,我不会列举这些,我会尝试给出我的理由和场景,在其中我会选择一个而不是另一个

休息

  • 如果服务将由web浏览器internet应用程序、移动应用程序(当处理能力“低”时)使用,我将选择REST,因为通信是以json格式进行的,json格式与javascript技术更友好,处理和解析时间比XML短
  • 当服务将数据作为简单API的一部分公开时,允许用户进行CRUD操作,或者当流程中不涉及太多业务逻辑时。如果我必须构建一个公共API,我也会选择REST
  • 如果有时间,REST的实现比SOAP更简单。由于没有标准,您不需要签订合同。有一些最佳实践,但最终您可以根据需要使用HTTP谓词,并以您喜欢的方式创建URI样式,但有这么多的灵活性将使您在某个时候开始使用一种RPC API而不是资源API(请记住,REST更多地是关于资源的)
  • 如果您的服务的目的是在web页面应用程序上公开信息,请利用浏览器中http GET谓词提供的缓存
  • 从开发人员的角度来看(这一点始终很重要),构建此类服务的速度更快。您只需要知道一个支持REST的框架,比如JAX-RS、SpringREST、Jersey和一些JSON概念。学习曲线也更小
  • 它是一种轻量级的传输信息形式,速度更快,因为它不需要大量的处理
  • 肥皂

  • 如果有定义服务内通信的合同,您将被绑定到该合同,并且您的客户也必须遵守该合同。本合同的任何变更都将影响您的所有客户。您必须始终记录必须用于运营的合同
  • 有一些有趣的标准可以在系统集成中发挥作用,如WS互操作性、WS寻址、WS安全性,因此基本上是一种具有多个标准的技术,这些标准可以简化协议阶段,而不总是实现阶段
  • 如果您想拥有不同类型的客户端,可以与不同的传输层smtp、http一起使用
  • 传输二进制数据MTOM/XOP或SwA的良好标准。如果您希望使用此选项发送PUT请求正文中的字节
  • 更好地定义安全性和完整性,许多选项来自标准,通常在REST中使用得越多的是OAuth
  • 从开发人员的角度来看,这将需要更多的时间来学习,而且您至少需要具备XSD、XPath、WSDL和其他概念的基础知识。在某些情况下,遵循标准并不总是容易的。您有很好的工具和框架来构建JAX/WS、springws和CXF

  • 在一家中小型公司尝试标准化IT基础设施时,我会选择SOAP,因为它在所有领域都有更成熟的工具支持。就个人而言,我喜欢SOAP:fault messages,SOAP提供的业务操作的RPC风格。假设您的微服务与特定领域无关,我认为使用某种ESB可以帮助您管理整个基础架构并设置业务规则。有时,人们可能会认为SOAP是对解决方案的过度设计。但是,我同意这个想法,因为这是一个已经在市场上存在了一段时间的标准。

    可以说,微服务体系结构的最大好处是可以加快将新功能推出到生产中的速度。为了实现这一点,微服务应该尽可能相互独立。与REST契约相比,WSDL契约有导致更紧密耦合的趋势。从这个角度来看,选择休息是很有意义的。但这完全取决于您在决定采用微服务或SOA体系结构时想要实现的目标

    随着诸如RAML和Swagger等标准定义restapi的发展,SOAP和restweb服务之间的差异正在缩小。如果像前面的回答者提到的那样,重点是公开API,那么REST是一个更好的选择,因为有很多轻量级API管理产品支持这一点。

    我同意上一句话,即在企业级别上,似乎会有外部消费者。当您有一个标准的文档化接口时,它就不那么令人头痛了。当您有外部消费者时,它又称为SOAP。