热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

php学习之道:WSDL详解(二)

3.定义服务使用的逻辑消息当服务的操作被调用时,服务被定义为消息交换。在wsdl文档中,这些消息被定义message元素。这些消息由称之为part元素的部分组成。一个服务的操作,通过指定逻辑消息的方式来定义。当操作被调用时,逻辑消息被交换。(也就是说,逻

3.定义服务使用的逻辑消息 当服务的操作被调用时,服务被定义为消息交换。在wsdl文档中,这些消息被定义message元素。这些消息由称之为part元素的部分组成。 一个服务的操作,通过指定逻辑消息的方式来定义。当操作被调用时,逻辑消息被交换。(也就是说,逻

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

当服务的操作被调用时,服务被定义为消息交换。在wsdl文档中,这些消息被定义message元素。这些消息由称之为part元素的部分组成。

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

消息和参数列表:每一个被服务暴露的操作能且仅能有一个输入消息和一个输出消息。输入消息定义当操作被调用时,服务接受的所有消息。输出消息定义的是,当操作完成时服务返回的所有消息。fault消息定义的是服务返回错误时的数据。

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

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

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

你的输入消息为每个输入参数对应一个part,同样输出消息为每个输出参数对应一个part。另外增加个part来对应返回值。如果一个参数既是输入,又是输出,那么它即作为输入又作为输出消息列出来。

RPC风格的消息定义是当服务使能存量系统时有用。它使用类似于TIBCO或者CORBA的模式传输。这些系统围绕着过程和方法来设计。正是由于这样,他们是最容易使用消息来建模。RPC风格也是服务和应用程序之间的映射清晰化。

为SOAP服务设计消息:当RPC风格用于建模存量系统,但是服务协会强烈地喜欢包装文档风格。在包装文档风格中,每个消息有一个part。这个消息的part参考了一个包装元素,该元素定义在types元素中。包装元素有如下特性:

  • 他是一个包含一系列元素的复合类型
  • 如果是一个输入消息的包装器,则:它的每个元素对应一个输入参数;他的名字,他的名字与相关的操作名相同。
  • 如果是一个输出消息的包装器,则:它的每个元素对应输入参数,也对应输出参数。它的第一个元素代表了方法返回值。他的名字将通过增加Response到与之想关联的包装器的操作的名字上。

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

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

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

消息允许重用part名。对于一个实例来说,如果一个方法有一个参数:foo,他被应用或者通过in/out传递,他能够作为一个Part存在于请求或者应答消息中。如下例:






例子:假设你有一个服务器存储了个人信息并且提供一个方法,该方法换回雇员的数据,基于雇员ID.。该方法如下:

personalInfo lookup(long empId)

被映射到RPC风格的WSDL如下





映射到包装风格如下:



...





















推荐阅读
  • 本文探讨了Web开发与游戏开发之间的主要区别,旨在帮助开发者更好地理解两种开发领域的特性和需求。文章基于作者的实际经验和网络资料整理而成。 ... [详细]
  • 本文详细介绍如何利用已搭建的LAMP(Linux、Apache、MySQL、PHP)环境,快速创建一个基于WordPress的内容管理系统(CMS)。WordPress是一款流行的开源博客平台,适用于个人或小型团队使用。 ... [详细]
  • 在Linux系统上构建Web服务器的详细步骤
    本文详细介绍了如何在Linux系统上搭建Web服务器的过程,包括安装Apache、PHP和MySQL等关键组件,以及遇到的一些常见问题及其解决方案。 ... [详细]
  • 转自:http:www.yybug.comread-htm-tid-15324.html为什么使用Twisted? 如果你并不准备使用Twisted,你可能有很多异议。为什么使用T ... [详细]
  • 本文详细介绍了如何使用PHP检测AJAX请求,通过分析预定义服务器变量来判断请求是否来自XMLHttpRequest。此方法简单实用,适用于各种Web开发场景。 ... [详细]
  • 本文探讨了 RESTful API 和传统接口之间的关键差异,解释了为什么 RESTful API 在设计和实现上具有独特的优势。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 本文介绍了ArcXML配置文件的分类及其在不同服务中的应用,详细解释了地图配置文件的结构和功能,包括其在Image Service、Feature Service以及ArcMap Server中的使用方法。 ... [详细]
  • 本文探讨了Java编程的核心要素,特别是其面向对象的特性,并详细介绍了Java虚拟机、类装载器体系结构、Java类文件和Java API等关键技术。这些技术使得Java成为一种功能强大且易于使用的编程语言。 ... [详细]
  • 深入解析Spring Cloud微服务架构与分布式系统实战
    本文详细介绍了Spring Cloud在微服务架构和分布式系统中的应用,结合实际案例和最新技术,帮助读者全面掌握微服务的实现与优化。 ... [详细]
  • NFS(Network File System)即网络文件系统,是一种分布式文件系统协议,主要用于Unix和类Unix系统之间的文件共享。本文详细介绍NFS的配置文件/etc/exports和相关服务配置,帮助读者理解如何在Linux环境中配置NFS客户端。 ... [详细]
  • 多核处理器技术的显著进展可追溯至IBM于2001年推出的双核RISC处理器POWER4,标志着服务器处理器迈入多核时代。随后,HP和Sun等公司也纷纷加入这一行列,推动了多核处理器在不同领域的广泛应用。 ... [详细]
  • 深入探讨ASP.NET中的OAuth、JWT与OpenID Connect
    本文作为前文关于OAuth2.0和使用.NET实现OAuth身份验证的补充,详细阐述了OAuth与JWT及OpenID Connect之间的关系和差异,旨在提供更全面的理解。 ... [详细]
  • 本文在前文基础上,进一步探讨了如何利用Multi-Paxos算法解决一系列值的共识问题。文中不仅分析了Basic Paxos的局限性,还详细阐述了通过引入领导者节点优化Multi-Paxos算法的具体方法。 ... [详细]
  • 本文详细解释了i386和X86_64这两种处理器架构的意义及其区别,涵盖了从早期的8086处理器到现代多核技术的发展历程,探讨了这些架构如何影响操作系统的选择及软件的兼容性。 ... [详细]
author-avatar
杨琴琴qin
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有