веб-сервис

Веб-службавеб-сервис (англ. web service) — идентифицируемая веб-адресом программная система со стандартизированными интерфейсами.
Веб-службы могут взаимодействовать друг с другом и со сторонними приложениями посредством сообщений, основанных на определённых протоколах(SOAPXML-RPCREST и т. д.). Веб-служба является единицей модульности при использовании сервис-ориентированной архитектуры приложения.
В обиходе веб-сервисами называют услуги, оказываемые в Интернете. В этом употреблении термин требует уточнения, идёт ли речь о поиске, веб-почте, хранении документов, файлов, закладок и т. п. Такими веб-сервисами можно пользоваться независимо от компьютера, браузера или места доступа в Интернет[1][2].

Архитектура[править | править исходный текст]

Как показано на рисунке, можно выделить три инстанции, взаимодействующие в рамках веб-службы. Переведём их названия как
  • заказчик (service requestor);
  • исполнитель (service provider);
  • каталог (service broker).
Когда служба разработана, исполнитель регистрирует её в каталоге, где её могут найти потенциальные заказчики. Заказчик, найдя в каталоге подходящую службу, импортирует оттуда её WSDL-спецификацию и разрабатывает в соответствии с ней свое программное обеспечение. WSDL описывает формат запросов и ответов, которыми обмениваются заказчик и исполнитель в процессе работы. Для обеспечения взаимодействия используются следующие стандарты:
  • XML: Расширяемый язык разметки, предназначенный для хранения и передачи структурированных данных;
  • SOAP: Протокол обмена сообщениями на базе XML;
  • WSDL: Язык описания внешних интерфейсов веб-службы на базе XML;
  • UDDI: Универсальный интерфейс распознавания, описания и интеграции (Universal Discovery, Description and Integration). Каталог веб-служб и сведений о компаниях, предоставляющих веб-службы во всеобщее пользование или конкретным компаниям. Пока UDDI существуют, однако, только в небольших фирменных сетях и ещё не нашли широкого распространения в открытом интернете.

Методы разработки[править | править исходный текст]

Существуют средства автоматизации разработки веб-служб, разделяющиеся на две основных группы. При разработке снизу-вверх сначала пишутся имплементирующие классы, а из их исходного текста генерируются WSDL-файлы, документирующие службу. Недостатком этого метода является подверженность Java-классов частым изменениям. При подходе сверху-вниз сначала подготавливается WSDL, а из него генерируется скелет Java-класса, имплементирующего службу. Этот путь считается более трудным, зато приводит к более чистым и лучше защищенным от изменений решениям. Пока формат сообщений, которыми обмениваются заказчик и исполнитель, не меняется, изменения в каждом из них не нарушают взаимодействия. Эта техника называется иногда "contract first", так как исходной точкой является WSDL ("договор" между заказчиком и исполнителем).

Достоинства[править | править исходный текст]

  • Веб-службы обеспечивают взаимодействие программных систем независимо от платформы. Например, Windows-C#-клиент может коммуницировать с Java-сервером, работающим под Linux.
  • Веб-службы основаны на базе открытых стандартов и протоколов. Благодаря использованию XML достигается простота разработки и отладки веб-служб.
  • Использование интернет-протокола обеспечивает HTTP-взаимодействие программных систем через межсетевой экран. Это значительное преимущество, по сравнению с такими технологиями, как CORBADCOM или Java RMI. С другой стороны, веб-службы не привязаны намертво к HTTP - могут использоваться и другие протоколы.

Недостатки[править | править исходный текст]

  • Меньшая производительность и больший размер сетевого трафика по сравнению с технологиями RMICORBADCOM за счёт использования текстовых XML-сообщений. Однако на некоторыхвеб-серверах возможна настройка сжатия сетевого трафика.
  • Аспекты безопасности. Ответственные веб-службы должны использовать кодирование, возможно - требовать аутентификации пользователя. Достаточно ли здесь применения HTTPS, или предпочтительны такие решения, как XML Signature, XML Encryption или SAML - должно быть решено разработчиком.

Примеры[править | править исходный текст]

Взамодействие между авиакомпаниями и бюро путешествий. Первые предоставляют через веб-службы полезную информацию, которую вторые используют при поиске оптимальных предложений своим клиентам.
Google с 2002 до 2009 года предоставлял веб-службу, которая позволяла заказчикам искать необходимую информацию в интернете так же, как это делают обычные пользователи. По удобству это несравнимо, например, с автоматическим разбором HTML-текста Google-вских страниц.
Amazon.com имеет веб-службу, предоставляющую различные веб-базированные услуги.

Платформы[править | править исходный текст]

Веб-службы развёртываются на серверах приложений. Некоторые сервера приложений: