Андрей Колесов

В этом номере «BYTE/Россия» мы открываем тему "Web-сервисы". "Открываем" — потому, что, судя по всему, простым изложением базовых основ тут не обойдешься, вопрос относится к категории стратегических. И мы бы очень хотели, чтобы в обсуждении приняли самое деятельное участие те, кому предназначена новая технология— читатели нашего журнала.

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

"...И в воздух чепчики бросали"

Лично я первый раз услышал сам термин "Web Services" около года назад, при объявлении первой информации о будущих Microsoft .NET, Framework.NET и Visual Studio.NET. Однако довольно быстро стало понятно, что речь идет не о некотором корпоративном решении, а о технологии, за которой стоят киты ИТ-индустрии, в частности W3C — всемирный Web-консорциум. А ключевые разработчики стандартов (которые утверждает W3C) — давнишние друзья-соперники IBM и Microsoft.

С начала нынешнего года слова Web Services все чаще встречаются в компьютерных СМИ (в российских — с обычным запозданием), и к лету они стали уже чем-то привычным. При этом доминировали восторженные оценки будущего положительного эффекта применения этой технологии. Тема все чаще стала рассматриваться на различных компьютерных форумах, а недавно оказалась в центре внимания двух крупнейших мировых конференций для разработчиков — Microsoft TechEd'2001 (Атланта и Барселона) и Lotus DevCon'2001 (Лас-Вегас).

На открытии последней президент Lotus Эл Золлар озаглавил свое выступление "Стандарты сделают вас свободными". Тем самым он определил главную направленность форума, где был анонсирован целый ряд инструментов разработки приложений на базе Web Services и продуктов с поддержкой данной технологии. Одна из ключевых идей его речи — новые стандарты обеспечат независимость заказчиков и разработчиков "от прихотей тех или иных ИТ-поставщиков, в том числе тех, кто обитает в Редмонде".

Тут пора сказать, что технология Web Services предназначена для создания распределенных приложений, функционирующих в среде Интернет (и всех его вариаций типа интранет и экстранет), компоненты которых взаимодействуют на базе стандартных Web-протоколов. По мнению экспертов, Web Services должны заменить уже довольно давно существующие технологии для связывания удаленных компонентов (в частности DCOM и CORBA), которые несовместимы между собой и, более того, реализованы на основе закрытых корпоративных стандартов. Однако самое главное то, что все эти технологии создавались в свое время для обеспечения связи программных компонентов в однородных локальных вычислительных сетях с поддержкой ограниченного числа транспортных протоколов.

Как уже было сказано, Web Services базируется на применении открытых, утверждаемых консорциумом ИТ-сообщества стандартах и протоколах, ключевыми из которых являются следующие:

  1. SOAP (Simple Object Access Protocol) — протокол доступа к простым объектам, т.е. механизм для передачи информации между уделенными объектами на базе протокола HTTP и некоторых других Интернет-протоколов;
  2. WSDL (Web Services Description Language) — язык описания Web-сервисов;
  3. UDDI (Universal Description, Discovery and Integration) — универсальное описание, обнаружение и интеграция — упрощенно говоря, протокол поиска ресурсов в Интернете.

Конечно, идея применения открытых универсальных стандартов выглядит очень заманчиво, но при этом (учитывая ажиотаж вокруг темы, растущий со скоростью степного пожара) возникает несколько настороженных вопросов, актуальность которых возрастает (как это ни странно) сообразно объему публикаций по тематике Web Services. Попробую сформулировать их.

Как отделить реальные потребности ИТ-пользователей от маркетинга ИТ-поставщиков?

Вопрос 1: что принципиально нового дает потребителю эта технология? Об этом меня спросил довольно сильный русский программист, работающий в США. "Я внимательно прочитал уже несколько статей по этой теме, — пояснил он, — но так и не понял, что я могу с их помощью сделать такого, чего не мог сделать раньше с помощью той же CORBA?" Обменявшись с ним мнениями, мы пришли к выводу, что желание заставить клиентов провести обновление своего ПО — совсем не последний стимул в маркетинговой активности ИТ-поставщиков.

