webservice简单了解

一:WebService的功能是什么?

 

WebService是一种跨编程语言和跨操做系统平台的远程调用技术java

 

所谓远程调用,就是一台计算机a上的一个程序能够调用到另一台计算机b上的一个对象的方法,譬如,银联提供给商场的pos刷卡系统(采用交互提问的方式来加深你们对此技术的理解)。web

远程调用技术有什么用呢?商场的POS机转帐调用的转帐方法的代码是在银行服务器上,仍是在商场的pos机上呢?编程

 

什么状况下可能用到远程调用技术呢?例如,amazon,天气预报系统,淘宝网,校内网,百度等把本身的系统服务以webservice服务的形式暴露出来,让第三方网站和程序能够调用这些服务功能,这样扩展了本身系统的市场占有率,往大的概念上吹,就是所谓的SOA应用服务器

所谓跨编程语言和跨操做平台,就是说服务端程序采用java编写,客户端程序则能够采用其余编程语言编写,反之亦然!跨操做系统平台则是指服务端程序和客户端程序能够在不一样的操做系统上运行。网络

 

除了WebService外,常见的远程调用技术还有RMIRemote method invoke)和CORBA,因为WebService的跨平台和跨编程语言特色,所以比其余两种技术应用更为普遍,但性能略低。框架

 

二: webservice的调用原理

WebService使用SOAP协议实现跨编程语言和跨操做系统平台eclipse

WebService采用HTTP协议传输数据,采用XML格式封装数据XML中说明调用远程服务对象的哪一个方法,传递的参数是什么,以及服务对象的返回结果是什么)。WebService经过HTTP协议发送请求和接收结果时,发送的请求内容和结果内容都采用XML格式封装,并增长了一些特定的HTTP消息头,以说明HTTP消息的内容格式,这些特定的HTTP消息头和XML内容格式就是SOAP协议(simple object access protocol,简单对象访问协议编程语言

SOAP协议 = HTTP协议 + XML数据格式 ide

SOAP协议是基于HTTP协议的,二者的关系就比如高速公路是基于普通公路改造的,在一条公路上加上隔离栏后就成了高速公路。工具

 

商店的服务员只要收到了钱就给客户提供货物,商店服务员不用关心客户是什么性质的人,客户也不用关心商店服务员是什么性质的人。一样, WebService客户端只要能使用HTTP协议把遵循某种格式的XML请求数据发送给WebService服务器, WebService服务器再经过HTTP协议返回遵循某种格式的XML结果数据就能够了,WebService客户端与服务器端不用关心对方使用的是什么编程语言。

HTTP协议和XML是被普遍使用的通用技术,各类编程语言对HTTP协议和XML这两种技术都提供了很好的支持,WebService客户端与服务器端使用什么编程语言均可以完成SOAP的功能,因此,WebService很容易实现跨编程语言,跨编程语言天然也就跨了操做系统平台。

 

三:WebService调用以前的工做

1.WSDL文件

比如咱们去商店买东西,首先要知道商店里有什么东西可买,而后再来购买,商家的作法就是张贴广告海报。 WebService客户端要调用一个WebService服务,首先要有知道这个服务的地址在哪,以及这个服务里有什么方法能够调用,因此,WebService服务器端首先要经过一个WSDL文件来讲明本身家里有啥服务能够对外调用,服务是什么(服务中有哪些方法,方法接受的参数是什么,返回值是什么),服务的网络地址用哪一个url地址表示,服务经过什么方式来调用。

WSDLwebservice description language)是基于XML格式的,它是WebService客户端和服务器端都能理解的标准格式,其中描述的信息能够分为what,where,how等部分!

WSDL文件保存在Web服务器上,经过一个url地址就能够访问到它。客户端要调用一个WebService服务以前,要知道该服务的WSDL文件的地址。WebService服务提供商能够经过两种方式来暴露它的WSDL文件地址:

注册到UDDI服务器,以便被人查找

直接告诉给客户端调用者,例如,在本身网站给出信息或邮件告诉。

 

四:WebSevice的工做过程

wKiom1PaF-XSUKcHAAHvadMxihQ702.jpg

 

五: WebService的开发应用

WebService开发能够分为服务器端开发和客户端开发两个方面:

把公司内部系统的业务方法发布成WebService服务,供远程合做单位和我的调用。(借助一些WebService框架能够很轻松地把本身的业务对象发布成WebService服务,Java方面的典型WebService框架包括:axisxfirecxf等,java ee服务器一般也支持发布WebService服务,例如JBoss。这框架应用不是学习的重点,看看相关的技术手册都很轻松地掌握,关键仍是要了解WebService的工做原理。)

