WebService&CXF

来源:互联网 发布:麦星投资 知乎 编辑:程序博客网 时间:2024/06/07 00:15

Web service是什么?
Web service是一个平台独立的,低耦合的,自包含的、基于可编程的web的应用程序,可使用开放的XML(标准通用标记语言下的一个子集)标准来描述、发布、发现、协调和配置这些应用程序,用于开发分布式的互操作的应用程序。
Web Service技术, 能使得运行在不同机器上的不同应用无须借助附加的、专门的第三方软件或硬件, 就可相互交换数据或集成。依据Web Service规范实施的应用之间, 无论它们所使用的语言、 平台或内部协议是什么, 都可以相互交换数据。Web Service是自描述、 自包含的可用网络模块, 可以执行具体的业务功能。Web Service也很容易部署, 因为它们基于一些常规的产业标准以及已有的一些技术,诸如标准通用标记语言下的子集XML、HTTP。Web Service减少了应用接口的花费。Web Service为整个企业甚至多个组织之间的业务流程的集成提供了一个通用机制。
总结:很多个系统,进行分布的部署,分布的系统数据通信 解决技术就是 WebService。
CXF:
CXF 是目前最主流 WebService 开发框架 ,由 Apache 提供.
CXF WebService 开发,主要分为两种服务提供方式 WS 、RS.
JAX-WS 传输数据,就是 XML 格式,基于 SOAP 协议
JAX-RS 传输数据,传输 XML 格式或者 JSON 格式,基于 HTTP 协议
JAX-WS:
@WebService 使用类上面,标记类是 WebService 服务提供对象
@WebMethod 使用方法上面,标记方法 是 WebService 服务提供方法
@WebService 注解设置 endPointInterface 接口服务完整类名, servicename 服务名称 想将服务方
法,发布到网络上,给其它系统调用
JAX-RS:
RESTful:
一种软件架构风格、设计风格,而不是标准,只是提供了一组设计原则和约束条件。它主要用于客户端和服务器交互
类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。
RESTful风格的好处:
基于这种风格架构,软件编写可以更简洁
基于 HTTP 协议, 支持多种消息格式,比如 XML 、JSON
更易于实现缓存机制(第一次访问资源 缓 存,第二次访问资源,返回 304 客户端调用本地)
POST 请求方式访问 保存操作
PUT 请求方式访问 修改操作
GET 请求方式访问 查询操作
DELETE 请求方式访问 删除操作
http://localhost:9997/userService/user 查询所有用户信息
http://localhost:9997/userService/user/1 查询用户编号为 1 的用户信息
**访问服务器统一资源,采用不同 HTTP 协议请求方式,服务器端可以得知进行 CRUD 哪 个操作!

@XmlRootElement 指定序列化(转换 XML、JSON) 对象名字
@Path 服务访问资源路径
如果访问 saveUser 方法 /userService/user
@Produces 生成(方法返回值) @Consumes 消费 (方法参数) @Consumes 指定能够处理客户端传递过来数据格式
@Produces 指定能否生成哪种格式数据返回给客户端
@GET 查询 @PUT 修改 @POST 增加 @DELETE 删除

客户端程序的编写 有两种做法:
1) 使用 http client 工具 ,需要自己对 HTTP 协议内容进行定制和解析
2) WebClient 工具类使用 (CXF 自带)

WebService和Socket的对比:
(1)
Socket是基于TCP/IP的传输层协议。
Webservice是基于HTTP协议传输数据,http是基于tcp的应用层协议。
Webservice采用了基于http的soap协议传输数据。
(2)
Socket接口通过流传输,不支持面向对象。
Webservice 接口支持面向对象,最终webservice将对象进行序列化后通过流传输。
Webservice采用soap协议进行通信,不需专门针对数据流的发送和接收进行处理,是一种跨平台的面向对象远程调
用技术。
(3)
Socket适用于高性能大数据的传输,传输的数据需要手动处理,socket通信的接口协议需要自定义。
比如:自定义一种字符串拼接的格式,比如自定义的xml数据,自定义麻烦之处在接口调用方和接口服务端需要互相
讨论确定接口的协议内容,不方便。
缺点:
程序员需要自己去解析输入、输出流,解析发送和接收的数据。数据传输的格式不固定,需要程序员开发socket接口
时自定义接口协议。
优点:
如果要传输大数据量,socket可以满足,如果存在大并发使用socket也可以实现,程序用socket灵活性更大,比如可
以socket的高并发框架mina开发。
Webservcie由于是遵循标准的soap协议,soap 协议的内容格式固定,soap协议传递的内容是xml数据,由于webservice 是基于http的,所以简单理解为soap=http+xml,适用于没有性能要求情况下且数据传输量小,推荐在公开接口上使用
webservice,因为soap协议的标准的。
优点:
jax-ws可以通过面向对象开发webservice,程序员不需要解析输入、输出流。
由于webservice传输数据使用标准的soap协议(基于http传输xml),soap协议已经被w3c管理了。
缺点:
如果传输大数据量,webservice不适用。如果webservice开发大并发的应用,webservice依靠web容器提高并发数。

原创粉丝点击