为什么使用SOAP进行Web服务?

时间:2011-05-29 08:38:38

标签: web-services rest soap

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

似乎一切都好。但那么为什么我们应该使用肥皂进行网络服务呢?

2 个答案:

答案 0 :(得分:53)

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

  • SOAP
  • REST

大多数人选择阻力较小的路径,即 REST 。这意味着简单,易于开发,使用HTTP的方式,充分利用缓存代理,更可读的结果等。

另一端的

SOAP 比REST更重要,并且还有大量specifications备份。但是因为它更复杂(SOAP曾经是简单对象访问协议的首字母缩写 - 事实证明......不是)很多人都不喜欢SOAP。

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

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

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

编辑:回答您的问题:

  

为什么要使用SOAP或REST?没有它们我们可以提供网络服务吗?

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

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

基本上,只要支持“可互操作的机器到机器交互”,您就可以使用任何您想要的通信协议(甚至创建自己的通信协议)。这也意味着除了SOAP或REST之外的其他东西(好的...... REST不是一个协议,我只是在这里用它作为参考来证明我的观点......所以请耐心等待。)

但您创建了一项网络服务,因为您希望某些客户使用您的服务。而且你的客户都在狂野的西部(即网络:D),那里的人们讲SOAP / REST。在那里你来说:“我们在商店里不喜欢SOAP和REST,我们喜欢RPC,CORBA和我们自己独特创作的”Bone Crusher 10000“协议。如果你想做的话与我们合作,你去学习“Bone Crusher 10000”“。而你的客户会说(眉毛扬起)“ Yeaaaaah righttttt ..... ”。

(我在这里假设您的协议不会成为完全超出SOAP / REST的地方:D)

因此,如果您不使用SOAP / REST,则会限制目标受众。就像英语一样。我不是英语母语人士,不是吗?嗯,因为我们能够用英语沟通,所以并不重要。想在Icelandic中试试吗? 。我学冰岛语时你会等我吗?因为那不是我的母语吗?

正如我已经说过的那样,由你来决定并根据你的具体情况选择实施什么,但是如果你离开已知的技术堆栈,你会丢掉它带来的:< strong>丰富的经验,资源,工具和沟通方案。

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

答案 1 :(得分:0)

user159088在她/他的回答中提到的重要一点是“ [...]您可以从WSDL文件[...] ”开始非常轻松地生成客户端!

我想进一步阐述这个:

您可以将SOAP与WSDL结合使用,WSDL是标准化的,这意味着了解标准(WSDL)的人可以从中了解Web服务提供的操作以及数据的交换方式。

这个知识可以用于f.e.从WSDL文件中创建生成类型安全绑定器类/对象的工具。您可以使用这些生成的类(生成RPC),而无需手动实现请求和编码/解析交换的数据。

而对于REST ,没有关于交换数据的标准(如WSDL架构)。因此,您通常最终会自行解析数据。

第二点是REST主要使用HTTP(s)协议(它基于它)。它使用HTTP(s)协议的CRUD谓词(CREATE / READ / UPDATE / DELETE)。 SOAP不依赖于它,因此也可以与其他协议一起使用