调用别人发布的WebService服务,大多数人从事的开发都属于这个方面,例如,调用天气预报WebService服务。(使用厂商的WSDL2Java之类的工具生成静态调用的代理类代码;使用厂商提供的客户端编程API类;使用SUN公司早期标准的jax-rpc开发包;使用SUN公司最新标准的jax-ws开发包。)

  六:WebService的客户端编程原理

1.咱们给这各种WebService客户端API传递wsdl文件的url地址,这些API就会建立出底层的代理类,我调用这些代理,就能够访问到webservice服务。代理类把客户端的方法调用变成soap格式的请求数据再经过HTTP协议发出去,并把接收到的soap数据变成返回值返回。

 

2.工具类生成静态代理类的方式

xfireWSGen

还须要额外导入ant.jar

axisWSDL2java

写批处理或直接在eclipse中运行这个类

jdk6wsimport

cxf的…

 

3.动态代理类的方式

使用jax-rpc

第一步是建立xxx.Service实例对象

调用getPort返回代理,客户端的接口要实现remote接口,由于客户端代理是用java技术生成的,java生成的远程调用的代理必须实现remote接口,即我实现的代理靠的是javaremote技术。

使用jax-ws

第一步就是建立出javax.xml.ws.Service实例对象

 

4.动态方法的调用

使用jax-rpc

第一步是建立xxx.Service实例对象

调用getCall返回Call对象,callinvoke实现动态调用。

使用jax-ws

第一步就是建立出javax.xml.ws.Service实例对象

 

七:WebService框架的底层原理

各种WebService框架的本质就是一个大大的Servlet,当远程调用客户端给它经过http协议发送过来soap格式的请求数据时,它分析这个数据,就知道要调用哪一个java类的哪一个方法,因而去查找或建立这个对象,并调用其方法,再把方法返回的结果包装成soap格式的数据,经过http响应消息回给客户端。

 

1.不一样框架之间的比较

 JAX-WS

  Jax-WSJava1.6中才有的,新的WebService模式,基于注解的方式配置WebService,很相似Asp中的WebService,难度已经比Xfire方式的配置下降了不少.

JAX-WS——Java API for XML Web Services (JAX-WS)是Java程序设计语言一个用来建立Web服务的API

   REST(JAX-RS)

   用的比较少

   Xfire(已过期)

   配置比较繁琐

八:HttpServiceWebService的区别

HTTPService基于http协议,而WebService基于soap协议

在处理数据上HTTPService效率较高,WebService能处理较复杂的数据类型

 

简单说 
httpservice经过postget获得你想要的东西
webservice就是使用soap协议获得你想要的东西,相比httpservice能处理些更加复杂的数据类型

 

XML

   可扩展的标记语言(XML)Web service平台中表示数据的基本格式。除了易于创建和易于分析外,XML主要的优势在于它既是平台无关的,又是厂商无关的。无关性是比技术优越性更重要的:软件厂商是不会选择一个由竞争对手所发明的技术的。

   SOAP

  SOAPweb service的标准通讯协议SOAPsimple object access protocoll的缩写,简单对象访问协议它是一种标准化的传输消息的XML消息格式

   WSDL

   WSDL的全称是web service Description Language,是一种基于XML格式的关于web服务的描述语言。其主要目的在于web service的提供者将本身的web服务的全部相关内容,如所提供的服务的传输方式,服务方法接口,接口参数,服务路径等,生成相应的彻底文档,发布给使用者。使用者能够经过这个WSDL文档,建立相应的SOAP请求消息,经过HTTP传递给webservice提供者;web服务在完成服务请求后,将SOAP返回消息传回请求者,服务请求者再根据WSDL文档将SOAP返回消息解析成本身可以理解的内容。

  UDDI

   web service进行UDDI注册发布,UDDI是一种建立注册表服务的规范,以便你们将本身的web service进行注册发布供使用者查找.然而当服务提供者想将本身的web service向全世界公布,以便外部找到其服务时,那么服务提供者能够将本身的web service注册到相应的UDDI商用注册网站,目前全球有IBM4UDDI商用注册网站。由于WSDL文件中已经给定了web service的地址URI,外部能够直接经过WSDL提供的URI进行相应的web service调用。因此UDDI并非一个必需的web service组件,服务方彻底能够不进行UDDI的注册。