2012-12-12 36 views
2

(不是Should i use rest or soap的重复。该问题只有1个答案,除了开销外,没有提供许多参数)。使用SOAP或REST进行新的Api

在将此问题标记为重复之前,请考虑我正在寻找在我之前做出选择的人的答案,并根据他们自己的经验解释他们的原因。简单说明“开销”或“更复杂”的答案不适合该配置文件。

现在的问题:

前阵子我用肥皂(PHP/Zend_Soap_Server,Zend_Soap_Autodiscover)开始建立一个新的API。尽管我已经知道如何使用肥皂,但复杂性让我怀疑这是否是未来维护的好选择。

我听说过REST,但没有任何经验。

所以问题是:什么是REST vs SOAP的优缺点,当你创建一个新的api(相当复杂的api,使用ssl的几十种方法,必须具有体面的安全性等)时,你有什么建议? REST或SOAP。

如果您认为您的答案在REST和SOAP之间的平衡中悬而未决,并且特定的依赖关系或功能会提高规模,请务必提出您需要了解的任何内容。我会尽快回答。

的API的功能的简短列表:

  • 认证
  • 执行数学函数的前端
  • 提供的二进制文件复制到前端(发票)
  • 各种信息的基本CRUD

api的地方基本如下:

互联网 - >网站 - > [内部网] - > API /后端 - >数据库

谢谢你的时间提前..

+0

这可能会帮助您http://stackoverflow.com/questions/209905/rest-and-soap – user1190992

回答

27

这当然是一个很有争议的话题,但在同时,由于多种原因,大多数新服务都是REST。使用REST我不会在两者之间的差异(因为是有据可查的),但更多的原因我想你会建立一个新的服务,今天(2012年):

  • REST是简单得多,基本上只是建立在HTTP之上
  • 您可以使用Web浏览器或类似curl或httpie来测试(和调试)REST服务。是的,这在技术上也可以用SOAP来实现,但是你必须对SOAP模式有所了解。
  • 同样,只要您有访问HTTP的方法,您就可以构建REST客户端。SOAP需要SOAP-能够库
  • REST更多的是式的并建立在HTTP之上,而SOAP是在HTTP之上的整个协议(这也是一个协议)
  • SOAP疯狂扩展协议结束喜欢的WS-Security,WS-加密(其中,本质上,都是极其复杂的设计,由委员会解决问题的方法解决了HTTP在几十年前互联网的其余部分)

如果你在一些环顾四周互联网上的主要API(例如Google,Facebook,Twitter等),你会发现很多REST,很少或没有SOAP。那些拥有SOAP接口的用户会弃用或完全放弃它们,因为没有理由继续使用它。实际上,许多大型服务进一步发展,只提供JSON格式的REST服务,而不是XML或两者,因为像REST over SOAP一样,JSON在大小方面有很多优势并简化XML,继续支持XML没有多大意义。


与SOAP相比,REST也几乎没有缺点。

关于我能想到的唯一的实际考虑是从客户的角度。使用SOAP(由于WSDL,假设您生成了一个),您可以在服务中指定一个支持SOAP的IDE(如VisualStudio),并且它将基于远程服务生成本机客户端代理API。这对于快速启动和运行来说有点不错,但有其自身的一些缺点:它迫使您使用服务中定义的对象(而使用REST,只要数据映射可以使用自己的对象定义),并且根据远程服务如何处理版本控制(或不是)以及如何使用它,您可能最终不得不更新应用程序的主要块,因为命名更改很简单。

从服务器的角度来看,我看不出任何技术上的好处,无论选择SOAP还是REST。

TL; DR:SOAP不一定不好,这只是说REST更好。

+1

谢谢。你给了我正在寻找的答案类型。比较技术差异从来没有真正解释为什么 - 在某些人的选择背后(大部分时间)。我暂时不会回答这个问题,因为我希望听到更多的人在我之前做出选择,但无论如何+1会为你付出努力! –

+0

但是REST不支持事务和消息的可靠性(交付与否)和消息安全 –

+0

我在SOAP上看到的另一个重大优势是可以使用standardClass通过API发送。其优点是不需要解析json,但可以通过API发送类/对象,因此没有媒体中断,但保留了所有面向对象的东西。 –