Web 服务描述语言 (WSDL) 用于为所有在 HTTP 端点上公开的 RPC 函数定义 Web 接口定义,并且还说明了端点的 SQL 批处理功能。客户端可以请求来自 SQL Server 的 WSDL 响应,并使用它生成对服务器的 RPC 和 SQL 批处理请求,方法是通过使用已配置为支持 WSDL 类型的 HTTP 端点。WSDL 响应实际上是基于请求时与端点关联的 RPC 函数而动态生成的 XML 文档。
配置为支持提供 WSDL 的 HTTP 端点可以指定以下一种 WSDL 配置,用于响应提交 WSDL 请求的客户端。
- 默认的 WSDL
- 自定义的 WSDL
当将 SQL Server 2005 配置为默认的 WSDL 选项时,它将为两种类型的 WSDL 提供支持:默认或扩展的 WSDL 格式和简化的 WSDL 格式。
尽管其中任一 WSDL 文档都说明了端点上支持的方法,但是默认的 WSDL 使用 XML 架构 (XSD) 的附加功能对端点可用的或由其公开的方法、数据类型、参数和返回值提供了更丰富的说明。
简化的 WSDL 格式可能是向下兼容旧客户端时需要使用的,它使用仅需要基元数据类型的非常基本的 XSD 架构。如果默认或简化的 WSDL 都不提供适合于特定客户端的确切的 WSDL 内容,则您可以根据需要更新服务器以提供 WSDL 的自定义版本。
SQL Server 实例在通过提交 WSDL 请求的 Web 服务客户端第一次连接到 HTTP 端点时,将生成并返回 WSDL 响应。
![](http://i.msdn.microsoft.com/Platform/Controls/CollapsibleArea/resources/minus.gif)
当定义了端点后,将使用 CREATE ENDPOINT Transact-SQL 语句中的 WSDL 参数来为服务器指定是否为端点生成并返回 WSDL 响应以说明其 Web 可编程功能。如果使用 WSDL=NONE 值建立了端点,则服务器将不会返回 WSDL 响应。
如果指定生成默认的 WSDL(例如,创建端点时指定了 WSDL=DEFAULT),服务器返回的 WSDL 的格式将取决于客户端用来连接到 HTTP 端点的 URL 字符串。客户端可以使用以下一种 URL 格式请求 WSDL:
- 默认 WSDL 这是扩展的 WSDL 响应的完整版本,当使用 http://server/endpoint_path?wsdl URL 连接到端点时返回。此格式使用 XSD 派生类型为更复杂的 SQL 类型提供映射支持。有关详细信息,请参阅默认 WSDL。
- 简单 WSDL 这是默认的 WSDL 的简化版本,可以将所有 SQL Server 系统数据类型映射到本机 XSD 类型。当使用 http://server/endpoint_path?wsdlsimple 作为 URL 连接到端点时返回此格式。有关详细信息,请参阅简单 WSDL。
- 自定义的 WSDL 当客户端对 SQL Server 实例返回的默认的 WSDL 版本或简化的 WSDL 版本都无法接受时,您可以指定提供自定义的 WSDL。此选项要求设计并实现附加代码。以这种方式,存储过程可用来生成并返回作为客户端结果的自定义的 WSDL 内容,这些客户端在基于 HTTP 的查询中指定自定义的 WSDL 类型。有关详细信息,请参阅实现自定义 WSDL 支持。
![](http://i.msdn.microsoft.com/Platform/Controls/CollapsibleArea/resources/minus.gif)
Web 服务描述语言 (WSDL) 实例是一个含有根 <definitions> 元素的一个 XML 文档,该元素用于指定 WSDL 命名空间 (http://schemas.xmlsoap.org/wsdl) 和定义一组 Web 服务作为网络端点或端口的集合。一个典型 WSDL 文档将具有以下顶级结构:
<wsdl:definitions> <wsdl:types>...</wsdl:types> <wsdl:message>...<wsdl:message/> <wsdl:portType>...</wsdl:portType> <wsdl:binding>...</wsdl:binding> <wsdl:service>...<wsdl:service> <wsdl:definitions>
正如此 WSDL 格式的简化视图所示,使用了多个元素来指示 WSDL 文档中的主要部分。下表简要说明了其中每一元素的角色。
元素 | 说明 |
---|---|
wsdl:types | 使用 XML 架构 (XSD) 或其他相似的数据类型系统生成的数据类型定义的容器元素。 |
wsdl:message | 传送的消息数据的定义。此消息可以由多个部分组成并且每一部分可以是不同的类型。 |
wsdl:portType | 一个或多个端点支持的操作的抽象集。 |
wsdl:binding | 特定端口类型的具体协议和数据格式规范。 |
wsdl:service | 相关端点的集合。 |