Роль протокола SOAP в службах Reporting Services
Веб-служба сервера отчетов использует обмен сообщениями по протоколу SOAP для передачи текстовых команд по сети. Эти команды принимают вид XML-текста, передаваемого через Интернет по протоколу HTTP. Использование протокола связи SOAP в веб-службе сервера отчетов позволяет приложениям и компонентам обмениваться данными с сервером отчетов, используя широко признанную открытую инфраструктуру. Стандарт SOAP определен на веб-узле www.w3.org/TR/SOAP.
В качестве клиента SOAP может выступать любое приложение, которое поддерживает протокол SOAP и может отправлять SOAP-запросы. Примером такого клиента SOAP служит диспетчер отчетов. Он предоставляет интерфейс к базе данных сервера отчетов, в которой хранятся все отчеты и относящееся к ним содержимое. Пользователи этого приложения могут перемещаться по папкам и отчетам в пространстве имен сервера отчетов и работать с отчетами. Диспетчер отчетов построен на инфраструктуре веб-службы сервера отчетов.
Сервер отчетов выступает в роли сервера SOAP — службы, которая поддерживает протокол SOAP, может принимать запросы от клиентов SOAP и формировать необходимые ответные сообщения. Сервер обрабатывает запросы и возвращает клиенту закодированные ответные сообщения.
Сообщения SOAP в службах Reporting Services могут принимать множество различных форм в зависимости от типа запроса, выполненного клиентом. В следующем примере показан простой запрос клиента 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. В этом примере элемент body содержит вызов метода DeleteItem, который принимает строковый параметр, представляющий путь к удаляемому элементу. Можно создать класс-посредник клиента Microsoft.NET Framework, в котором все операции SOAP инкапсулируются в методы. Следующий метод MicrosoftVisual 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 не имеет возвращаемого значения, поэтому возвращается пустой ответ.
См. также