综合技术 --webservice理解

目前,几乎所有的应用程序都需要与运行在其它异构平台上的应用程序进行数据交换,这就需要一个接口来满足两个不同的平台。webservice能满足客户端和服务器之间通过http进行通信,无论这两个程序的平台和编程语言是什么。

webservice是什么呢?

简言之:webservice是一种跨编程语言和跨操作系统平台的远程调用技术。

所谓跨操作语言和跨平台,就是说服务器端采用java语言编写,客户端可以采用其它语言编写。跨操作系统平台则是指服务端程序和客户端程序可以在不同的操作系统上运行。

所谓远程调用指的是:计算机A上的一个程序可以调用另一台计算机B上的一个对象的方法,例如,银联提供给商场的POS刷卡系统,商场的pos机转账调用的转账方法的代码其实是跑在银行服务器上。

从表面上看,webservice就是一个应用程序向外提供一些能够通过web进行调用的API。也就是说客户端可以通过web来调用这个API。

webservice平台技术

xml+xsd,soap和wsdl是构成webservice平台的三大技术。

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能够很好的处理不同语言/不同平台之间的交互性问题。

 

你可能感兴趣的:(综合技术 --webservice理解)