文章目录
一、WebService是什么?
WebService是一种跨编程语言和跨操作系统平台的远程调用技术
跨编程语言,就是服务端程序和客户端程序采用的编程语言不同。跨操作系统平台,就是服务端程序和客户端程序运行在不同的操作系统上,如:服务端在Window,客户端在Linux。
远程调用,就是一个程序可以调用另一个程序的方法。也就是一个公司将自己的系统服务通过WebService服务的形式展示出来,让其他公司调用这些服务。比如:三通一达这些快递公司将自己的物流信息查询服务展示出来,然后淘宝、天猫等电商平台通过调用这些服务将物流信息在自家软件上展示
WebService平台需要一套协议来实现分布式应用程序的创建。任何平台都有它的数据表示方法和类型系统。要实现互操作性,WebService平台 必须提供一套标准的类型系统,用于沟通不同平台、编程语言和组件模型中的不同类型系统。Web service平台必须提供一种标准来描述 Web service,让客户可以得到足够的信息来调用这个Web service。最后,我们还必须有一种方法来对这个Web service进行远 程调用,这种方法实际是一种远程过程调用协议(RPC)。为了达到互操作性,这种RPC协议还必须与平台和编程语言无关。
二、WebService的平台技术
XML+XSD,SOAP,WSDL就是构成WebService平台的三大技术。
2.1、XML+XSD
WebService采用HTTP协议传输数据,采用XML格式封装数据(XML中表明了调用远程服务对象的哪个方法,传递的参数是什么,以及服务对象的 返回结果是什么)。XML是WebService平台中表示数据的格式。
XML解决了数据的展示问题,但并没有提供一套支持跨编程语言的数据类型,XSD给出了一套标准的数据类型,并给出了一种语言来扩展这套数据类型。当你用某种语言来构造一个WebService服务时,为了符合WebService标准,所有你使用的数据类型都必须被转换为XSD类型。
2.2、SOAP
WebService通过HTTP协议发送请求和接收结果时,发送的请求内容和结果内容都采用XML格式封装,并增加了一些特定的HTTP消息头,以说明 HTTP消息的内容格式,这些特定的HTTP消息头和XML内容格式就是SOAP协议。SOAP提供了标准的RPC(RPC,感兴趣的可以了解一下)方法来调用WebService。
SOAP协议 = HTTP协议 + XML数据格式
2.3、WSDL
WSDL(Web Services Description Language)就是这样一个基于XML的语言,用于描述Web Service及其函数、参数和返回值。它是WebService客户端和服务器端都 能理解的标准格式。因为是基于XML的,所以WSDL既是机器可阅读的,又是人可阅读的,这将是一个很大的好处。一些最新的开发工具既能根据你的 Web service生成WSDL文档,又能导入WSDL文档,生成调用相应WebService的代理类代码。
WSDL文件保存在web服务器上,通过url地址就可以访问。客户端要调用一个WebService服务之前,要知道这个服务的WSDL文件的地址。WebService服务提供者可以通过两种方式来暴露WSDL文件地址。1.注册到UUID服务器。2.直接告诉对方。
三、WebService开发
WebService开发分为服务端开发和客服端开发
3.1、服务端开发
把公司内部系统的业务方法发布成WebService服务,供远程合作单位和个人调用。(借助一些WebService框架可以很轻松地把自己的业务对象发布成WebService服务,
Java方面的典型WebService框架包括:axis,xfire,cxf 等,java ee服务器通常也支持发布WebService服务,例如JBoss。)
3.2客户端开发
就是调用别人的WebService服务,比如:调用天气预报远程接口,自己就可以玩玩。
四、WebService的工作原理
对客户端而言,我们给这各类WebService客户端API传递WSDL文件的url地址,这些API就会创建出底层的代理类,我调用这些代理,就可以访问到webservice服务。代理类把客户端的方法调用变成SOAP格式的请求数据再通过HTTP协议发出去,并把接收到的SOAP 数据变成返回值返回。对服务端而言,各类WebService框架的本质就是一个大大的 Servlet,当远程调用客户端给它通过http协议发送过来SOAP格式的请求数据时,它分析这个数据,就知道要调用哪个java类的哪个方法,于是去查找或创建这个对象,并调用其方法,再把方法返回的结果包装成SOAP格式的数据,通过http响应消息回给客户端。
五、什么时候使用WebService
1.同一公司的新旧项目之间
2.不同公司的服务应用之间
六、专业术语,提高面试逼格
6.1、WSDL
WSDL是webservice定义语言。
WSDL文档, 一个webservice会对应一个唯一的wsdl文档, 定义了客户端与服务端发送请求和响应的数据格式和过程
6.2、SOAP
SOAP是一种简单的、基于HTTP和XML的协议, 用于在WEB上交换结构化的数据
soap消息:请求消息和响应消息
6.3、SEI(WebService EndPoint Interface)
SEI是web service的终端接口,就是WebService服务器端用来处理请求的接口
6.4、CXF(Celtix + XFire)
一个apache的用于开发webservice服务器端和客户端的框架。