原文地址:蓝精灵——默默争上游
笔记:
SOAP和REST是两种实现WebService的主要方案(Web API部署REST貌似占了大半壁江山)Java开发WebService最重要的两个规范:
- REST Web Services 基于 HTTP 协议
- SOAP Web Services 支持多种传输协议:HTTP、SMTP、MIME等
REST与SOAP的区别:
- JSR-224 (JAX-WS:Java API for XML-Based Web Services ) ,主要使用soap协议,使用wsdl来描述;
- JSR-311 (JAX-RS:The Java API for RESTful Web Services),使用wadl描述;
尺长寸短:
- REST为每一个资源指定一个唯一的URI,用HTTP的4种方法发送请求:GET、POST、PUT、DELETE直观地表示获取、创建、更新和删除。
- SOAP仅仅使用POST方法发送请求,用一个唯一的URI标识服务的入口。(因为SOAP并不假定传输数据的下层协议,因此必须设计为能在各种协议上运行。即使绝大多数SOAP是运行在HTTP上,使用URI标识服务。这种设计被诟病之处,在于DELETE操作也要用POST方法来发送,而其实HTTP协议有更和逻辑的DELETE方法可用。)
REST的优点:REST简单而直观,把HTTP协议利用到了极限。
SOAP:复杂的需求摧残了易用性。
说到底,没有谁是万能的
- REST用WADL来描述REST接口。WADL就像是WSDL的REST版,随着REST被应用到复杂的领域,SOAP的影子无处不在。
- 事实上,一些Web Service提供者提供的REST API只有REST的外壳,传输的请求和应答全然是简化了的SOAP。
“没有一项技术能一劳永逸地解决所有问题,只需要在预定的约束下优美地解决所在领域的问题就足够了。
一项新技术推出的时候总是引来无数的跟风和吹捧,只有当尘埃落定之后才能得到中肯的评价。”