一般客户端访问服务器端web服务通常可以由HTTPService、WebService、RemoteObject等方式来实现。通常实现web服务我们最容易想到的是SOAP协议的WebService,这在目前web服务中占有很重要的地位。随着REST思想的出现,目前很多公司开始使用REST风格的WebService。
SOAP: 简单对象访问协议,简单对象访问协议(SOAP)是一种轻量的、简单的、基于 XML 的协议,它被设计成在 WEB 上交换结构化的和固化的信息。 SOAP 可以和现存的许多因特网协议和格式结合使用,包括超文本传输协议( HTTP),简单邮件传输协议(SMTP),多用途网际邮件扩充协议(MIME)。它还支持从消息系统到远程过程调用(RPC)等大量的应用程序。
REST: 即REST(Representational State Transfer表述性状态转移)是一种针对网络应用的设计和开发方式,可以降低开发的复杂性,提高系统的可伸缩性。
REST 与SOAP的比较:
- 成熟度
SOAP目前成熟,不同平台,开发语言之间通过SOAP来交互的web service都能够较好的互通。REST相对不太成熟,由于没有类似于SOAP的权威性协议作为规范,REST实现的各种服务风格不一,通用性不强。
- 效率和易用性
SOAP使用门槛高(学习成本高,开发难度大),由于SOAP由于各种需求不断扩充其本身协议的内容,在大并发下性能有所下降。REST 目前大量的Web 2.0网站使用,高效以及简洁易用。这种高效一方面源于其面向资源接口设计以及操作抽象简化了开发者的不良设计,同时也最大限度的利用了Http最初的应用协议设计理念。REST 是一种轻量级的Web Service架构风格,其实现和操作明显比SOAP和XML-RPC更为简洁,可以完全通过HTTP协议实现,还可以利用缓存Cache来提高响应速度,性能、效率和易用性上都优于SOAP协议。
- 安全性
SOAP在安全方面是通过使用XML-Security和XML-Signature两个规范组成了WS-Security来实现安全控制的,当前已经得到了各个厂商的支持,.net ,php ,java 都已经对其有了很好的支持。REST没有任何规范对于安全方面作说明。因此在考虑安全性上,SOAP要高于REST。
总的来说,我认为REST对于资源型服务接口来说很合适,同时特别适合对于效率要求很高,但是对于安全要求不高的场景。而SOAP的成熟性可以给需要提供给多开发语言的,对于安全性要求较高的接口设计带来便利。