`

СПЕЦИАЛЬНЫЕ
ПАРТНЕРЫ
ПРОЕКТА

Архив номеров

Как изменилось финансирование ИТ-направления в вашей организации?

Best CIO

Определение наиболее профессиональных ИТ-управленцев, лидеров и экспертов в своих отраслях

Человек года

Кто внес наибольший вклад в развитие украинского ИТ-рынка.

Продукт года

Награды «Продукт года» еженедельника «Компьютерное обозрение» за наиболее выдающиеся ИТ-товары

 

XML Web Services

0 
 

В последнее время Web Services (Web-сервисы, или Web-службы) стали одним из самых "любимых" предметов в статьях и книгах по программированию. Одни говорят о них как о новом middleware -- "универсальном клее", который заменит все существующие и наконец-то сможет склеить все со всем и на любом расстоянии. Другие считают, что они совершенно не заслуживают поднятой вокруг них шумихи.
Новые технологии программирования появляются довольно часто. Как правило, одна компания, проанализировав разработки других, создает нечто свое, особенное, в чем-то превосходящее все, существовавшее прежде. При этом обычно за основу берутся некоторые "закрытые" стандарты, не совместимые с продуктами конкурентов, которые, впрочем, и сами-то не слишком рвутся попадать в зависимость, принимая чужие правила игры. XML Web Services -- тот редкий случай, когда соперничающие между собой компании, такие, как Microsoft, Sun, IBM, Oracle, Inprise и многие другие, приняли решение поддержать, а некоторые -- и поднять на знамя одну общую технологию. Практически все последние версии популярных сред разработки программного обеспечения позволяют создавать и использовать Web-сервисы, так что они стали доступными для большинства языков программирования и операционных систем.


А зачем?

Несмотря на то что во всем мире основная часть доходов фирм--создателей программного обеспечения по-прежнему приходится на приложения "настольного" класса, фактически все последние разработки так или иначе учитывают Internet-технологии или вовсе базируются на них. Программы перестают вмещаться в рамки компьютера и локальной сети. Возникает множество задач, требующих применения ПО, в котором как код, так и данные распределены по Internet.

Создавать такие приложения, конечно, можно, и ничего не зная ни про какие Web-сервисы, однако есть целый ряд проблем, которые неудобно и неэффективно решать с помощью существуют инструментов. Это и интеграция удаленных систем, построенных на разных платформах; и реализация маркетинговой программы "software as service" -- аренды ПО на уровне вызова отдельных функций; и даже просто публикация в Web актуальной информации в виде, пригодном для программной обработки.

Казалось бы, в WWW можно найти практически любые данные и получить множество информационных услуг. Но использовать все это богатство в своей прикладной программе не так-то просто, поскольку в языке HTML, на котором представлено подавляющее большинство Internet-ресурсов, смешаны содержание информации и форма ее представления.

Помнится, несколько лет назад я сменил свой пейджер на мобильный телефон. Пейджер использовался главным образом для того, чтобы оперативно получать электронную почту и сообщения от компьютерно-телефонного сервера, над которым я в то время работал. В этом плане мобильный телефон с функцией SMS оказался идеальной заменой. Однако пейджинговый оператор, в отличие от телефонного, предоставлял возможность подписки на различные информационные каналы, по которым приходили прогнозы погоды, курсы валют и всякого рода новости. Поскольку всю эту информацию можно было найти в Internet, то мне, естественно, захотелось написать программу, которая бы автоматически собирала с различных сайтов интересующие меня сведения и присылала бы их в виде сообщений SMS.

За пару дней были найдены подходящие сайты и написаны несколько скриптов, которые выкачивали HTML-страницы, с помощью регулярных выражений извлекали оттуда нужные данные и отправляли их мне посредством SMS. Просто и удобно. Но, увы, спустя какое-то время прогноз погоды приходить перестал. Вскорости то же случилось и с курсами валют. Оказалось, дизайнеры тех сайтов, откуда собиралась информация, немного изменили внешний вид страниц. Подача прогноза погоды была переделана незначительно, поэтому исправить скрипт оказалось несложно, а вот курс валют стал представляться не в виде текста, а в виде GIF-картинки, которую, естественно, так просто не обработаешь. Пришлось искать другой сайт. Особенно же обидно то, что визуальные изменения были совершенно несущественными. Некоторые посетители их наверняка и вовсе не заметили, однако программы из-за этих косметических отличий оказались полностью неработоспособными. При этом новые скрипты рано или поздно ожидала та же участь. А вот если бы информация была представлена с помощью элементарных (но стандартных!) Web-сервисов, подобная проблема решалась бы очень просто.


А что это?

О Web-сервисах написано уже немало, так что многие читатели наверняка знают смысл этого термина. Однако и слово Web, и слово Service имеют такое множество значений, что их сочетание, с одной стороны, кажется чем-то давным-давно знакомым, а с другой -- чем-то почти неопределяемым. На самом деле сегодня под Web-сервисами понимается вполне конкретный вид программного обеспечения, детально описанный в соответствующих спецификациях. На идейном уровне ему можно дать такое упрощенное определение:

Web-сервис -- это серверный объект, реализующий некоторый элемент функциональности, с которым могут взаимодействовать удаленные программы по протоколу HTTP посредством сообщений на языке XML.

Чтобы подчеркнуть, что Web-сервисы строятся на базе XML, их часто называют XML Web Services, тем более что многие продолжают использовать слова Web Services для обозначения вообще всех услуг, предоставляемых через Web. Правда, последняя трактовка постепенно исчезает и замещается первой. Еще месяца два-три назад в первой десятке результатов поиска по запросу "Web Service" на Google не было ни одной ссылки, относящейся к XML Web Services. А сейчас все десять -- именно такие.

С одной стороны, Web-сервисы очень похожи на обычные Web-сайты -- они также располагаются на Web-серверах и в качестве базового протокола используют HTTP. Однако содержимое Web-сайтов представляется в формате HTML, удобном в первую очередь для пользователей-людей (точнее будет сказать -- для программ-броузеров, умеющих этот HTML интерпретировать и визуализировать на экране компьютера). Web-сервисы же рассчитаны на любые программы, "понимающие" язык XML. В определенном смысле Web-сайты являются частным случаем Web-сервисов, поскольку броузеры -- это тоже программы, а HTML -- подмножество XML.

Некоторые отличия имеются в механизме взаимодействия клиента с сервером. Помимо URL-адреса запрашиваемого ресурса, броузер может передать на Web-сервер только значения полей заполненной пользователем формы. Они пересылаются в виде списка пар имя-поля=значение либо способом GET (в адресной строке), либо способом POST (в теле запроса). В ответ на запрос Web-сервер выдает текст страницы на языке HTML.

С Web-сервисами дело обстоит сложнее. Для каждого Web-сервиса должна существовать спецификация на языке WSDL (Web Service Description Language, основан на XML). Она определяет, каким образом к нему можно обратиться и что от него можно получить. На языке WSDL указывается адрес Web-сервиса, поддерживаемые протоколы, перечень допустимых операций, форматы воспринимаемых и выдаваемых сообщений. Основным протоколом взаимодействия Web-сервиса с его клиентами является SOAP (Simple Object Access Protocol), также построенный на базе XML и использующий в качестве транспорта HTTP (поэтому Web-сервисы иногда еще называют SOAP Web Services).

В создании инфраструктуры Web-сервисов участвуют также вспомогательные службы, такие, как Disco (от Discovery) и UDDI (Universal Description, Discovery, and Integration). Для того чтобы Web-сервисы могли быть обнаружены клиентскими программами, которые заранее о них не знают, в корневом каталоге Web-сервера нужно создать файл default.disco (для статических сервисов) или default.vsdisco (для динамических) -- специальный XML-документ, где указываются адреса имеющихся на сервере Web-сервисов и, возможно, ссылки на другие Disco-файлы. Это своего рода аналог "карты сайта".

UDDI -- определенного вида Web-сервис, представляющий собой глобальный каталог-реестр Web-сервисов. В службе UDDI каждый желающий может зарегистрировать свой Web-сервис, чтобы другие смогли его найти и использовать. На сегодня существует несколько UDDI-реестров, самые известные из которых содержатся компаниями Microsoft и IBM.


Достоинства и недостатки

Как бы странно это ни выглядело, на самом деле то, что удовлетворяет спецификациям на XML Web Service, может не иметь никакого отношения ни к XML, ни к Web, ни к Service. Судите сами. Web-сервисы могут поддерживать запросы в формате HTTP/GET и HTTP/POST. XML при этом не используется. Транспортным протоколом для SOAP может быть не только HTTP, но и, например, SMTP. Тогда это уже не Web, а e-mail. Согласно спецификации, Web-сервис даже не обязан выдавать ответ (в терминах обычного программирования это означает, что клиент функцию вызывает, а она управление не возвращает, "зависает"). На стороне клиента возникает ошибка time out, которую невозможно отличить от полного отсутствия связи. При всем желании трудно назвать такое поведение "сервисом".

Если же не вдаваться в тонкости спецификаций WSDL и SOAP (кстати, уже утвержденных консорциумом W3C в качестве стандартов), а понимать под Web-сервисами лишь те, что корректно работают на основе XML и HTTP по принципу запрос-ответ, то картина получается более благоприятная.

XML и HTTP -- простые открытые стандарты, для работы с которыми существует множество инструментов от самых разных производителей. Поэтому несомненным достоинством Web-сервисов является простота их реализации и использования на любом языке программирования и для любой платформы.

Применение протокола HTTP, который поддерживает работу через proxy-серверы и брандмауэры, позволяет с помощью Web-сервисов связать любые две системы, имеющие доступ к Internet. При этом защита передаваемых данных может быть обеспечена обычными технологиями, применяемыми в Web, такими, как SSL.

К сожалению, на сегодняшний день Web-сервисы не поддерживают механизмы распределенных транзакций, как, скажем, COM+/MSMQ. Другими словами, нельзя объединить вызовы нескольких Web-сервисов в одну "макрокоманду", которая должна быть либо целиком выполнена, либо, если это по каким-то причинам невозможно, целиком отменена. Отсутствие такой функциональности мешает более широкому внедрению Web-сервисов в системах e-коммерции и e-бизнеса. Чтобы решить данную проблему, компании Bowstreet, Hewlett-Packard, IBM, Oracle и Sun создали специальный язык Transaction Authority Markup Language и выступили с инициативой принятия его в качестве стандарта.

SOAP -- сравнительно громоздкий протокол, на один байт полезной информации может приходиться в сотню раз больше служебной. Правда, благодаря тому что все данные передаются только в текстовом виде, они хорошо сжимаются модемами. Кроме того, Web-сервисы поддерживают как синхронный, так и асинхронный способы вызова. Это очень важно ввиду того, что передача запроса и ответа на него может происходить очень медленно.


Заключение

Итак, технология Web-сервисов относится к разряду middleware, поскольку обеспечивает связи между компонентами внутри распределенной программной системы. В принципе, Web-сервисы можно использовать не только в Internet, но и в локальной сети, и даже в рамках одного компьютера. Однако в этой области они вряд ли смогут составить реальную конкуренцию таким технологиям, как COM, CORBA или EJB, просто из-за существенной разницы в производительности.

Как любая новая технология, Web-сервисы открывают новые возможности, позволяют под другим углом посмотреть на старые проблемы. Однако для наиболее эффективного их применения требуется создание определенной инфраструктуры, основанной на использовании открытых стандартов, в частности XML. В этом направлении и движутся ведущие производители ПО. Microsoft выпустила программную платформу .NET и ряд серверных продуктов, ориентированных на сопряжение с Web-сервисами (.NET Enterprise Servers). Web-сервисы присутствуют в спецификации J2EE (Java 2 Enterprise Edition) -- компания Sun создает платформу Sun ONE (Open Network Environment), в которой им отводится одна из главных ролей. Пока что рано делать какие-то выводы, но, по всей видимости, в ближайшие годы Web-сервисы действительно займут одно из ключевых мест среди технологий программирования.
0 
 

Напечатать Отправить другу

Читайте также

 
 
IDC
Реклама

  •  Home  •  Рынок  •  ИТ-директор  •  CloudComputing  •  Hard  •  Soft  •  Сети  •  Безопасность  •  Наука  •  IoT