Rôle de SOAP dans Reporting Services

Le service Web Report Server utilise la messagerie SOAP (Simple Object Access Protocol) pour envoyer des commandes textuelles sur un réseau. Ces commandes prennent la forme de texte XML envoyé sur le Web à l'aide du protocole HTTP. En utilisant SOAP en tant que protocole de communication, le service Web Report Server permet aux applications et aux composants d'échanger des données avec le serveur de rapports à l'aide d'une infrastructure ouverte et largement reconnue. La norme SOAP est définie sur le site www.w3.org/TR/SOAP.

Toute application cliente peut agir en tant que client SOAP tant qu’elle est prenant en charge SOAP et peut envoyer des requêtes SOAP. Le Gestionnaire de rapports est l'un de ces clients SOAP. Il fournit une interface à la base de données du serveur de rapports dans laquelle tous les rapports et leur contenu associé sont stockés. Les utilisateurs finals peuvent utiliser l'application pour parcourir et gérer des rapports et des dossiers dans l'espace de noms du serveur de rapports. Le Gestionnaire de rapports repose sur l'infrastructure du service Web Report Server.

Un serveur de rapports joue le rôle de serveur SOAP, un service prenant en charge le protocole SOAP qui peut accepter des demandes en provenance de clients SOAP et créer des réponses appropriées. Le serveur gère les demandes et renvoie des réponses encodées au client.

Les messages SOAP dans Reporting Services prennent de nombreuses formes différentes, selon le type de demande faite par le client. L'exemple suivant représente une requête simple d'un client SOAP consistant à supprimer un élément de la base de données du serveur de rapports.

<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>  

Le protocole SOAP exige que les messages soient placés dans un élément Envelope, avec l’essentiel du message à l’intérieur d’un élément Body. Dans cet exemple, le corps contient un appel de la méthode DeleteItem, qui prend un paramètre de chaîne représentant le chemin d'accès de l'élément à supprimer. Vous pouvez créer une classe proxy de client Microsoft .NET Framework qui encapsule toutes les opérations SOAP dans des méthodes. La méthode Microsoft C# suivante représente l’exemple SOAP donné précédemment.

public void DeleteItem(string item);  

La réponse du serveur peut ressembler à l’exemple suivant :

<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>  

La méthode DeleteItem n'a aucune valeur de retour, donc une réponse vide est retournée.

Accès à l'API SOAP
Gestionnaire de rapports (mode natif SSRS)
Serveur de rapports Reporting Services
Service Web des serveurs de rapports