开源项目

知识点

相关文章

更多

最近更新

更多

WSDL 文档结构详解

2019-04-26 16:14|来源: 网路

WSDL 文档


WSDL 文档仅仅是一个简单的 XML 文档。

它包含一系列描述某个 web service 的定义。


WSDL 文档结构

WSDL 文档是利用这些主要的元素来描述某个 web service 的:

元素 定义
<portType> web service 执行的操作
<message> web service 使用的消息
<types> web service 使用的数据类型
<binding> web service 使用的通信协议

一个 WSDL 文档的主要结构是类似这样的:

<definitions>

<types>
  data type definitions........
</types>

<message>
  definition of the data being communicated....
</message>

<portType>
  set of operations......
</portType>

<binding>
  protocol and data format specification....
</binding>

</definitions>

WSDL 文档可包含其它的元素,比如 extension 元素,以及一个 service 元素,此元素可把若干个 web services 的定义组合在一个单一的 WSDL 文档中。


WSDL 端口

<portType> 元素是最重要的 WSDL 元素。


它可描述一个 web service、可被执行的操作,以及相关的消息。


可以把 <portType> 元素比作传统编程语言中的一个函数库(或一个模块、或一个类)。



WSDL 消息

<message> 元素定义一个操作的数据元素。


每个消息均由一个或多个部件组成。可以把这些部件比作传统编程语言中一个函数调用的参数。



WSDL types

<types> 元素定义 web service 使用的数据类型。


为了最大程度的平台中立性,WSDL 使用 XML Schema 语法来定义数据类型。



WSDL Bindings

<binding> 元素为每个端口定义消息格式和协议细节。



WSDL 实例

这是某个 WSDL 文档的简化的片段:

<message name="getTermRequest">
  <part name="term" type="xs:string"/>
</message>

<message name="getTermResponse">
  <part name="value" type="xs:string"/>
</message>

<portType name="glossaryTerms">
  <operation name="getTerm">
    <input message="getTermRequest"/>
    <output message="getTermResponse"/>
  </operation>
</portType>

在这个例子中,<portType> 元素把 "glossaryTerms" 定义为某个端口的名称,把 "getTerm" 定义为某个操作的名称。

操作 "getTerm" 拥有一个名为 "getTermRequest" 的输入消息,以及一个名为 "getTermResponse" 的输出消息

<message> 元素可定义每个消息的部件,以及相关联的数据类型。

对比传统的编程,glossaryTerms 是一个函数库,而 "getTerm" 是带有输入参数 "getTermRequest" 和返回参数 getTermResponse 的一个函数。


相关问答

更多
  • 调用服务与公开元数据完全不同。 基本上,服务不必公开客户端调用的元数据(mex或wsdl)。 元数据只是暴露出来,以便更容易生成代理类。 这允许开发人员在VS中添加“添加服务引用”。 WCF提供了另一种生成代理类的方法:将wsdl.exe与物理wsdl文件一起使用。 您还可以通过程序集重新分发服务合同并使用ChannelFactory。 公开元数据在dev上很有用,因为它允许开发人员在合同上的每次修改后轻松地重新生成代理类( 更新服务参考 )。 在Stage / Prod上,它取决于您的上下文:通常禁用“隐 ...
  • 我假设你正在使用ac#客户端来使用WCF服务。 您需要将服务引用添加到您的客户端项目。 这将从WSDL创建必要的类,并帮助您创建调用Web服务和获取响应的请求。 看看这个http://www.c-sharpcorner.com/UploadFile/0c1bb2/consuming-wcf-service-in-console-application/ I am assuming you are using a c# client to consume a WCF service. You need to ...
  • 我尝试了几种方法 Web服务的TechWriter :真的很强大,但HTML输出(见评论)多文件。 另外,评论表明它已经退休了,但事实并非如此。 XML编辑器 :它不处理嵌入式模式。 Altova XML Spy :它不处理匿名类型。 并结束了对我的需求调整WSDL查看器。 I tried several alternatives TechWriter for Web Services: Really powerful, but HTML output was (see comment ...
  • 以下是我如何修复它: 在你的IIS绑定中,一定要包含一个主机名。 安装此修补程序: http : //support.microsoft.com/kb/971842 。 KB页面上有链接以下载此修补程序。 该修补程序需要我重新启动。 要“激活”修补程序,请将以下内容添加到web.config中的behavior元素中:
  • WCF服务客户端应该通过软件接口进行封装和公开。 这样,您可以模拟界面并测试软件如何响应来自模拟服务客户端的各种输入/输出。 您可以控制返回内容的所有方面,包括可能会像真正的WCF服务客户端那样抛出异常。 这基本上是SOLID中存在“I”的原因 - 因为基于接口的实现替换很简单。 The WCF service client should be wrapped and exposed via an interface to your software. That way, you can mock the ...
  • 在ejb module-META-INF中添加jboss-webservices.xml文件,并在xml中配置所需的路径。 在上面的例子中,xml看起来像
    尝试: response = c.remoteAdministrationCall( loginId='admin@yellowfin.com.au', password='test', function='LOGINUSER', orgId=1, person={'userId': 'myuser@user.com', 'password': 'reset123'} ) 我不完全确定那个人的一部分。 您可以调用c.help('remoteAdministratio ...
  • $ WSDL ='/ path / to / wsdl / file'; $ nusoap_server = new soap_server($ WSDL); 唯一的问题是nusoap可能无法正确创建响应,但它将托管wsdl文件。 我不得不自定义我的xml响应。 您可以告诉nusoap,但您需要修改库。 fuze_debug(array('test',$this->f ...
  • WSDL的XML Schema指示无限数量的元素(只要它们属于WSDL之外的命名空间)可以在定义为可扩展的元素之一中使用: Thi ...
  • 正如WS-I基本概要文件2.0所述, WSDL 1.1规范与WSDL 1.1模式之间存在一些不一致。 根据模式,允许元素作为以下元素的第一个子元素: /definitions /definitions/binding /definitions/binding/operation /definitions/binding/operation/fault /definitions/binding/operation/input /definitions/binding/o ...