为何说基于 SOAP 的服务是重量级的服务,Rest是轻量级的?
Restful Web服务是一种基于 REST 和 HTTP 协议的轻量级Web 服务,它把Web应用系统中的一切都当作是资源,它利用标准的HTTP请求方法(GET、POST、PUT 和 DELETE等),以URL的形式访问(功能调用)Web资源。
JAVA中共有三种Web Service规范,分别JAX-WS(JAX-RPC)、JAX-RS、JAXM&SAAJ。其中有两种SOAP Web Service规范:JAX-WS和SAAJ。JAX-RS是Rest服务定义。使用最多的是JAX-WS和JAX-RS。
JAX-RS (JSR 311) JAX-WS (JSR 224)
适用范围 适用于简单的远程数据访问 适用于复杂的数据交互模式
消息传输 请求和响应通过 HTTP 消息正文来传输 请求和响应被放在 SOAP 消息,作为传输层(HTTP, JMS, SMTP 等)消息正文进行传输
客户端调用 只需要一个 URL就能调用 Web 服务 需要编写标准的客户端代码,对 Web Services进行访问
安全性 简单的认证和授权机制 丰富的安全策略,可实现各种安全需求
访问终端 桌面浏览器或移动终端浏览器 桌面、浏览器
Java EE6引入了对JSR-311的支持。JSR-311(JAX-RS:Java API for RESTful Web Services)旨在定义一个统一的规范,使得 Java 程序员可以使用一套固定的接口来开发 REST 应用,避免了依赖于第三方框架。同时,JAX-RS使用POJO编程模型和基于标注的配置,并集成JAXB,从而可以有效缩短 REST 应用的开发周期。
JAX-RS定义的API位于javax.ws.rs包中。
JAX-RS的具体实现由第三方提供,例如Sun的参考实现 Jersey、Apache 的 CXF以及JBoss的RESTEasy等。
SOAP比较复杂,基于XML,有对应规范;REST利用HTTP请请求方式GET,POST,PUT约定事务操作。简单的说,SOAP通过传输XML,XML定义了请求和响应的具体数据,要进行的操作等等;而REST则是另一种约定,比如请求/user/1001这个RUL,GET方式返回id为1001的user信息,POST方式则是更新id为1001的user信息,DELETE删除等。