WebService是一种跨编程语言和跨操作系统平台的远程调用技术。
构成WebService平台的三大技术:XML+XSD,SOAP,WSDL。
1、XML+XSD:
WebService采用HTTP协议传输数据,采用XML格式封装数据(即XML中说明调用远程服务对象的哪个方法,传递的参数是什么,以及服务对象的 返回结果是什么)。XML是WebService平台中表示数据的格式。除了易于建立和易于分析外,XML主要的优点在于它既是平台无关的,又是厂商无关 的。无关性是比技术优越性更重要的:软件厂商是不会选择一个由竞争对手所发明的技术的。
XML解决了数据表示的问题,但它没有定义一套标准的数据类型,更没有说怎么去扩展这套数据类型。例如,整形数到底代表什么?16位,32位,64位?这 些细节对实现互操作性很重要。XML Schema(XSD)就是专门解决这个问题的一套标准。它定义了一套标准的数据类型,并给出了一种语言来扩展这套数据类型。WebService平台就 是用XSD来作为其数据类型系统的。当你用某种语言(如VB.NET或C#)来构造一个Web service时,为了符合WebService标准,所 有你使用的数据类型都必须被转换为XSD类型。你用的工具可能已经自动帮你完成了这个转换,但你很可能会根据你的需要修改一下转换过程。
2、SOAP:
CXF是建立在SOAP协议上的一个Web service框架。什么事SOAP协议,简单来说就是两个不同项目(开发语言不同等)通过xml文件来描述要传输的东西,然后通过HTTP协议传输,接收方把收到的xml解析成需要的对象使用,返回的时候又用xml封装又通过http协议传输,如此就是SOAP协议。而CXF就是两个项目之间为了提供服务,而开发的一个开源框架,使用CXF框架可以快速搭建web service。CXF就是将项目中暴露出来的接口(服务)包装起来,成为wsdl,使用方通过wsdl来调用这些服务。
WebService通过HTTP协议发送请求和接收结果时,发送的请求内容和结果内容都采用XML格式封装,并增加了一些特定的HTTP消息头,以说明 HTTP消息的内容格式,这些特定的HTTP消息头和XML内容格式就是SOAP协议。SOAP提供了标准的RPC方法来调用Web Service。
SOAP协议 = HTTP协议 + XML数据格式
SOAP协议定义了SOAP消息的格式,SOAP协议是基于HTTP协议的,SOAP也是基于XML和XSD的,XML是SOAP的数据编码方式。打个比 喻:HTTP就是普通公路,XML就是中间的绿色隔离带和两边的防护栏,SOAP就是普通公路经过加隔离带和防护栏改造过的高速公路。
3、WSDL:用于描述WebService及其函数、参数和返回值的一个基于XML的语言。用来说明自己家里有啥服务可以对外调用,服务是什么(服务中有哪些方法,方法接受的参数是什么,返回值是什么),服务的网络地址用哪个url地址表示,服务通过什么方式来调用。
WSDL 文件保存在Web服务器上,通过一个url地址就可以访问到它。客户端要调用一个WebService服务之前,要知道该服务的WSDL文件的地址。 WebService服务提供商可以通过两种方式来暴露它的WSDL文件地址:1.注册到UDDI服务器,以便被人查找;2.直接告诉给客户端调用者。
WebService开发分为服务端开发和客户端开发
1、服务端开发:
把公司内部系统的业务方法发布成WebService服务,供远程合作单位和个人调用。(借助一些WebService框架可以很轻松的把自己的业务对象发布成WebService服务,Java方面典型的WebService框架包括:axis、xfire、cxf等,javaee服务器通常也支持发布WebService服务,例如JBoss)
2、客户端开发:
调用别人发布的WebService服务,大多数人从事的开发都属于这个方面,例如调用天气预报WebService服务。
3、WebService的工作调用原理
对客户端而言,我们给这各类WebService客户端API传递wsdl文件的url地址,这些API就会创建出底层的代理类,我调用这些代理类,就可以访问到WebService服务。代理类把客户端的方法调用变成soap格式的请求数据再通过HTTP协议发出去,并把接受到的soap数据变成返回值返回。对服务端而言,各类WebService框架的本质就是一个大大的Servlet,当远程调用客户端给它通过http协议发送过来soap格式的请求数据时,它分析这个数据,就知道要调用哪个java类的哪个方法,于是去查找或创建这个对象,并调用其方法,再把方法返回的结果包装成soap格式的数据,通过http响应消息回给客户端。
适用场合
1、跨防火墙通信
字面意思
2、应用程序集成
通过WebService,可以很容易的集成不同结构的应用程序。
3、B2B集成
跨公司的商务交易集成通常叫做B2B集成。
4、软件和数据重用
采用WebService应用程序可以用标准的方法把功能和数据“暴露”出来,供其他应用程序使用,达到业务级重用。
不适合场合
1、单机应用程序
只要用本地的API就可以了。
2、局域网的同构应用程序
同一局域网上,使用DCOM会比SOAP/HTTP有效的多。