背景:为了方便理解,可以先认为:Web Services = http + xml
,而现在流行的Restful可以认为是:Restful = http + json
,当然其实这两种说法都是很不严谨的,这么写只是为了方便理解。
Web Services特点介绍
WebServices 提供一个建立分布式应用的平台,使得运行在不同操作系统和不同设备上的软件,或者是用不同的程序语言和不同厂商的软件开发工具开发的软件,所有可能的已开发和部署的软件,能够利用这一平台实现分布式计算的目的。WebServices的思想是:使得应用程序也具有 Web 分布式编程模型的松散耦合性。
可以先认为Web Services是一项技术,可以实现不同平台,不同系统的外部调用,比较适合异构系统之间的调用,主要是使用了:HTTP请求协议和XML数据格式,由于国外现在还是在大面积使用Web Services技术,所以还是了解一下比较好。
关于Web Services会听到很多其他的名词,这里可以做一下简单的普及:
xsd是什么?
xsd(XML Schema Definition):是用来描述XML的文档结构的,是属于DTD的替代者,因为xsd是基于XML编写,而DTD不是,而且xsd支持数据结构,支持命名空间等等,所以现在很少人使用老掉牙的DTD了。
SOAP协议是什么?
SOAP(Simple Object Access Protocal):SOAP协议是基于HTTP协议的,基于POST请求发送数据,如果要发送发送一个SOAP协议,需要设置特定的请求头或者是特定的Content—Type如下:
SOAPAction: "http://WebXml.com.cn/getSupportCity"
或者
Content—Type:application/soap+xml
这个时候就可以认为是一个SOAP请求了,但是SOAP请求没有这么简单,我们还需要定义数据格式,SOAP请求对数据格式也是有严格要求的,如下:soap:Envelope
是必需的,还有其他元素,Header,Body等等,发送的数据要包含在这里面;
<?xml version="1.0"?>
<soap:Envelope xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">
<soap:Header>
<m:Trans xmlns:m="http://www.w3schools.com/transaction/"
soap:mustUnderstand="1">234
</m:Trans>
</soap:Header>
<soap:Body>
<m:GetPrice xmlns:m="http://www.w3schools.com/prices">
<m:Item>Apples</m:Item>
</m:GetPrice>
</soap:Body>
</soap:Envelope>
WSDL是什么?
WSDL(Web Services Description Language):WSDL是用来描述Web Service的,它用XML的格式描述了WebService有哪些方法、参数类型、访问路径等等。我们要使用一个Web Service肯定首先要获取它的WSDL。Web Service服务器端首先要通过一个WSDL文件来说明自己家里有啥服务可以对外调用。
将WSDL文件保存在Web服务器上,通过一个url地址就可以访问。客户端要调用一个WebService服务之前,要知道该服务的WSDL文件的地址。Web Service服务提供商可以通过两种方式来暴露它的WSDL文件地址:1.注册到UDDI服务器,以便被人查找;2.直接告诉给客户端调用者。
(提示:IDEA能根据你的Web Service生成WSDL,也能导入WSDL生成响应的代理类代码。)
番外篇:可以认为WebService平台的三大技术分别是:XML+XSD,SOAP,WSDL。可以认为,XML+XSD定义了客户端的数据格式,SOAP定义了传输协议,WSDL定义了服务端的有哪些服务。