O papel do SOAP nos serviços de relatório

O serviço Web do servidor de relatório usa o sistema de mensagens SOAP (Simple Object Access Protocol) para enviar comandos baseados em texto por meio de uma rede. Esses comandos assumem a forma de texto XML que é enviado por meio da Web usando HTTP. Usando o SOAP como seu protocolo de comunicação, o serviço Web do servidor de relatório permite aplicativos e componentes para trocar dados com o servidor de relatório usando uma infraestrutura largamente aceita e aberta. O padrão de SOAP é definido em www.w3.org/TR/SOAP.

Qualquer aplicativo cliente pode atuar como um cliente SOAP, desde que tenha reconhecimento de SOAP e possa enviar solicitações SOAP. O Gerenciador de Relatórios é um cliente de SOAP. Ele fornece uma interface para o banco de dados do servidor de relatório em que todos os relatórios e conteúdo relacionado a relatório são armazenados. Os usuários finais podem usar o aplicativo para navegar bem como gerenciar relatórios e pastas no namespace de servidor de relatório. O Gerenciador de Relatórios é criado na infraestrutura de serviço Web do servidor de relatório.

Um servidor de relatório age como um servidor de SOAP, um serviço do SOAP-atento que pode aceitar solicitações de clientes de SOAP e criar respostas apropriadas. O servidor trata as solicitações e envia respostas codificadas novamente para o cliente.

As mensagens de SOAP no Reporting Services assumem muitas formas diferentes, dependendo do tipo de solicitação feita pelo cliente. O exemplo a seguir representa uma solicitação de cliente de SOAP simples para remover um item do banco de dados do servidor de relatório.

<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="http://www.microsoft.com/sql/ReportingServer">  
            <item>/Samples/Report1</item>  
        </DeleteItem>  
    </soap:Body>  
</soap:Envelope>  

O SOAP em si exige que as mensagens sejam colocadas em um elemento Envelope, com a maior parte da mensagem em um elemento Body. Nesse exemplo, o corpo contém uma chamada para o método DeleteItem, que assume um parâmetro de cadeia de caracteres representando o caminho do item a ser excluído. Você pode criar uma classe proxy cliente do Microsoft .NET Framework que encapsula todas as operações SOAP em métodos. O seguinte método Microsoft C# representa o exemplo SOAP fornecido anteriormente.

public void DeleteItem(string item);  

A resposta do servidor pode ser semelhante ao exemplo a seguir:

<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="http://www.microsoft.com/sql/ReportingServer" />  
    </soap:Body>  
</soap:Envelope>  

O método DeleteItem não tem nenhum valor de retorno, portanto, uma resposta vazia é retornada.

Acessando a API SOAP
Gerenciador de Relatórios (Modo Nativo do SSRS)
Servidor de Relatório do Reporting Services
Serviço Web do Servidor de Relatório