关于webService的一些概念理解

反编译(自动关联源码)操作步骤:http://www.cnblogs.com/godtrue/p/5499785.html

一、WebService、CXF、jax-ws、jax-rs、Restful之间关系

WebService:部署网络服务  tomcat(jetty)上放java代码

 CXF:是目前最主流WebService开发框架

jax-ws和jax-rs是CXF的两种服务方式

jax-rs采用Restful风格

二、jax-ws与jax-rs的区别

1、采用协议不一样

jax-ws采用SOAP协议

jax-rs采用HTTP协议

2、支持数据格式不一样

jax-ws只支持xml格式

jax-rs支持xml、json格式

三、怎么理解Restful风格

1、一种代码编写风格,基于URI (Universal Resource Identifier)

http://localhost:9997/userService/user 查询所有用户信息

http://localhost:9997/userService/user/1  查询用户编号为1的用户信息

2、你告诉我你用什么请求方式,我就知道你要做什么操作

POST请求方式访问 保存操作(增,英文:Create)

DELETE请求方式访问 删除操作(删,英文:Delete)

PUT 请求方式访问 修改操作(改,英文:Update)

GET请求方式访问 查询操作(查,英文:Retrieve)

四、为什么要用WebService

1、为什么会有webservice

      每一项新技术的产生,都是由于被需要。语言发展太多了,各个语言之间不能相互调用,数据无法共享导致了数据不一致。

为了解决这个问题我们需要一项技术解决异构系统之间的数据共享问题webservice很成功的解决了这个问题。

2、不同语言之间数据共享需要解决什么问题

      1. 传输的数据可以跨平台,谁都认识它。

      2. 提供的服务要能很方便调用最好像网站那样可以什么浏览器什么操作系统都可以访问。

3、目前有哪些技术可以解决上面的问题

      1. jsonxml每个语言都认识还可以解析。所以我们只要传送json或者xml这种格式的数据就行了。

      2. 如果我们把服务部署在web站点上是不是可以做到像访问网站那样方便呢?如果可以,那应该叫web服务(web service

4SOAP协议说明

      协议就是一种规定,协议的存在就是为了规范。试想一下,如果每个人都按照自己的想法去传输数据,那么谁能知道传的是什么东西,即便你获取数据了你也不知道那是什么意思。所以我们需要制定一份协议,大家都遵守这个协议就能很好的统一,解析也很方便了。为了说明SOAP协议,下面将详细的说明数据的传输以及与之相关的HTTP协议。

5Socket通信

      ISO七层模型:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。

      Socket属于传输层的,也就是说这个技术用来传输数据。它只会传输数据,如果我们传输的数据恰好满足了某种特定的格式。对于数据需要满足的格式,我们称为协议。例如:HTTP协议,SOAP协议。我们可以简答的理解为HTTP就是对socket的一种封装。它传递的数据满足HTTP协议的要求,可以更方便我们开发。

      所以我们可以总结出以下几点:

      1. socket是大多数通讯协议实现传输数据的基础。

      2. HTTP是对socket的进一步封装,可以提高我们的开发效率。

      3. SOAP协议其实就是规定了XML文本应该满足怎样的格式,因为这样才方便解析,做到了统一。

6WSDL告诉别人如何调用服务

      从上面我们知道,数据的传输以及数据需要满足的格式。那么别人通过什么可以找到你这个服务该怎么调用呢?你是不是需要写个文档描述下你发布的服务呢?

      为了描述我们发布的服务我们需要写一个文件。我们叫他WSDL也就是Web Services Description Language(描述你发布服务的一种语言),这是一种规范。统一的东西你学一次就可以了,不统一的东西你得不停的学,因为没规律。

       WSDL是一个xml的文档,里面描述了服务的请求地址,用了什么协议,提供了哪些方法,方法参数是什么等信息。

7、总结

      Web Service 就是发布在web上的服务。使用http传递数据。传递的数据是满足soap协议规范的xml文档。使用wsdl描述发布信息让别人能看懂怎么去调用。 webservice = http + soap + wsdl

WebService 的整个原理流程 :

1.Client 有需要,想调用一个服务,但不知道哪里去调用 . 但知道 UDDI Registry 上可以查到。

2.果然 UDDI 记录了某个一个叫做 Web Server A 的服务器能提供这样的服务。

3.于是 Client Web Server A, 询问确切的调用方法。

4.Web Server A 看到 Client 提出的“确切方法查询”之后, 立即返回给它一个 WSDL 描述的 xml 文档这里记录他能提供的各类方法接口 .

5.Client 了解到这些之后,将这些 xml 的接口方法,封装成为 HTTP 请求 , 发给 Web Server A. 这些封装方式采用的是标准的 SOAP 方式 , 实质是满足 HTTP 协议的一些 SOAP 的报文消息。

6.Web Server A 回应的也是 HTTP 协议的 SOAP . 这样双方的请求 - 响应完全畅通。

Webservice的几种概念:

HTTP协议为基础,通过XML进行客户端和服务器端通信的框架/组件。

两个关键点:

1)服务端提供的功能,通过xml描述;

2)第一步中描述的功能,嵌入到HTTP协议中,使得能通过HTTP协议进行通信(就是SOAP

采用这两个技术的主要目的:

1跨平台,支持HTTP协议的主机和服务器都能够建立通信联系,并且大部分主机和服务器都支持HTTP协议,一般而言,所有主机和服务器之间的通信都需要通过防火墙,HTTP协议的优势在于防火墙一般不会封掉80端口,这样就方便安全通信;

2跨语言,任何语言都支持XMl文件的解析,这样不同语言之间也可以用XML传递信息,通信的内容受XMl限制;例如,java开发的服务器端,c语言的客户端也可以访问。

JAX-RS常用注解:

@Path:标注资源类或方法的相对路径。

@GET(查)、@PUT(改)、@POST(增)、@DELETE(删):标注方法的HTTP请求类型。

@Produces:标注返回的MIME媒体类型。

@Consumes:标注可接受请求的MIME媒体类型。

@PathParam、@QueryParam、@HeaderParam、@CookieParam、@MatrixParam、@FormParam:标注方法的参数来自于HTTP请求的位置。

@PathParam来自于URL的路径

@QueryParam来自于URL的查询参数,

@HeaderParam来自于HTTP请求的头信息,

@CookieParam来自于HTTP请求的Cookie

1.Accept属于请求头, Content-Type属于实体头。 
Http报头分为通用报头,请求报头,响应报头和实体报头。 
请求方的http报头结构:通用报头|请求报头|实体报头 
响应方的http报头结构:通用报头|响应报头|实体报头

2.Accept代表发送端(客户端)希望接受的数据类型。 
比如:Accept:text/xml; 
代表客户端希望接受的数据类型是xml类型

Content-Type代表发送端(客户端|服务器)发送的实体数据的数据类型。 
比如:Content-Type:text/html; 
代表发送端发送的数据格式是html。

猜你喜欢

转载自blog.csdn.net/weixin_41768263/article/details/80507945