[原]web服务器:SOAP,WSDL,UDDI

一、web服务简介

    Web Services是一个可以将应用程序变为Web应用程序,将自己本地的应用程序信息通过网络,发布到网络中,让别人通过浏览器访问本地信息。

    Web Services的技术主要建立在XML的规范之上,保证了这一体系结构的平台无关性、语言无关性和人机交互性能。

 

    Web Services框架的核心技术包括SOAPWSDLUDDI,它们都是以标准的XML文档的形式表示的。

    1. SOAPSimple Object Access Protocol)简单对象访问协议,消息起着用来交换XML文档和数据的网络信封的作用。
    2. WSDLWeb Service Description LanguageWeb服务描述标准,勇于描述使用SOAP在两个系统间交换的XML数据的结构。
    3. UDDIUniversal DescriptionDiscoveryand Intergration,通用描述,发现与集成)定义了一套标准的WEB服务操作(方法),用于存储、查找有关其他Web服务应用程序方面的信息。


web服务框架:



二、Web服务结构单元


SOAP

    SOAP是一种简单的、轻量级的基于XML的机制,用于在网络应用程序之间进行结构化的数据交换。SOAP包括三部分:一个定义描述消息内容的框架的信封,一组表示应用程序定义的数据类型实例的编码规则,以及表示远程过程调用和响应的约定。


    SOAP消息包含在HTTP的请求与应答消息的有效负载区中。由于HTTP POST请求存在有效负载区,因此完全适于携带SOAP消息。HTTP应答消息均遵循相同的格式并携带有效负载。

 

WSDL

     WSDL协议(Web服务描述语言)描述如何与一个Web服务通讯,用于描述Web Service及其函数、参数和返回值。因为基于XML的,所以WSDL既是机器可读,又是人可读。一些新的开发工具能根据Web Service生成WSDL文档,又能导入WSDL文档,生成调用相应的WebService代码。在WSDL定义中,允许不同类型的通讯(绑定)。

 

    WSDL可与SOAP绑定:当您在UDDI注册中心发布Web服务时,会把WSDLSOAP/UDDI结合起来。

 

    WSDLUDDI的映射:为帮助在UDDI注册中心发布和查找WSDL服务描述,WSDL文档被分为两种类型:服务接口(serviceinterface)和服务实现(serviceimplementatios)。服务接口由WSDL文档来描述,这种文档包含服务接口的types、import、message、portType和binding等元 素。服务接口定义了实现一个或多个服务的WSDL服务,它是Web服务的抽象定义,并被用于描述某种具体类型的服务。

 

UDDI

    UDDI数据实体提供对定义业务和服务信息的支持。WSDL中定义的服务描述信息时UDDI注册中心的补充。



    与SOAP关系:

UDDI构建于网络传输层和基于SOAPXML消息传输层之上。

UDDI提供了一种编程模型和模式,它定义域注册中心通信的规则。UDDI规范中所有的API都用XML来定义,包装在SOAP信封中,在HTTP上传输。

UDDI消息的传输,通过HTTP从客户机的SOAP请求传到注册中心节点,再反向传输。注册中心服务器的SOAP服务器接受UDDISOAP消息,进行处理,然后把SOAP响应返回给客户机。


三、关系

WSDL用来描述服务;

UDDI用来注册和查找服务;

SOAP作为传输层,用来在消费者和服务提供者之间传送消息。SOAP是Web服务的默认机制,其他的技术为可以服务实现其他类型的绑定。

用户可以在UDDI注册表(registry)查找服务,取得服务的WSDL描述,然后通过SOAP来调用服务。


四、如何调用WebServices

     客户端::取得服务端的服务描述文件WSDL,解析该文件的内容,了解服务端的服务信息,以及调用方式。根据需要,生成恰当的SOAP请求消息(指定调用的方法,已经调用的参数),发往服务端。等待服务端返回的SOAP回应消息,解析得到返回值。

    

    服务端:生成服务描述文件,以供客户端获取。接收客户端发来的SOAP请求消息,解析其中的方法调用和参数格式。根据WSDL和WSML的描述,调用相应的COM对象来完成指定功能,并把返回值放入SOAP回应消息返回给用户。

 


五、总结

     Web服务的现状:Web站点就像孤岛,信息无法管理。信息交互能及时获取数据,这时候用到了web服务,增加系统分布式通讯。各站点之间就可以通讯了。

原文地址:https://www.cnblogs.com/java20131201/p/3466237.html