Die Rolle von SOAP in Reporting Services

Der Berichtsserver-Webdienst verwendet SOAP-Messaging (Simple Object Access Protocol), um textbasierte Befehle über ein Netzwerk zu senden. Bei diesen Befehlen handelt es sich um XML-Text, der mit HTTP über das World Wide Web gesendet wird. Wenn SOAP als Kommunikationsprotokoll verwendet wird, erlaubt der Report Server-Webdienst Anwendungen und Komponenten den Datenaustausch mit dem Berichtsserver über eine offene und weit verbreitete Infrastruktur. Der SOAP-Standard wird unter www.w3.org/TR/SOAP definiert.

Jede Clientanwendung kann als SOAP-Client dienen, wenn sie SOAP erkennt und SOAP-Anforderungen senden kann. Der Berichts-Manager ist ein solcher SOAP-Client. Er bietet eine Schnittstelle zur Berichtsserver-Datenbank, in der alle Berichte und alle mit dem Bericht verbundenen Inhalte gespeichert werden. Endbenutzer können mit der Anwendung Berichte und Ordner im Berichtsserver-Namespace durchsuchen und verwalten. Der Berichts-Manager basiert auf der Infrastruktur des Report Server-Webdiensts.

Ein Berichtsserver fungiert als ein SOAP-Server, ein Dienst, der SOAP erkennt und Anforderungen von SOAP-Clients akzeptieren sowie entsprechende Antworten zurückgeben kann. Der Server behandelt die Anforderungen und sendet codierte Antworten an den Client zurück.

SOAP-Nachrichten in Reporting Services können verschiedene Formate haben. Dies hängt von der Art der Anforderung ab, die vom Client gesendet wird. Das folgende Beispiel zeigt eine einfache Anforderung vom SOAP-Client, ein Element aus der Berichtsserver-Datenbank zu entfernen.

<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 selbst erfordert, dass Nachrichten in ein Envelope-Element gestellt werden, wobei sich der Großteil der Nachricht in einem Body-Element befindet. In diesem Beispiel enthält der Nachrichtentext einen Aufruf an die DeleteItem-Methode, die einen Zeichenfolgenparameter akzeptiert, welcher den Pfad des zu löschenden Elements darstellt. Sie können eine Microsoft .NET Framework-Clientproxyklasse erstellen, die alle SOAP-Vorgänge in Methoden kapselt. Die folgende Microsoft Visual C#-Methode stellt das oben gezeigte SOAP-Beispiel dar.

public void DeleteItem(string item);

Die Antwort vom Server könnte folgendermaßen aussehen:

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

Da die DeleteItem-Methode über keinen Rückgabewert verfügt, wird eine leere Antwort zurückgegeben.

Siehe auch

Konzepte

Zugriff auf die SOAP-API

Berichts-Manager (SSRS)

Reporting Services-Berichtsserver (SSRS)

Report Server-Webdienst