WebService描述语言WSDL详解
为什么使用WSDL? WSDL 文档结构 WSDL 文件示例 Namespaces SOAP 消息 XML schema运用于WSDL 的类型和消息中 XML schema运用之complex 类型 XML schema运用之数组 <portType >和<operation >元素 <binding>和<operation >元素 文档风格绑定 <service > 和<port >元素 ### WebService描述语言WSDL详解 #### 为什么使用WSDL? WSDL,即WebService描述语言,是一种基于XML的标准,用于描述Web服务的功能性接口。它的重要性在于提供了机器可读的描述,使得服务提供者和消费者之间能够进行有效的交互。通过使用WSDL,开发人员能够自动地生成客户端代码来调用远程服务,极大地简化了跨平台和跨语言的服务集成。 - **标准化沟通**: WSDL作为一种标准化的描述方式,使得服务的发现、调用以及交互变得规范化和一致化。 - **自动化处理**: WSDL文件的存在使得客户端和服务端之间的交互可以自动化处理,无需人工介入,降低了错误率和成本。 - **跨平台和跨语言**: 不同平台和编程语言之间的服务交互成为可能,提高了系统的互操作性。 #### WSDL文档结构 WSDL文档结构可以被分为两大部分:抽象定义和具体描述。 - **抽象定义**: - **Types**: 定义了独立于特定平台和语言的数据类型,这些类型可以是简单的数据类型,也可以是复杂的结构体类型。 - **Messages**: 描述了服务交互过程中传递的信息内容,通常包含函数的参数(输入和输出分开)。 - **PortTypes**: 定义了操作集,即服务可以执行的具体动作,这些动作通常引用了消息定义。 - **具体描述**: - **Bindings**: 将抽象的操作绑定到具体的传输协议和消息格式上,比如SOAP over HTTP。 - **Services**: 定义了实际的服务端点,即服务的实际位置和访问方式。 #### WSDL文件示例 为了更好地理解WSDL的各个组成部分,我们可以通过一个简化的WSDL文件示例来说明: ```xml <definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" targetNamespace="http://example.com/myservice"> <types> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:element name="GreetingRequest" type="xsd:string"/> <xsd:element name="GreetingResponse" type="xsd:string"/> </xsd:schema> </types> <message name="GreetingRequestMessage"> <part name="greeting" element="ns1:GreetingRequest"/> </message> <message name="GreetingResponseMessage"> <part name="greeting" element="ns1:GreetingResponse"/> </message> <portType name="GreetingPortType"> <operation name="SayHello"> <input message="ns1:GreetingRequestMessage"/> <output message="ns1:GreetingResponseMessage"/> </operation> </portType> <binding name="GreetingBinding" type="ns1:GreetingPortType"> <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="SayHello"> <soap:operation soapAction="http://example.com/myservice/SayHello"/> <input> <soap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://example.com/myservice"/> </input> <output> <soap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://example.com/myservice"/> </output> </operation> </binding> <service name="GreetingService"> <port name="GreetingPort" binding="ns1:GreetingBinding"> <soap:address location="http://example.com/myservice/greeting"/> </port> </service> </definitions> ``` 在这个示例中,我们可以看到WSDL如何组织不同类型和消息,并且如何定义服务端点。 #### Namespaces 命名空间在WSDL中用于避免名称冲突。每个定义的元素(如类型、消息、端口类型等)都应明确指定其所属的命名空间,确保在整个文档中的唯一性。 #### SOAP消息 SOAP消息是通过WSDL定义的通信协议之一,用于表示和交换结构化的信息。WSDL文档定义了如何构造SOAP请求和响应消息。 #### XML schema运用于WSDL的类型和消息中 XML Schema是WSDL中定义数据类型的一种方式,它用于描述消息中涉及的数据结构。通过XML Schema,可以详细定义复杂类型,包括简单类型、复杂类型以及数组。 - **XML Schema复杂类型**:复杂类型可以组合简单类型和其他复杂类型,形成更复杂的数据结构。 - **XML Schema数组**:通过`arrayType`属性来定义数组类型,可以创建固定长度或不定长度的数组。 #### `<portType>`和`<operation>`元素 `<portType>`元素定义了服务可以执行的一系列操作,而`<operation>`元素则描述了每个具体的操作,包括输入和输出消息的定义。 #### `<binding>`和`<operation>`元素 `<binding>`元素将`<portType>`中的抽象操作绑定到具体的传输协议和消息格式上。每个`<operation>`元素定义了一个具体的操作行为,包括其对应的SOAP Action等细节。 #### 文档风格绑定 WSDL支持两种主要的绑定风格:RPC风格和文档风格。文档风格绑定更注重消息内容本身,而不是特定的过程调用,这使得消息的格式更加灵活。 #### `<service>`和`<port>`元素 `<service>`元素定义了一个服务实例,而`<port>`元素则指定了该服务的具体端点。这些端点包含了访问服务所需的URL和绑定信息。 #### 总结 WSDL作为一种强大的描述语言,不仅提供了描述Web服务的能力,还支持自动化生成客户端代码,从而大大简化了跨系统和跨平台的服务交互过程。通过对WSDL文档结构的理解,开发人员可以更有效地设计、实现和维护基于Web的服务。
剩余22页未读,继续阅读
- z5945559102012-09-28VM和instance
- 某OT2012-09-05Carlos C. Tapang的这篇文章挺有名气的,一说入门WSDL,都推荐看这篇,对于WSDL文档的讲解很细致,而且都附有说明示例,很适合新人学习
- jijie0072012-10-24适合扫盲 概念性比较多
- 粉丝: 2
- 资源: 5
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助