目前,几乎全部的应用程序都须要与运行在其它异构平台上的应用程序进行数据交换,这就须要一个接口来知足两个不一样的平台。webservice能知足客户端和服务器之间经过http进行通讯,不管这两个程序的平台和编程语言是什么。java
webservice是什么呢?web
简言之:webservice是一种跨编程语言和跨操做系统平台的远程调用技术。编程
所谓跨操做语言和跨平台,就是说服务器端采用java语言编写,客户端能够采用其它语言编写。跨操做系统平台则是指服务端程序和客户端程序能够在不一样的操做系统上运行。浏览器
所谓远程调用指的是:计算机A上的一个程序能够调用另外一台计算机B上的一个对象的方法,例如,银联提供给商场的POS刷卡系统,商场的pos机转帐调用的转帐方法的代码实际上是跑在银行服务器上。服务器
从表面上看,webservice就是一个应用程序向外提供一些可以经过web进行调用的API。也就是说客户端能够经过web来调用这个API。框架
webservice平台技术编程语言
xml+xsd,soap和wsdl是构成webservice平台的三大技术。url
xml+xsd操作系统
webservice采用http协议传输数据,采用xml格式封装数据。代理
soap
webservice经过http协议发送请求和接收数据时,发送请求的内容和结果都采用xml格式封装,并增长了一些特定的http消息头,以说明http消息的内容格式,这些特定的http消息头和xml内容格式就是soap协议。soap提供了标准的RPC方法来调用webservice。
soap协议 = http协议+xml数据格式
wsdl
webservice客户端要调用一个webservice服务,首先要知道这个服务器的地址在哪,以及这个服务器中有哪些方法能够调用,因此webservice服务器首先要经过一个wsdl文件来讲明本身家中有哪些方法能够被外界调用,方法包括 参数、返回值等。
wsdl主要描述webservice参数及其返回值。他是webservice客户端和服务器都能理解的标准格式。wsdl文件保存在web服务器上,经过一个url地址就可以访问到它。因此,客户端要调用一个webservice服务之间,要知道该服务的wsdl文件的地址。webservice服务商经过两种方式发布他的wsdl文件地址:1>注册到UDDI服务器,以便被人查找;2>直接告诉给客户端调用者。
webservice开发
webservice开发分为服务器端开发和客户端开发两个方面:
服务器端开发:将公司内部系统的业务发布到webservice服务器上,供远程合做单位和我的调用。(借助一些webservice框架很容易将本身的业务发布到webservice服务器上,java典型的框架包括:axif,xfire,cxf等)。
客户端开发:调用别人发布的webservice服务,来实现本身的功能。例如,调用百度发布的天气预报webservice服务,使本身的应用程序实现天气预报的功能。
webservice工做原理:对客户端而言,服务器端会给webservice客户端API传递wsdl文件的URL地址,这些API就会建立底层的代理类,客户端调用这些代理,就能访问到webservice服务。代理类将客户端的方法调用变成soap格式的请求数据再经过HTTP协议发送出去,并将接收到的soap数据变成返回值返回。对服务器端而言,当远程客户端经过http协议发送过来soap格式的请求数据时,它解析这个数据,就知道调用哪一个java类的哪一个方法,因而去查找或建立这个对象,并调用其方法,再将方法返回的结果包装成soap格式的数据,经过http响应返回给客户端。
webservice使用
1.跨防火墙通讯
若是某个应用程序有成千上万个用户,并且这些用户分布在世界各地,那么客户端和服务器之间的通讯变成一个棘手的问题。由于客户端和服务器之间一般会有防火墙或者代理服务器。传统的作法是,选择用浏览器做为客户端,写下不少ASP页面,将应用程序的中间层暴露给最终用户。这样作的结果是开发难度大\维护性低。若是中间层组建换成webservice的话,就能够从用户界面直接调用中间层组件。在一个用户界面和中间层有不少交互的应用程序中,最好是使用webservice这种结构,这样能够节省用户界面编程的开发时间。
2.应用程序集成
企业里一般须要将不一样编程语言\不一样平台上运行的程序集成起来,使用webservice可以很好的处理不一样语言/不一样平台之间的交互性问题。