Вопрос своего знакомого я передал в Москве нескольким специалистам из компаний, которые занимаются "продвижением" технологии Web Services, но пока получил довольно расплывчатые ответы типа "Интернет — это так классно!"

Обратите внимание, что приведенные далее статьи тоже не дают ответа на поставленный вопрос, поскольку показывают, как можно реализовать задачи, которые имеют решения с помощью уже давно известных средств.

Вопрос 2: насколько актуальна сегодня модель распределенных Web-приложений в разнородной вычислительной среде? Хотелось бы пояснить — никто не сомневается, что такие системы нужны, и, скорее всего, их число будет расти. Но также понятно, что еще очень долго основная доля ИТ-систем будет работать (и разрабатываться) на базе "традиционных", локальных систем. Хотя бы потому, что потребителям нужен убедительный ответ на вопрос о том, будет ли обеспечен нужный уровень надежности работы подобных распределенных Web-приложений.

Очевидно по крайней мере, что Web-сервисы в ближайшем будущем не отменят и не заменят другие модели создания повторно используемых программных компонентов (те же DLL, ActiveX DLL и пр.), в частности для локальных компьютеров.

Вопрос 3: что же мешало ИТ-поставщикам создать такой "простой протокол" раньше? Вопрос этот задается не из чистого любопытства, а из желания понять, насколько серьезно нужно воспринимать заявления ведущих поставщиков ПО о намерении "жить дружно".

Разумеется, во многом такое развитие технологий определяется глобализацией информационно-вычислительного пространства и требованием обеспечения межплатформенного взаимодействия со стороны потребителей. Однако стоит отметить и еще один момент — хорошим стимулом для внутриотраслевого сотрудничества является переживаемый кризис ИТ-индустрии, который способствует консолидации конкурентов для решения общих задач. Одна из них — создание стимулов для увеличения рабочих мест в отрасли информационных технологий.

Вопрос 4: будет ли реально обеспечена обещанная "платформенная независимость"? Поясню: объявив себя поборниками идей открытых стандартов, не станут ли некоторые ИТ-поставщики (конечно же, из соображений наилучшего обеспечения требований потребителей) делать свои собственные варианты стандартов, оптимизированные под конкретную платформу?

Тут я хотел бы обратить внимание, что в обеих последующих статьях рассматриваются Web-сервисы на базе средств и платформ Microsoft (но с применением разных версий и разных языков!). Это не есть какое-то ущемление других ИТ-поставщиков — просто именно эти авторы проявили активность и интерес к теме (совпадение фамилий некоторых авторов — чистейшая случайность). Мы будем рады, если сможем рассказать и о других инструментах. Но материал о платформенной независимости станет гораздо убедительнее, если в нем будет, например, для клиента использоваться Borland-Linux, а для сервера — Lotus-IBM AS/400.

Web Services — это так легко. Только поменяй компьютер

Надо признать, что эти стати реально показывают простоту реализации двух вариантов приложений типа Web Services. С помощью механизмов WebClass и DHTML в том же Visual Basic 6.0 подобные задачи решались дольше и сложнее. Но нужно подчеркнуть, что это не связано с применением новых протоколов — просто новые версии мастеров и конструкторов VS.NET лучше и качественнее автоматизируют работы программиста.

В добавление мне хотелось бы привести еще один простой пример создания и применения Web Services, чтобы показать, что к удаленным вычислительным ресурсам можно обращаться не только из специального приложения, но также и из среды обычного браузера.

В среде Visual Studio.NET выберите вариант создания нового приложения типа Web Services с именем RateService. В автоматически созданном классе Service1 введите код функции, приведенной на рис. 1.

Fig.1
Рис. 1. Код функции, используемой при создании Web Services.

Создайте приложение с помощью команды Build. Все! Теперь можно обращаться к созданной нами функции из обычного браузера, передавая разные исходные данные (в данном случае ticker — команду о необходимости покупки или продажи акций) и получая соответствующий ответ (рис. 2).

Fig.2
Рис. 2. Так выглядит ответ созданной нами функции из браузера.

Все вроде бы просто и быстро. Но для использования новых технологий средств VS.NET при решении подобной тривиально задачи мне пришлось обновить системный блок, установив в нем Pentium 800/133 и RAM 256 Мбайт.