XML+http风格和RESTful架构的webService
什么是webService
webService直译成中文是web服务,也就是将一组特定的功能发布到互联网上,供需要的程序使用。比如我们最常见的天气预报服务就是一种webService服务,在比如GoggleMap和BaiduMap提供的根据精度和纬度获取物理地址的服务也是webService。还有最总要的一点是webService是夸平台和语言的。
两个风格的webService服务
XML+HTTP风格的webService
这种风格的webService也叫做base webService,是最早出现和普遍使用的实现webService方案。是基于xml
和HTTP协议的,xml实现了跨平台和言沟通问题,http解决夸平台和语言传递消息。实现这种风格的webService有三个要素(发布一个webSservice SOAP和WSDL元素是必要的,UDDI是根据需要可选的):
和HTTP协议的,xml实现了跨平台和言沟通问题,http解决夸平台和语言传递消息。实现这种风格的webService有三个要素(发布一个webSservice SOAP和WSDL元素是必要的,UDDI是根据需要可选的):
- SOAP:简单对象访问协议,是交互数据的一种规范,是轻量级的、简单的、基于XML的,它被设计成在WEB上交换结构化的和固化的信息。
- WSDL:是一种描述webService服务的描述语言。简单的来说就是用一种固定的格式描述了webService有哪些服务,服务的入参和出参。这样我们发布一个webService服务,一些webService框架或者工具就能自动产生WSDL文件,客服端也可以根据WSDL文件生成访问服务器端的客户端代码。
- UDDI:是一种目录服务,是一种规范、是Web服务的注册和发现机制,可以使用它对 Web services 进行注册和搜索。UDDI,英文为 "Universal Description,Discovery and Integration",可译为“通用描述、发现与集成服务”。
RESTful架构的webService
关于RESTful在网上看了几篇文章,感觉理解不是一朝一夕就能理解透彻的,所有我也就不误导大家了,以下是我在网络上查看的几篇文章,感觉写的都不错,建议耐心的去看看,会有自己的一个初步理解。
http://www.ruanyifeng.com/blog/2011/09/restful.html
https://www.zhihu.com/question/28557115
我自己的理解:
RESTful架构的webService简单的来说,我们可以将程序的功能发布发布成网络的资源,客户端可以通过URI去访问这个资源,URI有四种请求方式GET、POST、PUT、DELETE四种方式,分别对应GET用来获取服务器资源、POST用于在服务器新建资源、PUT用于在服务器更新资源、DELETE用于在服务器删除资源,我们可以看出通过这四个请求方式可以对一个字资源进行原子操作,即CRUD(创建、读取、更新、删除)。例如:
http://www.ruanyifeng.com/blog/2011/09/restful.html
https://www.zhihu.com/question/28557115
我自己的理解:
RESTful架构的webService简单的来说,我们可以将程序的功能发布发布成网络的资源,客户端可以通过URI去访问这个资源,URI有四种请求方式GET、POST、PUT、DELETE四种方式,分别对应GET用来获取服务器资源、POST用于在服务器新建资源、PUT用于在服务器更新资源、DELETE用于在服务器删除资源,我们可以看出通过这四个请求方式可以对一个字资源进行原子操作,即CRUD(创建、读取、更新、删除)。例如:
GET请求http://localhost:8080/blog/user/query/10000表示获取id为10000的客户信息。
POST请求http://localhost:8080/blog/user/add表示添加客户信息,具有的客服信息在POST请求参数中。
PUT请求http://localhost:8080/blog/user/update/10000表示更新id为10000的客户信息
DELTE请求http://localhost:8080/blog/user/delete/10000表示删除id为10000的客户信息
我们通过以上四个URL可以观察出来:看到url就知道要什么、看到请求方式就知道干什么、看到http状态码就知道结果。我们也可把这种风格的URL称作为RESTful架构API。
java对两种风格的webService的支持
JAX-WS
JAX-WS:Java API for XML Web Services,是一组java接口,支持基于XML+HTTTP的WebService开发。AX-WS是面向消息的,每次请求的时候指定了请求的方法。实现框架:
CXF:Apache CXF = Celtix + XFire,开始叫 Apache CeltiXfire,后来更名为 Apache CXF 了,以下简称为 CXF。CXF 继承了 Celtix 和 XFire 两大开源项目的精华,提供了对 JAX-WS 全面的支持。
XFire:XFire是codeHaus组织提供的一个开源WebService框架。XFire在2007年后已停止更新。正式更名为Apache CXF,亦可以说是XFire2.0。
Axis:Axis是Apache组织推出的SOAP引擎。
CXF:Apache CXF = Celtix + XFire,开始叫 Apache CeltiXfire,后来更名为 Apache CXF 了,以下简称为 CXF。CXF 继承了 Celtix 和 XFire 两大开源项目的精华,提供了对 JAX-WS 全面的支持。
XFire:XFire是codeHaus组织提供的一个开源WebService框架。XFire在2007年后已停止更新。正式更名为Apache CXF,亦可以说是XFire2.0。
Axis:Axis是Apache组织推出的SOAP引擎。
JAX-RS
JAX-RS:Java API for RESTful Web Services,是一组java接口,支持Restful风格的WebService开发。JAX-RS是面向资源的,将网络上的东西当做一种资源,每次请求都是对该资源进行操作,比如对资源的增删查改。实现框架:
CXF:不仅实现了JAX-WS和实现了JAX-RS。
Jersey——Sun公司的JAX-RS参考实现。
RESTEasy——JBoss的JAX-RS项目
Restlet——也许是最早的REST框架了,它在JAX-RS之前就有了。
CXF:不仅实现了JAX-WS和实现了JAX-RS。
Jersey——Sun公司的JAX-RS参考实现。
RESTEasy——JBoss的JAX-RS项目
Restlet——也许是最早的REST框架了,它在JAX-RS之前就有了。
待续。。会有具体java代码实现两种风格的webService。。。