web-services - 为什么将 SOAP 用于 Web 服务?

标签 web-services rest soap

我已阅读教程“web-service-php-mysql-xml-json”。

似乎一切正常。但是,为什么我们应该将 SOAP 用于 Web 服务呢?

最佳答案

在构建 Web 服务时,您可以采用两种方式:

  • SOAP
  • 休息

  • 大多数人选择阻力较小的路径,即休息 .这意味着简单、易于开发、以应有的方式使用 HTTP、充分利用缓存代理、更易于阅读的结果等。

    SOAP 另一方面,它比 REST 更重量级,也有大量 specifications 支持。 .但是因为它更复杂(SOAP 曾经是简单对象访问协议(protocol)的首字母缩写词——后来被证明是……不是)SOAP 不被很多人喜欢。

    两种方法都有效,并且都有优点和缺点。

    例如,SOAP 可以使用任何传输协议(protocol),而不仅仅是 HTTP(S),SOAP 在安全方面提供更多选项,SOAP 提供可靠的消息传递等。另一方面,REST 允许许多不同类型的数据格式,REST 允许更好的由于 JSON 格式支持浏览器,REST 具有更好的性能等等等等。

    我不打算详细介绍,因为您可以在网上找到很多 SOAP 与 REST 的比较。我要强调的是,在某些情况下,一个比另一个更好,根据您的具体情况,由您决定并选择实现哪一个 .

    编辑:要回答您的问题:

    why use SOAP or REST? we can have web service without them?



    好吧,W3C 将 Web 服务定义为“a software system designed to support interoperable machine-to-machine interaction over a network”。

    好的......这很好定义。但这不是 SOAP/REST 的定义,这个要求可以成功抛出 communication protocol处理。

    所以基本上你可以使用你想要的任何通信协议(protocol)(甚至创建你自己的)来拥有一个 Web 服务,只要它支持“可互操作的机器对机器交互”。这也意味着 SOAP 或 REST 以外的其他东西(好吧……REST 不是一种协议(protocol),我只是在这里使用它作为引用来证明我的观点……所以请耐心等待)。

    但是您创建了一个 Web 服务,因为 你想让一些客户使用你的服务 .而且您的客户在狂野的西部(即网络:D)那里,那里的人说 SOAP/REST。然后你会说:“我们的商店里不喜欢 SOAP 和 REST,我们喜欢 RPC、CORBA 和我们自己独特的“Bone Crusher 10000”协议(protocol)之类的东西。如果你想和我们做生意,你去学习“碎骨机10000”。你的客户会说(扬起眉毛)“Yeaaaaah righttttt.....”。

    (我在这里假设您的协议(protocol)不会是完全超越 SOAP/REST 的地面黑客:D)

    因此,如果您不使用 SOAP/REST,您将限制您的目标受众。例如,它就像英语。我不是以英语为母语的人,你呢?好吧,这并不重要,因为我们能够用英语交流。想试试这个 Icelandic ? .我学习冰岛语时你会等我吗,因为那也不是我的母语?

    正如我已经说过的,根据您的具体情况,由您来决定和选择实现什么 ,但是如果你远离已知的技术堆栈,你就会抛弃随之而来的东西:丰富的经验、资源、工具和交流选项 .

    作为一个结束的例子,现在有很多对 SOAP 协议(protocol)的支持,您可以从 WSDL 文件开始非常容易地生成客户端。和presto ...您的客户可以与您的网络服务进行通信。 “Bone Crusher 10000”会这么简单吗?如果您编写工具、提供资源、支持等……是的!但这将花费您时间和金钱来创建 的东西。已被发明并在今天得到广泛使用 .

    关于web-services - 为什么将 SOAP 用于 Web 服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6166746/

    相关文章:

    java - RESTful Web 应用程序是什么意思?

    java - JAXB、WSDL 和 RequestWrapper/ResponseWrapper

    java - https web 服务调用失败

    web-services - Apache CXF :The message has expired

    java - 创建 JSON 数据并解析为 swift

    jsp - 在 Tomcat7 中向错误页面添加 header

    java - Spring Boot Rest - 如何配置 404 - 找不到资源

    java - 如何更正 SecurityTokenReference,使用 WSS4J 签署 SOAP

    java - 基于 IBM MQ 的 Web 服务

    api - 如何为媒体分析引擎设计 RESTful API