php学习之路:WSDL详细解释(两)

简介:

3.定义服务使用的逻辑消息

当服务的操作被调用时。服务被定义为消息交换。在wsdl文档中,这些消息被定义message元素。

这些消息由称之为part元素的部分组成。

一个服务的操作,通过指定逻辑消息的方式来定义。当操作被调用时,逻辑消息被交换。(也就是说。逻辑消息代表了服务的操作)这些逻辑消息,将在网络上传输的数据定义为xml文档。他包括了全部的參数,这些參数是方法调用的一部分。

(也就是说。逻辑消息里的參数,是操作相应方法的參数集合)

消息和參数列表:每个被服务暴露的操作能且仅能有一个输入消息和一个输出消息。

输入消息定义当操作被调用时。服务接受的全部消息。输出消息定义的是。当操作完毕时服务返回的全部消息。fault消息定义的是服务返回错误时的数据。

另外,每一个操作能够有一定数量的fault消息。

这个fault消息定义了当服务错误发生时返回的数据。这些消息通常有一个部分。该部分提供足够的信息来让消费者知道错误是什么。

消息设计用于集成固有系统:假设你将已经存在的应用程序定义为一个服务。你必须确保方法(实现操作的方法)中使用到的每一个參数都可以在消息中找到相应。你必须确保返回值也在操作的输出消息中。

定义你的消息的一个方法是:RPC风格。当使用RPC风格时,你使用给每一个在參数列表中的參数定义一个part。每一个消息part是基于在types中顶一个的type。

你的输入消息为每一个输入參数相应一个part,相同输出消息为每一个输出參数相应一个part。

另外添加个part来相应返回值。假设一个參数既是输入,又是输出。那么它即作为输入又作为输出消息列出来。

RPC风格的消息定义是当服务使能存量系统时实用。

它使用类似于TIBCO或者CORBA的模式传输。

这些系统环绕着过程和方法来设计。正是因为这样,他们是最easy使用消息来建模。

RPC风格也是服务和应用程序之间的映射清晰化。

为SOAP服务设计消息:当RPC风格用于建模存量系统,可是服务协会强烈地喜欢包装文档风格。

在包装文档风格中,每一个消息有一个part。

这个消息的part參考了一个包装元素。该元素定义在types元素中。包装元素有例如以下特性:

  • 他是一个包括一系列元素的复合类型
  • 假设是一个输入消息的包装器,则:它的每一个元素相应一个输入參数;他的名字,他的名字与相关的操作名同样。
  • 假设是一个输出消息的包装器。则:它的每一个元素相应输入參数,也相应输出參数。它的第一个元素代表了方法返回值。

    他的名字将通过添加Response到与之想关联的包装器的操作的名字上。

消息命名:每一个消息都在其命名空间中有唯一名字,建议使用以下的命名规则:

  • 消息应该被单一操作使用
  • 输入消息名是在操作名后添加Request
  • 输出消息名是在操作名后添加Response
  • 错误消息名是在错误原因后加fault

消息部件:消息部件是逻辑消息最经常使用的单元。每一个part被定义,用part元素。而且通过name属性,用type属性或element属性来指定数据类型。

消息同意重用part名。对于一个实例来说,假设一个方法有一个參数:foo,他被应用或者通过in/out传递,他可以作为一个Part存在于请求或者应答消息中。例如以下例:

<message name="fooRequest">
  <part name="foo" type="xsd:int"/>
<message>
<message name="fooReply">
  <part name="foo" type="xsd:int"/>
<message>

样例:如果你有一个server存储了个人信息而且提供一个方法,该方法换回雇员的数据,基于雇员ID.。

该方法例如以下:

personalInfo lookup(long empId)

被映射到RPC风格的WSDL例如以下

<message name="personalLookupRequest">
  <part name="empId" type="xsd:int"/>
<message/>
<message name="personalLookupResponse>
  <part name="return" element="xsd1:personalInfo"/>
<message/>

映射到包装风格例如以下:

<types>
  <schema ...>
  ...
  <element name="personalLookup">
    <complexType>
      <sequence>
        <element name="empID" type="xsd:int" />
      </sequence>
    </complexType>
  </element>
  <element name="personalLookupResponse">
    <complexType>
      <sequence>
        <element name="return" type="personalInfo" />
      </sequence>
    </complexType>
  </element>
  </schema>
</types>
<message name="personalLookupRequest">
  <part name="empId" element="xsd1:personalLookup"/>
<message/>
<message name="personalLookupResponse>
  <part name="return" element="xsd1:personalLookupResponse"/>
<message/>

版权声明:本文博客原创文章。博客,未经同意,不得转载。







本文转自mfrbuaa博客园博客,原文链接:http://www.cnblogs.com/mfrbuaa/p/4709144.html,如需转载请自行联系原作者


相关文章
|
4月前
|
前端开发 PHP 数据安全/隐私保护
【PHP学习】—利用ajax原理实现密码修改功能(九)
【PHP学习】—利用ajax原理实现密码修改功能(九)
|
4月前
|
前端开发 JavaScript PHP
【PHP学习】—利用ajax原理实现登录功能(八)
【PHP学习】—利用ajax原理实现登录功能(八)
|
4月前
|
PHP 数据库
【PHP学习】—PHP连接数据库实现表单页面的验证功能(七)
【PHP学习】—PHP连接数据库实现表单页面的验证功能(七)
|
4月前
|
数据库连接 PHP 数据库
【PHP学习】—PHP连接数据库(六)
【PHP学习】—PHP连接数据库(六)
|
4月前
|
前端开发 PHP
【PHP学习】—get请求传递参数(五)
【PHP学习】—get请求传递参数(五)
|
4月前
|
PHP
【PHP学习】—PHP文件嵌套HTML(四)
【PHP学习】—PHP文件嵌套HTML(四)
|
4月前
|
JSON PHP 数据格式
【PHP学习】—数组的定义和遍历(三)
【PHP学习】—数组的定义和遍历(三)
|
4月前
|
JavaScript PHP
【PHP学习】—PHP的基本数据类型(二)
【PHP学习】—PHP的基本数据类型(二)
|
4月前
|
JavaScript Unix Shell
【PHP学习】—创建PHP文件(一)
【PHP学习】—创建PHP文件(一)
|
7月前
|
PHP
php基础学习中认为重点的知识
php基础学习中认为重点的知识
23 0