XML Over HTTP 和 SOAP Over HTTP 之间的区别

Posted

技术标签:

【中文标题】XML Over HTTP 和 SOAP Over HTTP 之间的区别【英文标题】:Difference between XML Over HTTP & SOAP Over HTTP 【发布时间】:2013-09-04 11:32:22 【问题描述】:

SOAP over HTTP 是 XML over HTTP 的子集,因为我假设 SOAP 也是一个确认模式(SOAP 模式)的 xml?我假设 XML over HTTP 服务可以使用 GET 或 POST 方法访问。 SOAP over HTTP 是否总是使用 POST 方法?在 XML over HTTP 的情况下,我认为缺点是模式文件必须与所有消费者共享,而在 SOAP over HTTP 的情况下,它将是单个 WSDL 文件。是否可以帮助我了解两者的区别和优势?

【问题讨论】:

【参考方案1】:

SOAP 是 XML 的一种特殊化,因为它有一个架构,例如 http://www.xmlsoap.org/soap/envelope/,而 XML 更通用。

对于使用 GET,您可以阅读以下讨论:http://www.coderanch.com/t/463869/Web-Services/java/SOAP-request-HTTP,但基本上 SOAP 是通过 POST 完成的,尽管 Axis2 似乎支持 GET,作为在 REST 似乎统治的世界中让 SOAP 工作的一种方式.

而且,根据这篇 IBM 文章 (http://www.ibm.com/developerworks/xml/library/x-tipgetr/index.html),SOAP 1.2 引入了 GET。

正如您所提到的,SOAP 是一种标准,因此有一些工具可以轻松使用它,包括动态客户端生成,如本问题dynamic proxy soap web service client in java? 中所示,客户端会在连接时生成所需的存根。

如果您在 http 上使用 XML,根据需要,作为传输数据的一种方式可能会更好,但在用例中,我认为只使用 JSON 和 REST 似乎更好,但是,如果您想传输 XML 或发送 XML,那么您可以考虑使用 REST。

POST 会是更好的选择,尽管 GET 有大小限制 (maximum length of HTTP GET request?),这可能就是 SOAP 几乎总是 POST 的原因。

WSDL 不一定是单个文件,在 WCF 中,如果我记得的话,需要将许多 xml 文件放在一起才能完成 WSDL。

优势取决于您的用例,但我发现使用 REST 并允许用户选择类型很有用,因为在 JSON 和 XML 之间切换可能很简单,并且是更好的选择基于 HTTP 的 XML。

SOAP 最适合与旧技术集成,因为这可能是他们可以轻松使用的全部。例如,当我为 SAP 集成制作 Web 服务时,不使用 SOAP 可能会增加工作量,这取决于 ABAP 程序员的能力。

你可能会发现这个使用问题:

How SOAP and REST work with XML/JSON response?

对于有关 Web 服务中的 JSON 和 XML 的讨论,您可能会发现这很有帮助:

http://digitalbazaar.com/2010/11/22/json-vs-xml/

我忘记了这个链接,因为他们做了一个简短的比较,但最后你可以轻松地支持两者。在 WCF 中,我有一个具有业务逻辑的控制器,并且必须处理 .aspx 文件,一个用于 SOAP,一个用于 REST,并且一些 Web 服务同时支持这两者,因为这只是处理请求和响应差异的问题。因此,如果您想为两者提供支持,并有一个商业案例表明它是有意义的,那么请选择一个易于实现的框架。

http://digitalbazaar.com/2010/11/22/json-vs-xml/

基本上,目标是通过网络向客户提供服务。什么客户端要连接?客户如何发现最容易联系?请求中传递了多少数据?

这些类型的问题将为您的需求提供最佳解决方案。

【讨论】:

非常感谢。非常有用和详细的解释,消除了我的困惑:) 我想知道如何通过 HTTP POST 发送 SOAP 请求。整个信封是否原始发布到请求正文中,例如可以通过以下方法调用完全读入字符串? String entireSoapReequest = IOUtils.toString(request.getInputStream()); @SayoOladeji - 有一些肥皂工具会有所帮助,但如果我记得这一切都在请求的正文中,但要知道你可能想将此作为一个新问题提出

以上是关于XML Over HTTP 和 SOAP Over HTTP 之间的区别的主要内容,如果未能解决你的问题,请参考以下文章

PHP SoapClient over selfsigned certificate,SOAP-ERROR:解析WSDL:无法从'https://加载

如何使用 Tsung 编写用于负载测试“XMPP over BOSH”的 xml 脚本?

MAPI over HTTP 和 RPC over HTTP

续:Grpc over http2 PK WebApi over http2

关于RTSP-Over-HTTP

WCF 与 basicHttpBinding、加密、签名和 usernameToken over HTTP