使用WSDL发布WebService(第二部分)简单对象访问协议 - 学习SOAP语法和使用SOAP发布WSDL

2026/1/27 12:35:47

使用WSDL发布WebService(第二部分)简单对象访问协议——学习SOAP语法和使用SOAP发布WSDL

简 单对象访问协议(SOAP)提供了访问远程对象的方法。这样的对象有JavaBean,EJB组件,COM和COM+对象等等。这些对象使用不同的公司, 可能在互联网上随处可见。因此SOAP是一种在互联网上交换企业信息的机制。在本文中,笔者将讨论SOAP通信的细节,对象如何使用SOAP显示其功能, 如何调用SOAP对象以及如何在SOAP感知软件中交换信息。他将演示如何将第一部分中的WSDL程序发布为SOAP服务,及其远程调用。

一.SOAP 和 WSDL

我 在这个系列的第一部分介绍了WSDL。WSDL描述Web Service的接口。Web Service的拥有者将使用SOAP实现这些的接口。因此WSDL服务就以SOAP服务的形式存在。一旦Web Service的用户拥有了WSDL文件,他就知道了接口的详细资料,就可以使用SOAP同Web Service通信。 可以将你通过WSDL接口发布的Web Service看作对象,它可以通过SOAP从互联网上远程访问。既然服务都是对象,必然就会有一些属性跟每个服务及其行为相关。SOAP消息是可能工作在HTTP上的XML文件。 二.使用SOAP的原因

B2B(business- to-business)和A2A(application-to-application)需要通信的企业双方的指示以交换其信息。工作流的概念用于 B2B,并贯穿于企业集成。例如,某个企业调用供应商的服务以满足客户的需求,这就形成了一条垂直的供应链。有的供应商也会拓展供应联调用其他企业的服 务。

显然这类应用软件的交互性极其重要。任一企业都只是实现SOAP通信的一端,而另一端由互联网上的其他人实现。 在未来的几年里,企业集成和交互能力将成为软件工程师和企业极具挑战性的任务。平台依赖性也将是集成和交互能力达成的一大难题。SOAP是至今为止最简单的实现企业集成和交互能力的机制。 三.SOAP架构

在初步了解了SOAP及其作用后,下面我将讨论它的架构以了解其内部的情况。在图Figure 1中,你可以看见下面的组件运用于典型的SOAP通信机制中:

1. SOAP Client 2. SOAP Service 3. Actual Service

Figure 1. Components of a typical SOAP communication architecture 下面讨论上面提及的各个实体在架构中的角色。 SOAP Client

SOAP Client是一个SOAP感知机器,它可以产生SOAP请求并通过HTTP将SOAP请求发送给SOAP Server。SOAP Client是一种SOAP消息。一般来说有两种SOAP消息:SOAP Client发送给SOAP Service的SOAP请求消息和SOAP Service

发送给SOAP Client的SOAP响应消息。Listing 1是一个典型SOAP请求消息,而Listing 2则是一个典型SOAP响应消息。

SOAP Server

SOAP Server也是一个SOAP感知机器,它可以接受SOAP Client发来的请求并创建合适的响应。加密的响应会发给发出请求的SOAP Client。在SOAP Server内部有三个实体:

1. Service manager

2. Deployed service list 3. XML translator

Service manager管理响应请求的服务。在Listing 1中的SOAP请求中,节点包含了服务的名称。Service manager会读出Service Client向要调用的服务的名称并向包含SOAP Service中所有服务列表的Deployed service list查询是否有该项服务。如果有Service manager就将SOAP请求发给XML translator。XML translator将SOAP请求的XML结构转换成程序员用来实现Actual Service的程序语言。XML translator还将Actual Service返回的响应转回XML结构的SOAP响应。Listing 2就是一个SOAP响应的例子。

M1 M2 M3

Actual Service

在Figure 1中标为Actual Service的方框显示了Actual Srrvice的位置。服务的实现可能是一个COM组件或是一个JavaBean组件。XML translator会把XML结构转换成合适的方法调用。当XML translator调用Actual Srrvice的方法时,这些方法会执行其功能并返回结果给XML translator。

Figure 1中连接XML translator和Actual Service的箭头的两端都在一个企业里,这意味着同一个组织控制着通信两端的接口。与此相反的是SOAP Client和SOAP Service穿越了企业的边界。这就是SOAP的用途。

SOAP请求响应机制

SOAP Client传输SOAP消息给SOAP Service时使用HTTP协议传输。

这称为SOAP绑定HTTP.当SOAP Service收到消息时,他将消息传给Service Maneger. SOAP Service检查Deployed service list中是否有SOAP消息请求的服务。如果没有该项服务,他将请求失败的响应发回给SOAP Client。但如果有该项服务,就由XML translator进行适合的语言转换,访问actual service的实现。服务的实现会处理请求并返回结果给XML translator. XML translator再将结果转换为SOAP Client理解的SOAP响应。同样,HTTP绑定也用在SOAP响应的传输上。

SOAP绑定HTTP

当 你将HTTP同SOAP帮定绑定或是在HTTP上操作SOAP时,你实际上在SOAP请求和响应上添加了HTTP头。Listing 1是典型的SOAP请求,而Listing 3,4,5,6演示了在Listing 1上添加了HTTP头的SOAP请求。与此类似的是Listing 7演示了在Listing 2上添加了HTTP头的SOAP响应。

当你在HTTP上使用SOAP时,Content-Type字段必须为text/html.在

Listing 7中可以看到Listing 3的细节。

一个使用HTTP的SOAP请求

你可以将SOAP联合在HTTP的请求方法POST上。要发送一个SOAP HTTP请求,你必须在HTTP头上提供一个SOAPAction字段。

SOAPAction定义了SOAP请求的目的。服务器(例如过滤HTTP上SOAP请求消息的防火墙)可以使用SOAPAction的值做决定。

HTTP客户端在发出SOAP请求时必须使用HTTP头的这个字段。SOAPAction可以取的值如下所示:

SOAPAction:”URI-Reference” SOAPAction:”filename” SOAPAction:”” SOAPAction

POST /Vendors HTTP/1.1

Host: www.mobilephoneservice.com Content-Type:\ Content-Length: nnnn

SOAPACtion:\

图Listing 3在SOAPAction中包含了下面的URI引用

www.mobilephoneservice.com/Vendors/MobilePhoneservice#getListOfModels

这个SOAPAction说明了两件事:一是SOAP发布的详细地址

www.mobilephoneservice.com/Vendors/MobilePhoneservice,二是我们感兴趣的方法的名称(#getListOfModels).

POST /Vendors HTTP/1.1

Host: www.mobilephoneservice.com Content-Type:\ Content-Length: nnnn

SOAPAction:\

图Listing 4在SOAPAction中包含了一个文件名

(MobilePhoneservice#getListOfModels)。MobilePhoneservice文件必须放在主机URI下(www. Mobilephoneservice.com/Vendors)。主机URI是由HTTP头的host字段加文件夹名(/Vendors)组成的。

POST /Vendors HTTP/1.1

Host: www.mobilephoneservice.com Content-Type:\ Content-Length: nnnn SOAPAction:\


使用WSDL发布WebService(第二部分)简单对象访问协议 - 学习SOAP语.doc 将本文的Word文档下载到电脑
搜索更多关于: 使用WSDL发布WebService(第二部分)简单对象访问 的文档
相关推荐
相关阅读
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 10

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219