原文:http://blog.csdn.net/pautcher_0/article/details/6798351java
wsdl和soap虽然是web service的两大标准,可是二者并无必然的联系,均可以独立使用。web
wsdl提供了一个统一的接口,目前已经成为一个国际上公认的标准,经过wsdl提供的接口能够访问不一样类型的资源(如java、c#、C、C、C++ 等),由于wsdl是基于xml,与语言平台无关的。另外wsdl提供了binding和service元素,用以绑定接口到具体的服务,实现了接口与实 现的分离。c#
soap(简单对象访问协议)是一种基于http的传输协议,用来访问远程服务安全
wsdl与soap的关系在于:wsdl绑定服务的时候能够设定使用的协议,协议能够是soap、http、smtp、ftp等任何一种传输协议,除此以 外wsdl还能够绑定jms、ejb及local java等等,不过都是须要对binding和service元素作扩展的,并且须要扩展服务器的功能以支持这种扩展服务器
soap协议是一种请求和应答协议规范,而http是web传输协议,soap的传输是能够基于http的,但也能够基于其余的传输协议,如ftp、smtp等。框架
简单对象访问协议(SOAP)是W3C组织的一个 Note, 它描述了一种在分散的或分布式的环境中如何交换信息的轻量级协议。SOAP是一个基于XML的协议,它包括三个部分:SOAP封装(Envelop),封 装定义了一个描述消息中的内容是什么,是谁发送的,谁应当接受并处理它以及如何处理它们的框架;SOAP编码规则(Encoding Rules),用于表示应用程序须要使用的数据类型的实例;SOAP RPC表示(RPC Representation),表示远程过程调用和应答的协定;SOAP能够和多种传输协议绑定(Binding),使用底层协议交换信息。在这个文档 中,目前只定义了SOAP如何和HTTP以及HTTP扩展进行绑定的框架。
SOAP是个通讯协议, SOAP在HTTP协议的基础上,把编写成XML的REQUEST参数, 放在HTTP BODY上提交个WEB SERVICE服务器(SERVLET,ASP什么的) 处理完成后,结果也写成XML做为RESPONSE送回用户端, 为了使用户端和WEB SERVICE能够相互对应,可使用WSDL做为这种通讯方式的描述文件,利用WSDL工具能够自动生成WS和用户端的框架文件,SOAP具有把复杂对 象序列化捆绑到XML里去的能力。
SOAP的前身是RPC, 就是远程呼叫处理的协议,这个协议安全性不是很好,多数防火墙都会阻挡RPC的通讯包,而SOAP则使用HTTP协议做为基本的协议,使用端口80使得SOAP能够透过防火墙,完成RPC的功能。
SOAP协议和HTTP协议同样,都是底层的通讯协议,只是请求包的格式不一样而已,SOAP包是XML格式的,如今咱们编写WEB SERVICE不须要深刻理解SOAP也不要紧。若是SERVICE和CLIENT在一样的环境下使用SOAP,因为通常状况下都有自动生成SOAP程序 框架的工具,所以不知道细节也不要紧. 但是, 若是CLIENT和SERVICE的环境不一样,好比说JAVA的Client和.NET的SERVICE进行通讯,或者是VB CLIENT和TOMCAT下的JAVA SERVICE通讯,仍是要知道一点细节为好. 特别是, WSDL或者UDDI都不是标准,若是不让用就只好手工配制SOAP MESSAGE啦。分布式