WebService笔记
WebService是一种跨编程语言和跨操作系统平台的远程调用技术。所谓远程调用,就是一台计算机a上的一个程序可以调用另外一台计算机b上的一个对象的方法。
什么情况下可能用到远程调用技术呢?例如Amazon,淘宝网,校内网,百度等把自己的系统服务以WebService服务的形式暴露出来,让第三方网站和程序可以调用这些服务功能。即所谓SOA应用。
面试WebService的总体回答思路:1. 是跨语言的远程调用技术,把对象的方法让远程可以调用。2. SOAP协议。 3. 服务器端要提供WSDL文件,WSDL文件的作用。 4. 客户端调用原理。 5. 服务器端实现原理。
所谓跨编程语言和跨操作平台,就是说服务端程序采用Java编写,客户端程序可以采用其他编程语言编写,反之亦然。跨操作系统平台则是指服务端程序和客户端程序可以再不同的操作系统上允许。
WebService使用SOAP协议实现跨编程语言和跨操作系统平台。
WebService采用HTTP协议传输数据,采用XML格式封装数据(即XML中说明调用远程服务对象的哪个方法,传递的参数,以及服务对象的返回结果是什么)。WebService通过HTTP协议发送请求和接收结果时,发送的请求内容和结果内容都采用XML格式封装,并增加一些特定的HTTP消息头,以说明HTTP消息的内容格式,这些简单的HTTP消息头和XML内容格式就是SOAP协议(Simple Object Access Protocol)
SOAP协议 = HTTP协议 + XML数据格式
WebService客户端只要能使用HTTP协议把遵循某种格式的XML请求数据发送给WebService服务器,WebService服务器再通过HTTP协议返回遵循某种格式的XML结果数据就可以了。WebService客户端和服务器端不用关心对方使用的是什么编程语言。
WSDL(WebService Description Language)文件用来说明WebService有什么服务可以对外调用,服务是什么(服务中有哪些方法,方法接受的参数是什么,返回值是什么),服务的网络地址用哪个URL表示,服务是通过什么方式来调用的。WSDL是基于XML格式的,它是WebService客户端和服务器端都能理解的标准格式,其中描述的信息可以分为what(服务是什么),where(服务在哪里),how(怎么调用服务)等部分。
WSDL文件保存在Web服务器上,通过一个URL地址就可以访问到它。客户端要调用一个WebService服务之前,要知道该服务的WSDL文件的地址。
WebService通过两种方式来暴露它的WSDL文件地址:
1. 注册到UDDI服务器,以便被人查找
2. 直接告诉给客户端调用者
WSDL用于描述对外的一项服务,其中的<service>元素包含多个<port>元素,<port>元素中又包含多个<option>元素,每个<option>元素又包含一个<input>和<output>元素,<input>元素和<output>元素的内容分别指向前面定义的一个<message>元素。每个<port>元素对应一个Java类,其中每个<option>元素对应Java类中的一个方法。
WebS开发可以分为服务器端开发和客户端开发两个方面。
Webservice的客户端编程原理:我们给各类Webservice客户端API传递WSDL文件的URL地址,这些API就会创建出底层的代理类,我们调用这些代理,就可以访问到WebService服务。代理类把客户端的方法调用变成SOAP格式的请求数据再通过HTTP协议发出去,并把接收到的SOAP数据变成返回值返回。
Webservice是怎样实现调用其它计算机中的对象的方法的呢?
气基本原理是是在客户端程序的本地有一个代理对象,这个代理对象和远程对象具有相同的方法声明,这个代理程序不用我们自己编写,工具可以帮我们生成。客户端程序调用本地代理对象的方法时,代理对象会通过某种网络传送技术去联系远程的程序,远程程序再调用代理对象请求的相应本地对象的方法,然后将方法执行的结果返回给客户端代理程序。
WebService框架的底层实现原理:
各类WebService框架的本质就是一个大大的Servlet,当远程调用客户端给它通过HTTP协议发送过来SOAP格式的请求数据时,它分析这个数据,就知道要调用哪个Java类的哪个方法,于是去查找或创建这个对象,并调用其它方法,再把方法返回的结果包装成SOAP格式的数据,通过HTTP响应消息回给客户端。
出处:http://bluescorpio.cnblogs.com
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。