2015-03-25 149 views
2

我来自servlet/web应用程序领域,并开始学习Web服务(基于SOAP)。我已经通过了一些webservice 教程。我试图绘制正常的http请求和webservice请求之间的并行。这里是我的观察; -SOAP web服务请求vs HTTP POST请求?

1)两者都是HTTP请求。 Webservice也是一个包含肥皂信封作为请求主体的发布请求。 SOAP信封 仅仅是一个正常的xml其中包含数据

2)的java存根内部编组的XML,产生的HTTP请求,并将其在该请求消费者侧intercpets发送到消费者

3)小服务程序,并将其unrmashal到java对象并将其发送到相应的服务。

我的观察是否正确?我知道可能还有其他复杂性,但我试图以简单的方式进行比较。

+0

这听起来不错。我在当前的工作中大量使用SOAP,并使用Axis库。 – 2015-03-25 09:06:18

回答

3

你的假设通常是正确的。然而,这些细分可能导致巨大的差异。

权利要求1:都是HTTP。

SOAP通常与HTTP“绑定”一起使用。但它不一定是那样。 SOAP被设计为相当传输不可知的。将SOAP用于JMS并不罕见(尽管人们可能会认为这是过度使用JMS和超架构协议),但它在许多地方当然是在生产中。很少见到没有HTTP的SOAP/SMTP或SOAP/TCP,但它们也存在。

web服务是一个也POST请求包含SOAP信封作为请求体

SOAP调用通过HTTP是POST请求。但是,它可能不是content-type xml,因为某些变体(如SwA(带附件的SOAP)或XOP + MTOM变体)可能会生成MIME/Multipart的HTTP有效内容(第一部分是纯粹的SOAP Enveloppe XML表单)。
当使用SOAP调用发送较大的二进制内容并且二进制编码可能为请求增加一个很大的权重(base64是一个1.3倍的权重因子)时,这种使用cas是最常见的。

的Java存根内部元帅XML,创建HTTP请求,并将其发送给消费者

这是通常的方式是做,Axis框架和JAXWS框架工作主要是这种方式。

旧的SAAJ API是一种标准的EE API,要求您使用DOM API(请参阅SOAPMessageFactory)手动构建您的SOAP消息,然后发送它。如果你看看Spring WS,你会得到一些与你的声明相近的东西,但是每个部分都是公开的并且在你的控制之下(你可以选择使用DOM Api构建特定的调用,其他的使用JAXB编组) ,...)。

3)在该请求,并将其unrmashal到Java对象,并将其发送给相应的服务

再次消费端intercpets的Servlet,这是怎么会事generaly工作。但是你也可以有一个在servlet容器外工作的实现。 (请参阅JAX WS中的端点服务API)。

0

我认为您可以在Ben Klopfer的blog post中找到非常好的答案。

XML/SOAP与HTTP/REST的区别主要在于前者大部分响应冗长,而后者较轻。

但这不是您必须考虑的唯一方面。 REST代表资源的状态,使用和理解起来更容易一些,并且始终记住它比SOAP更有用。另外SOAP不仅限于使用HTTP/HTTPS,还可以与SMTP,JMS等其他传输一起使用。

恢复后提醒您:

使用肥皂时:

  • 所有你需要的是简单的操作,如只读方法

  • 实现单向或一个对象数据交换或传输服务

  • 你想在数据的特定的传输更精细的控制,或者不能总是使用HTTP

  • 严格的规范需要对传入的请求予以强制执行,并且要最大限度地减少需要使用额外的文件

  • 你可以依靠客户端的能力解析XML,或更优选SOAP本身

  • 当事情出错,请求

使用REST时,您需要内置的错误处理:

  • 操作很复杂,如创建/读取/更新/删除对象

  • ,适用于各种不同的物体实现多方位的服务

  • 你想轻松快速地目标作为客户端的各种消费者终端用户设备

  • 请求通常是无状态的,如与对话相比的呼叫和响应

  • 您的客户可能有有限的带宽或处理能力

  • 你可以把它留给客户得到他们的请求正确,处理问题

2

你的假设是正确的: -

是,Servlet的请求和Web服务请求都正常的HTTP请求,是的,SOAP网络服务的内部使用HTTP POST。

是的,java在内部封送了XML。另外,在客户端,一个java web服务客户端(可能是一个包装的s​​ervlet)将其解除封送。 A SOAP message或SOAP类型的Web服务具有许多特征,例如: -

  • SOAP消息主要使用XML格式发送数据。 XML是独立于技术的。因此,SOAP可以与两种由两种独立技术构建的异构Web应用程序进行交互,并使用XML交换数据。
  • SOAP Web服务使用HTTP协议发送XML。使用HTTP的有效载荷将数据发送包装在XML中。
  • 可以保护SOAP Web服务。例如,所有使用信用卡和银行信息的支付相关交易都使用安全的SOAP Web服务完成。
  • SOAP Web服务在请求中接受XML并返回XML作为响应。如果发生错误,则此返回XML也可能包含SOAP错误。 SOAP错误包含错误描述和错误代码。
  • Web服务可以通过其XML有效载荷携带附件文档,如PDF,Word等。 Java为这种类型的Web服务提供了单独的API。在java中有一个叫做SAAJ的API来完成这个任务。