SOAP 在 Reporting Services 中的作用

报表服务器 Web 服务使用简单对象访问协议 (SOAP) 消息传送通过网络发送基于文本的命令。 这些命令采用使用 HTTP 通过万维网发送的 XML 文本形式。 通过使用 SOAP 作为其通信协议,报表服务器 Web 服务允许应用程序和组件使用开放且广泛接受的基础结构与报表服务器交换数据。 SOAP 标准在 www.w3.org/TR/SOAP. 定义

只要客户端应用程序具有 SOAP 感知性,并且可以发送 SOAP 请求,任何客户端应用程序都可以充当 SOAP 客户端。 报表管理器是一个这样的 SOAP 客户端。 它提供报表服务器数据库的接口,其中存储了所有报表和与报表相关的内容。 最终用户可以使用应用程序浏览和管理报表服务器命名空间中的报表和文件夹。 报表管理器基于报表服务器 Web 服务基础结构构建。

报表服务器充当 SOAP 服务器,一种 SOAP 感知服务,可以接受来自 SOAP 客户端的请求并创建适当的响应。 服务器处理请求并将编码的响应发送回客户端。

Reporting Services 中的 SOAP 消息采用许多不同的形式,具体取决于客户端发出的请求类型。 以下示例表示一个简单的 SOAP 客户端请求,用于从报表服务器数据库中删除项。

<soap:Envelope xmlns:soap="https://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">  
    <soap:Body>  
        <DeleteItem xmlns="https://www.microsoft.com/sql/ReportingServer">  
            <item>/Samples/Report1</item>  
        </DeleteItem>  
    </soap:Body>  
</soap:Envelope>  

SOAP 本身要求将消息放入元素中,其中大部分消息位于 Envelope 元素中 Body 。 在此示例中,正文包含对 DeleteItem 方法的调用,该方法采用表示要删除的项路径的字符串参数。 可以创建Microsoft .NET Framework 客户端代理类,该类将所有 SOAP作封装到方法中。 以下Microsoft Visual C# 方法表示前面给出的 SOAP 示例。

public void DeleteItem(string item);  

来自服务器的响应可能如下所示:

<soap:Envelope xmlns:soap="https://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">  
    <soap:Body>  
        <DeleteItemResponse xmlns="https://www.microsoft.com/sql/ReportingServer" />  
    </soap:Body>  
</soap:Envelope>  

该方法 DeleteItem 没有返回值,因此返回空响应。

另请参阅

访问 SOAP API
报表管理器(SSRS 本机模式)
Reporting Services 报表服务器
报表服务器 Web 服务