当JSON如此简单易用时,为什么要使用XML(SOAP)?

时间:2011-11-30 09:49:55

标签: json soap

使用简单的HTTP请求接收和发送带有JSON的数据。而在SOAP中,我们需要处理很多事情。解析XML有时也很难。甚至Facebook在Graph API中使用JSON。我仍然想知道为什么还应该使用SOAP?是否有任何理由或领域SOAP仍然是更好的选择? (尽管有数据格式)

此外,在简单的客户端 - 服务器应用程序(如与服务器连接的移动应用程序)中,SOAP可以提供优于JSON的任何优势吗?

如果有人能够根据我提供的信息(如果有的话)争取JSON和SOAP之间的主要/显着差异,我将非常感激。

4 个答案:

答案 0 :(得分:29)

我发现了以下有关SOAP

的优点
  • 每个人都坚持使用SOAP而不是使用SOAP有一个重要原因 JSON。每个JSON设置,您总是想出自己的 每个项目的数据结构。我不是说数据是如何编码的 并通过了,但数据格式化格式是如何定义的 模型。
  • SOAP有一种行业成熟的方式来指定数据 表格Cart是产品的集合,每个产品都可以 这些属性等等。一个很好的WSDL文档 这个钉了。哎呀,这是一个W3C规范。
  • JSON具有指定此数据结构的类似方法。一个JavaScript 我觉得这是最常见的做法。一个 JavaScript类实际上并不是任何类型的数据结构 不可知论,成熟,广泛使用的方式。哎呀,真的是JavaScript 仅在一个环境中执行,即浏览器。
  • 简而言之,SOAP有一种在a中指定数据结构的方法 成熟格式的文档(WSDL)。 JSON没有这样做的标准方法。

如果要创建客户端应用程序并且使用SOAP完成服务器实现,则必须在客户端使用SOAP。

另见herehere

答案 1 :(得分:21)

如今SOAP是一个完全矫枉过正的恕我直言。很高兴使用它,很高兴学习它,它很漂亮我们现在可以使用JSON。

SOAP和REST服务之间的唯一区别(无论是否使用JSON)是SOAP WS始终拥有自己的 WSDL 文档,可以在REST中轻松转换为自描述文档必须为自己编写文档(至少记录数据结构)。以下是我的两个优点:

REST

赞成

  • 轻量级(无论如何:不需要服务器端或客户端扩展,不需要在这里和那里传输大块XML)
  • 自由选择数据格式 - 由您来决定是否可以使用普通的TXT,JSON,XML,甚至创建自己的数据格式
  • 大多数当前数据格式(即使使用的XML)确保只通过HTTP传输真正需要的数据量,而对于5字节数据的SOAP,您需要1 kB的XML垃圾(夸大,ofc,但是你明白了)

缺点

  • 即使有一些工具可以从docblock注释中生成文档,如果想要获得一个好的文档,还需要以非常描述性的方式编写这样的注释

SOAP

赞成

  • 有一个WSDL,可以从甚至基本的docblock注释(甚至没有它们的许多语言)生成,这些注释很适合作为文档
    • 即使有一些工具可以使用WSDL来提供增强的尝试此请求界面(虽然我不知道任何这样的REST工具)
  • 严格的数据结构

缺点

  • 严格的数据结构
  • 使用XML(仅限!)进行数据传输,而每个请求都包含大量垃圾,而响应包含的垃圾信息数量是其中的五倍
  • 对外部库的需求(对于客户端和/或服务器,虽然现在有这样的库已经是许多语言的原生部分,但人们总是倾向于使用某些第三方的)

总而言之,我认为没有理由选择SOAP over REST (和JSON)。两者都可以这样做,在几乎所有流行的 web 编程语言中都有对JSON编码和解码的本机支持,并且使用JSON,您可以获得更多自由,并且可以从大量无用的信息垃圾中清除HTTP传输。 如果我现在要构建任何API,我会使用REST和JSON。

答案 2 :(得分:6)

我对这里看到的JSON趋势不以为然。虽然JSON是一个更容易的订单,但我敢说它非常有限。例如,SOAP WS不是最后一件事。实际上,在soap客户端/服务器之间,您现在拥有企业服务总线,基于加密的身份验证方案,用户管理,时间戳请求/回复等。对于所有这些,有一些巨大的软件平台提供围绕SOAP的服务(嗯, “Web服务”)并将在XML中注入内容。因此虽然JSON对于小型项目来说可能已经足够了,并且在那里容易一个数量级,但我认为如果你将传输控制与内容分离(即你开发内容,实际的服务器,但是所有的传输都是管理的)它变得非常有限由另一个团队,另一个团队进行身份验证,由另一个团队部署)。我不知道我在大公司的经历是否相关,但我会说JSON不会在那里生存。除了数据表示的基本需求之外,还有太多限制。所以问题不在于JSON RPC本身,问题在于它错过了额外的工具来管理复杂应用程序中出现的复杂性(并不是说你做的事情并不复杂,只是说软件反映了公司的复杂性。生产它)

答案 3 :(得分:1)

我是PHP / JS开发人员。 JSON的原因很简单。 JSON == JS对象。

SOAP很好,但是很重。问题是。这是值得的?有时是的。有时候不行而且在大多数情况下,无论如何都需要在末尾使用JSON。

公司之所以使用SOAP,是因为它们与成千上万的其他实体交换数据,并且它们需要数据的完整性。我认为对于中小型项目,SOAP太重了。