Протокол SOAP
Связь между web-службами и их клиентами осуществляется посредством сообщений в формате XML. SOAP (Simple Object Access Protocol - простой протокол доступа к объектам) представляет собой протокол сообщений для выбора web-служб. Использование слова Object в названии данного протокола является не совсем корректным, поскольку сообщения SOAP не направляются объектам. Основная идея стандарта SOAP заключается в том, что сообщения должны быть закодированы в стандартизированном XML-формате. Можно сказать, что формат SOAP идеально подходит для технологии RPC (Remote Procedure Call - вызов удаленной процедуры), так как SOAP-сообщение содержит направляемые клиентом параметры или отсылаемую службой возвращаемую величину. Нет ничего удивительного в том, что другие программные продукты (скажем, сервер BizTalk компании Microsoft) применяют протокол SOAP для передачи иных типов информации. Аналогично, SOAP-сообщения могут использоваться не только при передаче по протоколу HTTP, но также при пересылке через сокеты, именованные каналы и даже по протоколу SMTP электронной почты.
Кроме сообщений SOAP, для обмена данными с web-службами .NET можно использовать методы GET и POST протокола HTTP. Теоретически при передаче информации методом POST вы можете по-прежнему применять формат SOAP, но в этом случае данные проще передавать в виде набора имя-значение без указания их типа.
Давайте рассмотрим преимущества применения формата SOAP.
- Более гибкие типы данных
Кодировать в XML структуры данных и наборы DataSet с использованием SOAP так же легко, как и данные простых типов (скажем, целого или строкового).
- Поддержка заголовков и расширений
При использовании SOAP-сообщений предоставляются дополнительные инструменты, позволяющие легко добавлять, например, функции обеспечения безопасности или трассировки.
Истинная межплатформенность
Протокол SOAP лучше всего подходит для получения .NET-услуги на обычном клиенте. Имеются наборы инструментов SOAP для различных языков программирования (и даже для предыдущих версий Microsoft C++ и Visual Basic). Чтобы обеспечить связь с web-службой посредством методов GET и POST протокола HTTP, придется, очевидно, вручную сконструировать строку запроса, а затем вручную провести синтаксический разбор ответа, что, согласитесь, является не самым элегантным решением.