WebService之SOAP与REST
@[webservice, soap, rest]
SOAP
其实SOAP最早是针对RPC的一种解决方案,简单对象访问协议,但是随着SOAP作为WebService的广泛应用,不断地增加附加的内容,使得现在开发人员觉得SOAP很重,使用门槛很高。在SOAP后续的发展过程中,增加了SOAP的成熟度,也给SOAP增加了负担。
REST
REST强调服务是以资源为中心的,对每个资源的操作都是标准化的 HTTP 方法(GET、POST、PUT以及DELETE)。而RPC强调过程(动词)有统一的接口来激发它们
Web 由各种各样的资源组成,资源由 URI 唯一标识
区别
- soap以操作为中心,接受xml作为输入,消息通过http传输协议发出,通过RPC调用,再返回一个xml文档。
- soap采用xml文档的消息体,消息的有效负载相对rest的json(当然rest也能用xml等)更少,这点soap相对更重量级。
- rest采用http方法(get,put,post,delete)对URI进行操作,开发简单。
- rest设计原则是无状态的,容易支持负载均衡。
适用场景
REST
- 有限的带宽 json更轻量
- 无状态性
- 需要缓存 REST 的应用可以充分地挖掘 HTTP 协议对缓存支持的能力。当客户端第一次发送 HTTP GET 请求给服务器获得内容后,该内容可能被缓存服务器 (Cache Server) 缓存。当下一次客户端请求同样的资源时,缓存可以直接给出响应,而不需要请求远程的服务器获得。对于soap而言,SOAP 消息所使用的 URI 总是指向 SOAP 的服务器,采用缓存,缓存服务器如果不解码 SOAP 消息体,没法知道该 HTTP 请求是否是想从服务器获得数据。
SOAP
- 安全性要求
- 有状态的操作
REST与SOAP各有优缺点与适用场景,具体采用哪种方案要结合具体案例。
参考
http://www.ibm.com/developerworks/cn/webservices/0907_rest_soap/
http://stevenjohn.iteye.com/blog/1442776
http://blog.sina.com.cn/s/blog_4e345ce70101n0ck.html