Web服务基于开放的因特网标准,它的结构单元是SOAP、WSDL和UDDI。
SOAP
SOAP是序列化调用位于远程系统上的服务所需信息的标准方法,这些信息可以使用一种远程系统能够读懂的格式通过网络发送到远程系统,而不必关心远程系统运行于何种平台或者使用何种语言编写。SOAP以XML格式提供了一个简单、轻量的用于在分散或分布环境中交换结构化和类型信息的机制。SOAP本身并没有定义任何应用程序语义,如编程模型或特定语义的实现;实际上它通过提供一个有标准组件的包模型和在模块中编码数据的机制,定义了一个简单的表示应用程序语义的机制。这使SOAP可用于联合各种现有的网络协议和格式,包括HTTP、SMTP和MIME,并可被用于消息传递到RPC的各种系统。
SOAP解决了通过防火墙传送往返于远程应用程序的消息的问题。除了通过某些预先设定的作为特定用途的端口,防火墙通常禁止通过其它端口进行远程通讯。这就出现了一个问题,大部分分布式协议不使用分配的端口,而是动态地选择端口。微软SOAP技术实现的解决方案是通过HTTP的80端口传送对远程进程的调用。这个远程调用使用XML定义消息请求或响应的格式,把调用附加到HTTP协议的顶部。这个技术的优点之一就是降低通过防火墙传送消息的复杂性。但是80端口通常还用来作为Web通信之用,所以可能会降低其效率。
SOAP可以用来解决因特网应用程序的交互性问题。你可以使用一种平台无关性方式在远程(或本地)服务器上访问对象和服务。现在的互联网世界由不同的操作系统、不同的防火墙、不同的产生远程过程调用的方法和平台组成。为了跨因特网交互,客户机和服务器都需要了解彼此的安全类型和信任、服务部署模式和实现细节以及平台语言。使用SOAP,这种平台特定性的混乱局面就会结束。基于已被业界广泛接受的HTTP标准和XML标准,SOAP也可与其竞争对象RPC技术连通,并提供用于任何操作系统、程序语言和平台的轻量级消息格式。
在SOAP体系结构有四个主要的部分:
SOAP信封(envelope),用于描述消息内容和处理方法。
SOAP编码规则:定义了一个编码机制用于交换应用程序定义的数据类型的实例。
SOAP RPC表示,定义了一个用于表示远程过程调用和响应的约定。
SOAP绑定,定义了一个使用底层传输协议来完成在结点间交换SOAP信封的约定。
简单的说,SOAP提供了使用完全独立于平台的访问服务、对象和服务器的技术。通过SOAP,你将能够查询服务、调用服务、与服务通讯并处理服务,而不用去关心远程系统的位置、所在的操作系统或平台到底是什么样的。
SOAP本身提供了与Web服务交换信息的方法,但是它没有提供查找Web服务消息的方法。而且它还不提供查找Web服务或与之交涉的方法。
WSDL
Web服务描述语言(WSDL)和SOAP一起构成了Web服务的核心结构单元。WSDL基于XML格式,用来描述Web服务。它描述了Web服务可以执行的操作以及Web服务可以发送或接收的消息格式。WSDL文档可以看成是客户端和服务器之间的一个协约。使用WSDL工具,你可以自动处理这个过程,几乎不用手工编写代码就能够让应用程序整合新的服务。因此WSDL是Web服务体系结构的基础,因为它提供了一个通用语言,用来描述服务和整合这些服务的平台。
虽然大部分WSDL文档使用RPC风格的要求/应答语句对,但是WSDL也支持单向的消息。WSDL支持四种SOAP消息操作:
单向 (One-way):端点接收消息。
请求响应 (Request-response):端点接收消息,然后发送相关消息。
要求响应 (Solicit-response):端点发送消息,然后接收相关消息。
通知 (Notification):端点发送消息。
UDDI
UDDI(统一描述、发现和整合)建了一个平台独立、开放的框架,通过因特网来描述服务,发现业务,并且整合业务服务。它是一套基于Web的、分布式的、为Web服务提供的信息注册中心的实现标准规范,同时也包含一组使企业能将自身提供的Web服务注册以使得别的企业能够发现的访问协议的实现标准。
通过使用UDDI的发现服务,企业可以单独注册那些希望被别的企业发现的自身提供的Web服务。企业可以通过UDDI商业注册中心的Web界面,或是使用实现了"UDDI Programmer's API标准"所描述的编程接口的工具,来将信息加入到UDDI的商业注册中心。UDDI商业注册中心在逻辑上是集中的,在物理上是分布式的,由多个根节点组成,相互之间按一定规则进行数据同步。当一个企业在UDDI商业注册中心的一个实例中实施注册后,其注册信息会被自动复制到其它UDDI根节点,于是就能被任何希望发现这些Web服务的人所发现。