Языки информационного обмена

Основные понятия Web-службы

Разбить на страницы
Показывать лекцию целиком

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

Основные понятия web-службы

Сегодня доступ к Интернету можно получить с помощью различных устройств, обеспечивающих большое разнообразие функциональных средств. В большинстве случаев обмен информацией в Интернете осуществляется посредством запросов и ответов с использованием открытых протоколов, в частности HTTP. Обычно большая часть такой информации представлена на языке HTML, специальные теги которого позволяют организовать пользовательский интерфейс в отображаемых браузером web-страницах.

Web-ориентированные приложения

С недавних пор настольные и web-приложения стали похожи друг на друга. Интерфейсы настольных приложений, например таких, как в системе Windows ХР, теперь напоминают интерфейсы интернет-браузеров. В обычных настольных приложениях применяются функции Интернета, а Windows-приложения способны взаимодействовать с web-серверами посредством протокола HTTP. В частности, программа Microsoft Money автоматически загружает банковскую информацию; операционная система Windows уведомляет вас о появляющихся обновлениях; Visual Studio .NET позволяет проводить поиск в библиотеке MSDN, не покидая среду разработки.

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

С появлением web-служб и технологии .NET ситуация изменилась. Протоколы web-служб определяют структуру для предоставления функций через Интернет. Они основаны на открытых стандартах, являются взаимосвязанными, расширяемыми и используются для нынешнего поколения web-ориентированных приложений. Система .NET Framework представляет собой высокооптимизированную платформу и имеет набор инструментов для развертывания web-служб.

Что такое web-служба

Web-служба (Web Service) - это приложение или блок находящегося на web-сервере выполняемого кода, функционирование которого основано на применении стандартных форматов XML. Поиск этого кода, его извлечение и получение посредством него требуемого результата выполняется в среде .NET Framework. Вызывается web-служба .NET так же просто, как и локальная функция.

Web-служба .NET - это не объект (во всяком случае, не в его традиционном представлении). Web-метод является, по сути, независимым, "атомарным" и не имеющим постоянного местонахождения. Web-служба больше подобна библиотеке функций в DLL и ее сложно ограничить рамками объектно-ориентированной абстракции. Это упрощение в значительной мере и обеспечивает преимущества web-служб. Поскольку web-службы не ограничены конкретной технологией (безопасности, управления или транспортировки), они могут быть использованы почти в любом разрабатываемом сценарии, что существенным образом отличает их от предыдущих технологий, таких как СОМ и CORBA.

Для чего нужны web-службы

Web-службы предоставляют способ совместного использования программных функций. Их даже можно назвать "СОМ для Web", хотя в основе работы этих систем лежит совсем другая технология.

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

Web-службы могут использоваться для решения следующих задач:

  • С целью осуществления В2В-транзакций или соединения внутренних систем отдельных компаний

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

  • В качестве готовых модулей для разработчиков

    Допустим, независимый разработчик спроектировал web-службу аутентификации, предназначенную для применения в среде ASP .NET. Если вы пожелаете воспользоваться этой службой, то за соответствующую плату можете приобрести месячную подписку на нее. Однако данный процесс будет совершенно прозрачным для конечного пользователя, который решит, что указанные средства аутентификации являются частью вашего приложения. Такие готовые компоненты можно использовать в web-приложениях, а также в настольных и мобильных программах.

  • Для придания дополнительных товарных качеств клиентским приложениям

    Компания Microsoft выдвинула инициативу создания технологии встройки, которая позволила системным администраторам осуществлять дистанционное администрирование с применением web-служб. Банк, который имеет намерение открыть вам инвестиционный счет, заинтересован в наличии web-службы для загрузки информации о транзакциях, которую можно было бы использовать без необходимости тратиться на финансовую программу наподобие Quicken. Пока конечные пользователи не получат напрямую требуемую услугу, ее доступность в Quicken может вынудить их открыть счет в другом банке, который предоставляет данную программу.

  • В качестве компонентных библиотек DLL для многократного использования кода

    Самый простой способ многократного использования определенных функциональных возможностей в приложениях ASP .NET заключается не в создании сборки .NET, а в проектировании web-службы, к которой могли бы обращаться различные клиенты, в том числе настольные приложения, PDA и мощные браузеры, такие как Internet Explorer. При этом не важно, где располагаются web-службы и клиенты, необходимо лишь наличие Интернет-соединения между клиентом и службой.

  • В качестве инструментов, обеспечивающих взаимодействие различных программ в рамках одной компании

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

  • Основы web-служб

    Концепция, лежащая в основе функционирования web-служб, не нова. Существует множество и других сред программирования, которые базируются на принципе разделения приложений и функций между компьютерами по сети, позволяющем сделать работу их пользователей более эффективной и гибкой. Однако до сих пор ни одна из таких сред не приобрела широкой популярности, поскольку с их применением связаны две проблемы: внутренняя сложность системы и гетерогенная природа Интернета, связывающего компьютеры с разными операционными системами, сетями и платформами разработки.

    История развития web-служб

    История программирования в значительной степени представляет собой процесс перехода от небольших изолированных сред (таких как мэйнфреймы и автономные приложения) к более широкомасштабным и многокомпонентным системам, начиная от сетевого и клиент-серверного программного обеспечения и заканчивая Интернет -приложениями и распределенными приложениями.

    Совместное использование кода приложениями

    В начале 90-х годов прошлого века интерес разработчиков привлекали две соперничающие компонентные технологии: архитектура компонентной объектной модели (Component Object Model, СОМ) компании Microsoft и обобщенная архитектура построения брокеров объектных запросов (Common Object Request Broker Architecture, CORBA), представленная компанией OMG (Object Management Group). Обе эти технологии предоставляют функции, которые можно многократно применять как двоичные объекты, а также программное обеспечение для совместного использования кода на одном компьютере.

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

    Совместное использование кода на нескольких компьютерах

    В середине 90-х годов компания Microsoft выпустила расширенную компонентную модель - DCOM ( Distributed СОМ ). Эта модель не являлась альтернативой или дополнением модели СОМ - в действительности она была лишь сетевым протоколом, определяющим способ взаимодействия СОМ -объектов различных компьютеров. Компания OMG также представила сетевой протокол, получивший название IIOP (Inter-ORB Protocol), который был разработан с целью обеспечения возможности совместной работы в Интернете отдельных объектов ORB CORBA.

    Эти стандарты позволили приложению, запущенному на одном компьютере, использовать код, расположенный на другом компьютере. Но поскольку оба указанных стандарта являлись потомками стандартов разработки настольных приложений, они имели несколько уровней сложности, затрудняющих их применение (в частности, модель DCOM за это часто критиковали). Опытные разработчики считают, что эти протоколы сыграли положительную роль, обеспечив возможность создавать приложения, которые могут выполняться распределено на нескольких рабочих станциях, тем самым позволив подняться от разработки клиент-серверного программного обеспечения до так называемых 3-уровневых и n-уровневых приложений.

    Совместное использование кода в различных сетях

    К сожалению, ни COM/DCOM, ни CORBA/IIOP не функционировали должным образом в рамках Интернета. В частности, потому, что оба этих стандарта являются взаимно исключающими. Серверы DCOM могут взаимодействовать только с клиентами DCOM, стандарты CORBA и IIOP также имеют некоторые недостатки. Сфера применения DCOM ограничена компьютерами, оснащенными операционной системой Microsoft Windows. Модель CORBA, подобно СОМ, является сложным стандартом, не предназначенным для работы через брандмауэры. Таким образом, помимо необходимости адаптировать модели СОМ и CORBA для использования в сетевой среде, требовалось создать простые программные средства разработки распределенных приложений в сети Web.

    Модель COM/DCOM

    DCOM - это сетевой протокол, основанный на стандарте распределенной среды обработки DCE (Distributed Computing Environment). Достоинством протокола DCOM является используемая модель программирования. Этот протокол позволяет разработчикам применять СОМ - объекты на удаленном компьютере точно так же, как и на локальном (рис. 12.1). DCOM просто переносит локальную межпроцессную связь с помощью сетевого протокола. Вызов становится несколько более медленным, но ни клиенту, ни компоненту нет необходимости знать, что связь между ними осуществляется по сети. На рис. 12.1 показан многоуровневый протокол, позволяющий модели СОМ работать через сеть.

    (рис 12.1) Архитектура COM/DCOM

    К сожалению, модель COM/DCOM не подходит для работы в распределенных сетях.

    Применить DCОМ в сети приводит к большим издержкам из-за возникновения помех и большого количества отложенных сообщений. Очевидно, что применять DCОМ в сети Интернет тем более не имеет смысла, поскольку по мере роста числа клиентов в сети объем сетевого трафика увеличивается и необходимость обрабатывать большое количество запросов наносит серьезный вред всей системе. Таким образом, разработчики пришли к выводу, что протокол DCOM является принципиально не масштабируемым для обслуживания большого числа клиентов. Кроме того, указанные ограничения делают невозможным использование DCOM -компонента в случае ненадежной или периодически устанавливаемой связи.

    Стандарт CORBA/IIOP

    Модель CORBA является общим стандартом для создания брокеров объектных запросов ORB (Object Request Broker). Брокеры ORB служат для тех же целей, что и компоненты СОМ на платформе Microsoft, - они обеспечивают взаимодействие объектов. С появлением CORBA большинство разработчиков рассчитывали на то, что распределенная среда компьютерной обработки DCE (Distributed Computing Environment) станет основным сетевым протоколом, как это было с DCOM. Вместо этого был создан протокол IIOP, который определял способ коммуникации брокеров ORB по сети. Различные коммуникационные уровни в системе, основанной на CORBA, показаны на рис. 12.2.

    По многим параметрам CORBA кажется идеальным средством для работы с распределенными объектами. Об этом свидетельствует, в частности, тот факт, что данная технология поддерживается внушительной группой разработчиков, включающей более 500 компаний-партнеров. Но все они и несут ответственность за снижение интереса к модели CORBA. Имеется множество реализаций CORBA, и все они обладают своими особенностями. Не существует коммерческих брокеров ORB, получивших столь широкое распространение, как компоненты СОМ компании Microsoft, и имеющих такую же, как у них, производительность.

    (рис 12.2) Архитектура CORBA/IIОР

    Стандарт Java RMI

    Протокол CORBA быстро теряет репутацию, становясь все более сложным и неудобным для программирования. Частично в ответ на это компания Sun создала свой собственный механизм ORB, названный RMI (Remote Method Invocation - удаленный вызов метода). Данный механизм особенно эффективен при программировании на Java, поскольку прекрасно интегрируется с ним. Однако подобное интегрирование также является и недостатком. Работа RMI зависит от многих уникальных особенностей языка Java, ни одна из которых не поддерживается популярными языками наподобие C++. Фактически RMI - не конкурент даже CORBA.

    Недостатки существующих стандартов

    Несмотря на имеющиеся различия, технологии COM/DCOM и CORBA/IIOP обладают рядом общих ограничений:

  • Ориентирование на двоичную связь

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

  • Проблемы масштабирования

    С помощью СОМ и CORBA можно спроектировать компоненты, способные взаимодействовать с сотнями клиентов так же легко, как и с десятками. Однако это требует от программистов огромного опыта и дисциплины. Типичный компонент того не стоит.

  • Зависимость от платформы или языка программирования

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

  • Сложность

    Стандарты СОМ и CORBA включают множество встроенных средств, таких как транзакции, инструменты безопасности и шифрования, что повышает вероятность возникновения проблем, связанных, в частности, с несовместимостью и дополнительными затратами. В настоящее время протоколы web-служб не предоставляют и не специфицируют инструменты API для указанных высокоуровневых служб. Этот факт значительно упрощает их реализацию, но означает, что в случае необходимости вам придется самостоятельно разрабатывать такие средства.

  • Отсутствие универсального стандарта для представления данных

    Рассматривая историю развития совместного использования программного кода в сетях, мы оставили без внимания такой важный вопрос разработки, как эволюция универсального стандарта для кодирования информации. Это объясняется тем, что в то время, когда создавались технологии СОМ и CORBA, стандарта для совместного использования структурированных данных не существовало. И лишь позднее появились такие стандарты, как SGML, XML и SOAP, предназначенные непосредственно для представления типов данных.

    Несмотря на все выше сказанное технологии СОМ и CORBA по-прежнему широко используются. Конечно, у них есть свои недостатки, но они отнюдь не потеряли еще своей работоспособности. В некоторых отношениях они не способны конкурировать с web-службами, но могут стать идеальным инструментом для реализации распределенных компонентов в гетерогенной сетевой среде.

  • Достоинства web-служб .NET

    Web-службы были разработаны с целью преодоления ограничений описанных выше технологий. С помощью .NET компания Microsoft надеется построить более совершенную структуру программирования для создания и предоставления web-услуг.

    Web-службы .NET отличаются от существующих технологий создания распределенных приложений следующими характеристиками.

  • Открытость стандартов

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

  • Межплатформенность

    Язык программирования, который позволяет создавать XML-документы и отправлять информацию посредством HTTP, позволяет взаимодействовать с любой web-службой. Вы можете получить web-услугу из системы, отличной от .NET. Самое приятное то, что вам никогда не придется ориентироваться на определенный "уровень совместимости" - web-службы .NET изначально встроены в открытые стандарты.

  • Простота

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

  • Поддержка сообщений на понятном человеку языке

    Переход от двоичных стандартов, применяемых в СОМ и CORBA, к XML-тексту позволил упростить исправление ошибок и обеспечил возможность осуществлять взаимодействие с web-службами по обычным каналам HTTP, без усилий отправляя сообщения через брандмауэры. Но такое изменение привело к нескольким потенциальным неудобствам. Один из недостатков состоит в том, что сообщения web-службы требуют большего количества байтов для передачи одного и того же объема информации.

  • Архитектура web-служб .NET

    Реализация web-служб .NET осуществляется так же просто, как и активизация удаленной web-службы или вызов метода локального класса. Это достигается за счет применения инструментов, предоставляемых системой .NET Framework, которые позволяют создать полноценную web-службу, не вникая в детали работы таких стандартов, как SOAP и WSDL. Порядок действий при этом подобен приведенному ниже (обратите внимание, что этапы 1, 3, 5 и 8 выполняются вручную).

  • Вы разрабатываете web-службу как .NET -класс с атрибутами, которые идентифицируют его как web-службу с некоторыми функциями.
  • В среде .NET автоматически создается документ WSDL, где описывается, как клиент должен взаимодействовать с web-службой.
  • Потребитель находит вашу web-службу и, решив воспользоваться ею, добавляет соответствующую web-ссылку в проект Visual Studio .NET (или запускает утилиту wsdl.exe).
  • В среде .NET осуществляется автоматическая проверка документа WSDL и генерируется прокси-класс, который позволяет потребителю взаимодействовать с web-службой.
  • Потребитель вызывает один из методов вашего класса web-службы. С его точки зрения этот вызов не отличается от вызова метода любого другого класса, но в действительности потребитель взаимодействует с прокси-классом, а не с web-службой.
  • Прокси-класс преобразует, переданные параметры в сообщение SOAP и отправляет его web-службе.
  • Вскоре прокси-класс получает SOAP -ответ, преобразует таковой в соответствующий тип данных и возвращает его как обычный тип данных .NET.
  • Потребитель использует возвращенную ему информацию.
  • Описанный процесс схематически показан на рис.12.3.

    (рис 12.3) Взаимодействие с web-службой

    При работе web-служб .NET используется технология ASP .NET, являющаяся частью системы .NET Framework. Она также требует поддержки со стороны сервера Microsoft IIS (Internet Information Server). Среда Visual Studio .NET обеспечивает большое количество инструментов, которые помогают облегчить решение задач, связанных с получением и выполнением web-службы.

    Базовые технологии

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

    Работа web-служб построена на использовании различных открытых стандартов, которые описаны в таблице.

    Технология Назначение
    WSDL Основанный на XML формат описания web-службы, ее методов, типов данных параметров и возвращаемого значения, а также поддерживаемых методов коммуникации
    HTTP Коммуникационный протокол, служащий для отправки запросов web-службе через Интернет. (Кроме того, это распространенный стандарт, применяемый для передачи web-страниц web-браузеру)
    SOAP Основанный на XML формат кодирования информации в запросе, посылаемом web-службе, и ответном сообщении для отправки таковых через Интернет. Например, SOAP определяет способы представления величин различных типов данных
    DISCO Необязательная спецификация Microsoft, позволяющая клиентам находить требуемые web-службы. DISCO-файл является, по сути, несистематизированным списком связей с web-службами. В настоящее время вытесняется стандартом WS-Inspection.
    UDDI Каталог, который позволяет клиентам находить web-службы, предоставляемые конкретной компанией. UDDI является самым молодым среди стандартов web-служб

    WSDL представляет собой стандарт, разработанный только для web-служб .NET. С целью обеспечения совместимости с другими платформами. При создании web-служб рекомендуется использовать формат SOAP, но допускается также применять методы POST и GET протокола HTTP. Спецификации DISCO и UDDI представляют собой необязательные расширения, которые облегчают публикацию и поиск информации о web-службах. Однако на сегодняшний день наиболее логичным способом передачи информации является HTTP -коммуникация, и нет смысла от нее отказываться.

    К числу менее распространенных стандартов, используемых при создании web-служб, относится WS-Inspection - спецификация для поиска документов, в которых перечислены группы web-служб и их местонахождение. Эта спецификация была разработана совместными усилиями компаний Microsoft и IBM и предназначалась для замены протокола DISCO.

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

    Спецификация WSDL

    Каждая web-служба предоставляет документ WSDL (Web Service Description Language - язык описания web-службы), в котором описывается все, что клиенту необходимо знать об этой службе. WSDL -документ служит тем же целям, что и файл IDL (Interface Definition Language - язык определения интерфейса) для компонента CORBA или СОМ: он определяет интерфейс web-службы. Указанный документ, по сути, представляет собой контракт между клиентом и web-службой, где декларируется, что "если вы вызовете такой-то метод с такими-то параметрами, то в качестве возвращаемой величины получите такие-то данные".

    Во многих отношениях web-службы даже проще, чем создаваемые для CORBA или СОМ компоненты. Например, в web-службах отсутствует возможность поддержки нескольких интерфейсов - каждый класс web-службы обеспечивает только один набор открытых ( public ) методов. С другой стороны, документ WSDL немного сложнее своего IDL -эквивалента, поскольку он является платформонезависимым и поддерживает коммуникационные протоколы, отличные от SOAP и HTTP. Это означает, что каждый WSDL -файл для web-службы .NET содержит значительный объем стереотипного кода, служащего для обеспечения поддержки базового уровня коммуникации (в соответствии с протоколом SOAP или методами GET и POST протокола HTTP ).

    ПРИМЕЧАНИЕ

    В процессе .NET -программирования нет необходимости создавать свой собственный WSDL -документ. Каждая web-служба .NET генерирует такой документ автоматически. Его можно увидеть с помощью поддерживающего XML браузера.

    Некоторые разработчики утверждают, что стандарт WSDL для web-служб не нужен, поскольку сообщения SOAP являются самодостаточными и точно специфицируют типы данных любых содержащихся в них величин. Однако WSDL -документ предоставляет простой и последовательный способ задания разработчиком синтаксиса вызова любого web-метода. Более того, этот документ позволяет использовать инструменты автоматического генерирования прокси-классов, подобные включенным в среды Visual Studio .NET и .NET Framework. Благодаря указанным средствам использование web-службы является таким же простым, как и применение локального класса.

    WSDL -документ имеет основанный на XML формат, в соответствии с которым информация подразделяется на пять групп. Первые три группы представляют собой абстрактные определения, не зависящие от особенностей платформы, сети или языка, а оставшиеся две группы включают конкретные описания.

    Протокол 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, придется, очевидно, вручную сконструировать строку запроса, а затем вручную провести синтаксический разбор ответа, что, согласитесь, является не самым элегантным решением.

    Стандарт DISCO

    Стандарт DISCO предоставляет простейший способ получения доступа к файлам манифестов, позволяющий группировать ссылки на web-службы. Поскольку основной целью web-служб является обеспечение В2В-взаимодействия, требуется такой инструмент, который давал бы возможность не только создавать полезные функции, но и использовать их совместно с другими организациями. Информация о коммуникации с единственной web-службой может быть достаточно простой, но если у вас имеется сложная комбинация web-служб, которые расположены в различных приложениях ASP .NET и предназначены для различных клиентов, намного сложнее уследить за тем, чтобы клиенты получили требуемую информацию.

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

    Технология DISCO позволяет избежать данных проблем. DISCO -файл - это не просто список web-служб и соответствующих связей, представленных в XML-формате. Такой файл может включать файлы различных web-серверов и поддерживает "динамический поиск" - автоматический поиск каталога файлов web-службы на сервере. Инструменты .NET, например Visual Studio .NET, содержат средства обработки файлов манифестов и предоставляют простой способ их просмотра, а также обеспечивают подключение группы связанных служб к клиенту.

    Чтобы использовать web-службу, клиенту необходимо знать адрес web-узла соответствующей компании либо адрес URL файла манифеста. Файлы манифеста полезны тем, что объединяют множество web-служб в единственном списке, однако они не позволяют клиентам отыскивать web-службы определенного типа без указания наименования компании-разработчика.

    Спецификация UDDI

    Спецификация ), включая основных конкурентов - Sun и Microsoft. Объединив свои усилия, эти компании разработали проект спецификации UDDI, которая по истечении 18 месяцев была стандартизирована. Конечно, информация в подобном репозитории должна обновляться вручную. С этой целью некоторые "узловые операторы" хранят идентичные копии репозитория UDDI. Эти компании обеспечивают хранение указанного репозитория и бесплатный доступ к нему для популяризации web-служб. Кроме того, Microsoft включила версию UDDI в программное обеспечение сервера Windows .NET для использования в корпоративных сетях интранета.

    В хранилище UDDI содержатся сведения о предприятиях, предоставляющих web-службы, о типе каждой службы и связях с информацией и спецификациями, относящимися к этим службам. Любопытным фактом является то, что интерфейс UDDI сам по себе представляет собой web-службу. Для регистрации или поиска службы следует отправить SOAP -сообщение.

    Web-службы конкурирующих фирм-производителей

    Microsoft - не единственный разработчик инструментов реализации web-служб. В настоящее время существуют инструменты создания web-служб для разнообразных языков и платформ. Некоторые из них перечислены ниже.

  • Компания IBM предоставляет набор средств разработки Web Service Developinent Kit, содержащий среду выполнения и многочисленные примеры.
  • Компания Oracle предлагает специальный язык для разработки web-служб Web Integration Development Language, а также собственные web-службы.
  • Компания Sun Microsystems предоставляет среду Sun ONE (Open Net Environment), поддерживающую web-службы, написанные на языке Java.
  • Набор SOAP Toolkit от Microsoft позволяет вызывать web-службы из программных продуктов, созданных в предыдущих версиях Microsoft Visual Studio (и написанных на таких языках, как Visual Basic и C++ ).
  • Программа Internet Explorer версии 5 и более поздних дает возможность вызывать web-службы с web-страниц посредством простого сценарного кода. Эта технология носит название WebService Behavior.
  • Язык Perl включает набор инструментов SOAP::Lite для работы с базовыми функциями SOAP.
  • Другие технологии

    .NET MyServices

    .NET MyServices (первоначальное название - Hailstorm) представляет собой ориентированный на пользователя набор web-служб, разработанных компанией Microsoft. MyServices находится на вершине структуры .NET Framework и предназначен для предоставления некоторых основных функций, к которым приложения будут получать доступ, чтобы совместно использовать пользовательскую информацию.

    Службы .NET MyServices выполняют такие функции, как сопровождение информации, поддержка аутентификации, а также выдача уведомлений для отдельных пользователей. Хотя названные службы ориентированы на конечных пользователей, однако таковые не взаимодействуют с ними напрямую, как это происходит в случае обычных web-служб. К данным службам для получения базовой информации и высокоуровневых функций обращаются приложения. Большинство служб .NET MyServices являются стандартизированным интерфейсом web-служб онлайнового хранилища данных. К таким данным может относиться все что угодно, от бизнес- календаря с указанием дат встреч до финансовых отчетов.

    Первоначально компания Microsoft планировала хранить все наборы служебных пользовательских данных для MyServices на своих серверах. Потенциальные партнеры, однако, скептически отнеслись к такому способу размещения информации и потребовали предоставления возможности выбора места хранения своих данных. Поэтому было принято решение о том, что MyServices будет позволять организациям самостоятельно поддерживать свои службы MyServices и собственные (возможно, связанные) хранилища данных.

    В настоящее время самой известной (и наиболее важной) частью .NET MyServices является система аутентификации Passport, которая разрабатывалась для сервера Hotmail и предназначалась для проверки паролей доступа к электронной почте. Позднее Passport превратилась в полноценную web-службу и сегодня используется многими компаниями для аутентификации своих клиентов. Данная система также доступна для потребительских web-узлов через систему ASP .NET Framework и может использоваться в качестве простого средства для идентификации пользователей.

    .NET Remoting

    .NET Remoting - это технология распределенных компонентов, заменившая модель DCOM в среде .NET. Она остается идеальным средством во многих ситуациях, когда web-службы .NET оказываются неподходящими, в частности применяется при работе приложений, требующих совместного использования больших объемов информации либо при необходимости сокращения времени ответа. Однако в отличие от web-служб технология .NET Remoting разрабатывалась не с целью совместного использования и публикации служб (таких как DISCO -файлы и UDDI ) несколькими компаниями.

    Сегодня .NET Remoting представляет собой расширяемую технологию, которая способна поддерживать различные протоколы передачи данных, в том числе HTTP и SOAP. Таким образом, данная технология могла бы составить конкуренцию web-службам, если бы не тот факт, что .NET Remoting не поддерживает UDDI и в ней используется специальный .NET -ориентированный формат сериализации.

    Технология .NET Remoting может оказаться полезной лишь при необходимости создать распределенную систему, которая работает в довольно гомогенной (однородной) среде и не требует взаимодействия с множеством клиентов. Иными словами, эта технология больше подходит для внутрикорпоративных решений и в меньшей степени - для основанной на стандартах разработки, требующей совместимости с большим количеством проектов других организаций. Технология .NET Remoting используется в локальной сети компании или при работе с группой постоянных клиентов в Интернете. В отличие от web-служб .NET, для хост-компонентов .NET Remoting не требуется наличия ASP .NET или IIS.

    XML-RPC

    XML-RPC - это простой, но довольно распространенный протокол, который является предшественником протокола SOAP и web-служб .NET. Протокол RPC (Remote Procedure Call - вызов удаленной процедуры) обеспечивает вызовы удаленных процедур путем отправки запросов в виде XML-документов и получение ответа в другом XML-документе. Таким же образом работает и web-служба .NET, но для связи с ней необходим протокол SOAP.

    Протокол XML-RPC имеет некоторые ограничения, главным из которых является отсутствие поддержки типов данных. Технология web-служб .NET вобрала в себя лучшее качество XML-RPC, то есть тот факт, что программы могут взаимодействовать, если они обмениваются сообщениями, имеющими стандартный согласованный формат. Кроме того, при разработке web-служб .NET были учтены потребности промышленности в необходимости кросс -платформенного представления данных различных типов.

    Система обмена сообщениями

    Microsoft, Sun и многие другие компании предоставляют системы обмена сообщениями, которые допускают коммуникацию типа "store-and-forward" (сохранение и отправка далее). Такая модель не подходит для ситуаций, когда требуется немедленный ответ, но применима в случае односторонней связи наподобие регистрации. Серверные программные средства обмена сообщениями, например MSMQ (Microsoft Message Queuing - организация очередей сообщений), обеспечивают богатый набор функций, включая транзакции, и оказываются скорее помощниками, чем конкурентами web-служб. Однако web-службы относятся к числу более распространенных технологий и могут рассматриваться в качестве более простой модели для реализации удаленных вызовов функций, а не только односторонних сообщений. Кроме того, web-службы поддерживают асинхронный режим работы.

    Сервер BizTalk

    Сервер .

    При ближайшем рассмотрении сервер BizTalk оказывается, по сути, хостом для дополнительных высокоуровневых служб, которые разработчик может использовать для интегрирования бизнес-процессов. Например, с помощью сервера BizTalk можно создавать интерфейсы, позволяющие различным процессам взаимодействовать друг с другом даже тогда, когда для работы одного процесса требуются данные в формате, отличном от предоставляемого другим. Вы можете также конфигурировать длительные распределенные транзакции, проектировать рабочий поток документов с использованием визуальных средств проектирования, предписывать правила ведения бизнеса, а также обмениваться сообщениями в формате SOAP. Чтобы описать возможности сервера BizTalk, требуется отдельная книга, но он представляет интерес, главным образом, для разработчиков, которые проектируют программное обеспечение для В2В -взаимодействия.

    Страницы:

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

    Основные понятия web-службы

    Сегодня доступ к Интернету можно получить с помощью различных устройств, обеспечивающих большое разнообразие функциональных средств. В большинстве случаев обмен информацией в Интернете осуществляется посредством запросов и ответов с использованием открытых протоколов, в частности HTTP. Обычно большая часть такой информации представлена на языке HTML, специальные теги которого позволяют организовать пользовательский интерфейс в отображаемых браузером web-страницах.

    Web-ориентированные приложения

    С недавних пор настольные и web-приложения стали похожи друг на друга. Интерфейсы настольных приложений, например таких, как в системе Windows ХР, теперь напоминают интерфейсы интернет-браузеров. В обычных настольных приложениях применяются функции Интернета, а Windows-приложения способны взаимодействовать с web-серверами посредством протокола HTTP. В частности, программа Microsoft Money автоматически загружает банковскую информацию; операционная система Windows уведомляет вас о появляющихся обновлениях; Visual Studio .NET позволяет проводить поиск в библиотеке MSDN, не покидая среду разработки.

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

    С появлением web-служб и технологии .NET ситуация изменилась. Протоколы web-служб определяют структуру для предоставления функций через Интернет. Они основаны на открытых стандартах, являются взаимосвязанными, расширяемыми и используются для нынешнего поколения web-ориентированных приложений. Система .NET Framework представляет собой высокооптимизированную платформу и имеет набор инструментов для развертывания web-служб.

    Что такое web-служба

    Web-служба (Web Service) - это приложение или блок находящегося на web-сервере выполняемого кода, функционирование которого основано на применении стандартных форматов XML. Поиск этого кода, его извлечение и получение посредством него требуемого результата выполняется в среде .NET Framework. Вызывается web-служба .NET так же просто, как и локальная функция.

    Web-служба .NET - это не объект (во всяком случае, не в его традиционном представлении). Web-метод является, по сути, независимым, "атомарным" и не имеющим постоянного местонахождения. Web-служба больше подобна библиотеке функций в DLL и ее сложно ограничить рамками объектно-ориентированной абстракции. Это упрощение в значительной мере и обеспечивает преимущества web-служб. Поскольку web-службы не ограничены конкретной технологией (безопасности, управления или транспортировки), они могут быть использованы почти в любом разрабатываемом сценарии, что существенным образом отличает их от предыдущих технологий, таких как СОМ и CORBA.

    Для чего нужны web-службы

    Web-службы предоставляют способ совместного использования программных функций. Их даже можно назвать "СОМ для Web", хотя в основе работы этих систем лежит совсем другая технология.

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

    Web-службы могут использоваться для решения следующих задач:

  • С целью осуществления В2В-транзакций или соединения внутренних систем отдельных компаний

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

  • В качестве готовых модулей для разработчиков

    Допустим, независимый разработчик спроектировал web-службу аутентификации, предназначенную для применения в среде ASP .NET. Если вы пожелаете воспользоваться этой службой, то за соответствующую плату можете приобрести месячную подписку на нее. Однако данный процесс будет совершенно прозрачным для конечного пользователя, который решит, что указанные средства аутентификации являются частью вашего приложения. Такие готовые компоненты можно использовать в web-приложениях, а также в настольных и мобильных программах.

  • Для придания дополнительных товарных качеств клиентским приложениям

    Компания Microsoft выдвинула инициативу создания технологии встройки, которая позволила системным администраторам осуществлять дистанционное администрирование с применением web-служб. Банк, который имеет намерение открыть вам инвестиционный счет, заинтересован в наличии web-службы для загрузки информации о транзакциях, которую можно было бы использовать без необходимости тратиться на финансовую программу наподобие Quicken. Пока конечные пользователи не получат напрямую требуемую услугу, ее доступность в Quicken может вынудить их открыть счет в другом банке, который предоставляет данную программу.

  • В качестве компонентных библиотек DLL для многократного использования кода

    Самый простой способ многократного использования определенных функциональных возможностей в приложениях ASP .NET заключается не в создании сборки .NET, а в проектировании web-службы, к которой могли бы обращаться различные клиенты, в том числе настольные приложения, PDA и мощные браузеры, такие как Internet Explorer. При этом не важно, где располагаются web-службы и клиенты, необходимо лишь наличие Интернет-соединения между клиентом и службой.

  • В качестве инструментов, обеспечивающих взаимодействие различных программ в рамках одной компании

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

  • Основы web-служб

    Концепция, лежащая в основе функционирования web-служб, не нова. Существует множество и других сред программирования, которые базируются на принципе разделения приложений и функций между компьютерами по сети, позволяющем сделать работу их пользователей более эффективной и гибкой. Однако до сих пор ни одна из таких сред не приобрела широкой популярности, поскольку с их применением связаны две проблемы: внутренняя сложность системы и гетерогенная природа Интернета, связывающего компьютеры с разными операционными системами, сетями и платформами разработки.

    История развития web-служб

    История программирования в значительной степени представляет собой процесс перехода от небольших изолированных сред (таких как мэйнфреймы и автономные приложения) к более широкомасштабным и многокомпонентным системам, начиная от сетевого и клиент-серверного программного обеспечения и заканчивая Интернет -приложениями и распределенными приложениями.

    Совместное использование кода приложениями

    В начале 90-х годов прошлого века интерес разработчиков привлекали две соперничающие компонентные технологии: архитектура компонентной объектной модели (Component Object Model, СОМ) компании Microsoft и обобщенная архитектура построения брокеров объектных запросов (Common Object Request Broker Architecture, CORBA), представленная компанией OMG (Object Management Group). Обе эти технологии предоставляют функции, которые можно многократно применять как двоичные объекты, а также программное обеспечение для совместного использования кода на одном компьютере.

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

    Совместное использование кода на нескольких компьютерах

    В середине 90-х годов компания Microsoft выпустила расширенную компонентную модель - DCOM ( Distributed СОМ ). Эта модель не являлась альтернативой или дополнением модели СОМ - в действительности она была лишь сетевым протоколом, определяющим способ взаимодействия СОМ -объектов различных компьютеров. Компания OMG также представила сетевой протокол, получивший название IIOP (Inter-ORB Protocol), который был разработан с целью обеспечения возможности совместной работы в Интернете отдельных объектов ORB CORBA.

    Эти стандарты позволили приложению, запущенному на одном компьютере, использовать код, расположенный на другом компьютере. Но поскольку оба указанных стандарта являлись потомками стандартов разработки настольных приложений, они имели несколько уровней сложности, затрудняющих их применение (в частности, модель DCOM за это часто критиковали). Опытные разработчики считают, что эти протоколы сыграли положительную роль, обеспечив возможность создавать приложения, которые могут выполняться распределено на нескольких рабочих станциях, тем самым позволив подняться от разработки клиент-серверного программного обеспечения до так называемых 3-уровневых и n-уровневых приложений.

    Совместное использование кода в различных сетях

    К сожалению, ни COM/DCOM, ни CORBA/IIOP не функционировали должным образом в рамках Интернета. В частности, потому, что оба этих стандарта являются взаимно исключающими. Серверы DCOM могут взаимодействовать только с клиентами DCOM, стандарты CORBA и IIOP также имеют некоторые недостатки. Сфера применения DCOM ограничена компьютерами, оснащенными операционной системой Microsoft Windows. Модель CORBA, подобно СОМ, является сложным стандартом, не предназначенным для работы через брандмауэры. Таким образом, помимо необходимости адаптировать модели СОМ и CORBA для использования в сетевой среде, требовалось создать простые программные средства разработки распределенных приложений в сети Web.

    Модель COM/DCOM

    DCOM - это сетевой протокол, основанный на стандарте распределенной среды обработки DCE (Distributed Computing Environment). Достоинством протокола DCOM является используемая модель программирования. Этот протокол позволяет разработчикам применять СОМ - объекты на удаленном компьютере точно так же, как и на локальном (рис. 12.1). DCOM просто переносит локальную межпроцессную связь с помощью сетевого протокола. Вызов становится несколько более медленным, но ни клиенту, ни компоненту нет необходимости знать, что связь между ними осуществляется по сети. На рис. 12.1 показан многоуровневый протокол, позволяющий модели СОМ работать через сеть.

    (рис 12.1) Архитектура COM/DCOM

    К сожалению, модель COM/DCOM не подходит для работы в распределенных сетях.

    Применить DCОМ в сети приводит к большим издержкам из-за возникновения помех и большого количества отложенных сообщений. Очевидно, что применять DCОМ в сети Интернет тем более не имеет смысла, поскольку по мере роста числа клиентов в сети объем сетевого трафика увеличивается и необходимость обрабатывать большое количество запросов наносит серьезный вред всей системе. Таким образом, разработчики пришли к выводу, что протокол DCOM является принципиально не масштабируемым для обслуживания большого числа клиентов. Кроме того, указанные ограничения делают невозможным использование DCOM -компонента в случае ненадежной или периодически устанавливаемой связи.

    Стандарт CORBA/IIOP

    Модель CORBA является общим стандартом для создания брокеров объектных запросов ORB (Object Request Broker). Брокеры ORB служат для тех же целей, что и компоненты СОМ на платформе Microsoft, - они обеспечивают взаимодействие объектов. С появлением CORBA большинство разработчиков рассчитывали на то, что распределенная среда компьютерной обработки DCE (Distributed Computing Environment) станет основным сетевым протоколом, как это было с DCOM. Вместо этого был создан протокол IIOP, который определял способ коммуникации брокеров ORB по сети. Различные коммуникационные уровни в системе, основанной на CORBA, показаны на рис. 12.2.

    По многим параметрам CORBA кажется идеальным средством для работы с распределенными объектами. Об этом свидетельствует, в частности, тот факт, что данная технология поддерживается внушительной группой разработчиков, включающей более 500 компаний-партнеров. Но все они и несут ответственность за снижение интереса к модели CORBA. Имеется множество реализаций CORBA, и все они обладают своими особенностями. Не существует коммерческих брокеров ORB, получивших столь широкое распространение, как компоненты СОМ компании Microsoft, и имеющих такую же, как у них, производительность.

    (рис 12.2) Архитектура CORBA/IIОР

    Стандарт Java RMI

    Протокол CORBA быстро теряет репутацию, становясь все более сложным и неудобным для программирования. Частично в ответ на это компания Sun создала свой собственный механизм ORB, названный RMI (Remote Method Invocation - удаленный вызов метода). Данный механизм особенно эффективен при программировании на Java, поскольку прекрасно интегрируется с ним. Однако подобное интегрирование также является и недостатком. Работа RMI зависит от многих уникальных особенностей языка Java, ни одна из которых не поддерживается популярными языками наподобие C++. Фактически RMI - не конкурент даже CORBA.

    Недостатки существующих стандартов

    Несмотря на имеющиеся различия, технологии COM/DCOM и CORBA/IIOP обладают рядом общих ограничений:

  • Ориентирование на двоичную связь

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

  • Проблемы масштабирования

    С помощью СОМ и CORBA можно спроектировать компоненты, способные взаимодействовать с сотнями клиентов так же легко, как и с десятками. Однако это требует от программистов огромного опыта и дисциплины. Типичный компонент того не стоит.

  • Зависимость от платформы или языка программирования

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

  • Сложность

    Стандарты СОМ и CORBA включают множество встроенных средств, таких как транзакции, инструменты безопасности и шифрования, что повышает вероятность возникновения проблем, связанных, в частности, с несовместимостью и дополнительными затратами. В настоящее время протоколы web-служб не предоставляют и не специфицируют инструменты API для указанных высокоуровневых служб. Этот факт значительно упрощает их реализацию, но означает, что в случае необходимости вам придется самостоятельно разрабатывать такие средства.

  • Отсутствие универсального стандарта для представления данных

    Рассматривая историю развития совместного использования программного кода в сетях, мы оставили без внимания такой важный вопрос разработки, как эволюция универсального стандарта для кодирования информации. Это объясняется тем, что в то время, когда создавались технологии СОМ и CORBA, стандарта для совместного использования структурированных данных не существовало. И лишь позднее появились такие стандарты, как SGML, XML и SOAP, предназначенные непосредственно для представления типов данных.

    Несмотря на все выше сказанное технологии СОМ и CORBA по-прежнему широко используются. Конечно, у них есть свои недостатки, но они отнюдь не потеряли еще своей работоспособности. В некоторых отношениях они не способны конкурировать с web-службами, но могут стать идеальным инструментом для реализации распределенных компонентов в гетерогенной сетевой среде.

  • Достоинства web-служб .NET

    Web-службы были разработаны с целью преодоления ограничений описанных выше технологий. С помощью .NET компания Microsoft надеется построить более совершенную структуру программирования для создания и предоставления web-услуг.

    Web-службы .NET отличаются от существующих технологий создания распределенных приложений следующими характеристиками.

  • Открытость стандартов

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

  • Межплатформенность

    Язык программирования, который позволяет создавать XML-документы и отправлять информацию посредством HTTP, позволяет взаимодействовать с любой web-службой. Вы можете получить web-услугу из системы, отличной от .NET. Самое приятное то, что вам никогда не придется ориентироваться на определенный "уровень совместимости" - web-службы .NET изначально встроены в открытые стандарты.

  • Простота

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

  • Поддержка сообщений на понятном человеку языке

    Переход от двоичных стандартов, применяемых в СОМ и CORBA, к XML-тексту позволил упростить исправление ошибок и обеспечил возможность осуществлять взаимодействие с web-службами по обычным каналам HTTP, без усилий отправляя сообщения через брандмауэры. Но такое изменение привело к нескольким потенциальным неудобствам. Один из недостатков состоит в том, что сообщения web-службы требуют большего количества байтов для передачи одного и того же объема информации.

  • Архитектура web-служб .NET

    Реализация web-служб .NET осуществляется так же просто, как и активизация удаленной web-службы или вызов метода локального класса. Это достигается за счет применения инструментов, предоставляемых системой .NET Framework, которые позволяют создать полноценную web-службу, не вникая в детали работы таких стандартов, как SOAP и WSDL. Порядок действий при этом подобен приведенному ниже (обратите внимание, что этапы 1, 3, 5 и 8 выполняются вручную).

  • Вы разрабатываете web-службу как .NET -класс с атрибутами, которые идентифицируют его как web-службу с некоторыми функциями.
  • В среде .NET автоматически создается документ WSDL, где описывается, как клиент должен взаимодействовать с web-службой.
  • Потребитель находит вашу web-службу и, решив воспользоваться ею, добавляет соответствующую web-ссылку в проект Visual Studio .NET (или запускает утилиту wsdl.exe).
  • В среде .NET осуществляется автоматическая проверка документа WSDL и генерируется прокси-класс, который позволяет потребителю взаимодействовать с web-службой.
  • Потребитель вызывает один из методов вашего класса web-службы. С его точки зрения этот вызов не отличается от вызова метода любого другого класса, но в действительности потребитель взаимодействует с прокси-классом, а не с web-службой.
  • Прокси-класс преобразует, переданные параметры в сообщение SOAP и отправляет его web-службе.
  • Вскоре прокси-класс получает SOAP -ответ, преобразует таковой в соответствующий тип данных и возвращает его как обычный тип данных .NET.
  • Потребитель использует возвращенную ему информацию.
  • Описанный процесс схематически показан на рис.12.3.

    (рис 12.3) Взаимодействие с web-службой

    При работе web-служб .NET используется технология ASP .NET, являющаяся частью системы .NET Framework. Она также требует поддержки со стороны сервера Microsoft IIS (Internet Information Server). Среда Visual Studio .NET обеспечивает большое количество инструментов, которые помогают облегчить решение задач, связанных с получением и выполнением web-службы.

    Базовые технологии

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

    Работа web-служб построена на использовании различных открытых стандартов, которые описаны в таблице.

    Технология Назначение
    WSDL Основанный на XML формат описания web-службы, ее методов, типов данных параметров и возвращаемого значения, а также поддерживаемых методов коммуникации
    HTTP Коммуникационный протокол, служащий для отправки запросов web-службе через Интернет. (Кроме того, это распространенный стандарт, применяемый для передачи web-страниц web-браузеру)
    SOAP Основанный на XML формат кодирования информации в запросе, посылаемом web-службе, и ответном сообщении для отправки таковых через Интернет. Например, SOAP определяет способы представления величин различных типов данных
    DISCO Необязательная спецификация Microsoft, позволяющая клиентам находить требуемые web-службы. DISCO-файл является, по сути, несистематизированным списком связей с web-службами. В настоящее время вытесняется стандартом WS-Inspection.
    UDDI Каталог, который позволяет клиентам находить web-службы, предоставляемые конкретной компанией. UDDI является самым молодым среди стандартов web-служб

    WSDL представляет собой стандарт, разработанный только для web-служб .NET. С целью обеспечения совместимости с другими платформами. При создании web-служб рекомендуется использовать формат SOAP, но допускается также применять методы POST и GET протокола HTTP. Спецификации DISCO и UDDI представляют собой необязательные расширения, которые облегчают публикацию и поиск информации о web-службах. Однако на сегодняшний день наиболее логичным способом передачи информации является HTTP -коммуникация, и нет смысла от нее отказываться.

    К числу менее распространенных стандартов, используемых при создании web-служб, относится WS-Inspection - спецификация для поиска документов, в которых перечислены группы web-служб и их местонахождение. Эта спецификация была разработана совместными усилиями компаний Microsoft и IBM и предназначалась для замены протокола DISCO.

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

    Спецификация WSDL

    Каждая web-служба предоставляет документ WSDL (Web Service Description Language - язык описания web-службы), в котором описывается все, что клиенту необходимо знать об этой службе. WSDL -документ служит тем же целям, что и файл IDL (Interface Definition Language - язык определения интерфейса) для компонента CORBA или СОМ: он определяет интерфейс web-службы. Указанный документ, по сути, представляет собой контракт между клиентом и web-службой, где декларируется, что "если вы вызовете такой-то метод с такими-то параметрами, то в качестве возвращаемой величины получите такие-то данные".

    Во многих отношениях web-службы даже проще, чем создаваемые для CORBA или СОМ компоненты. Например, в web-службах отсутствует возможность поддержки нескольких интерфейсов - каждый класс web-службы обеспечивает только один набор открытых ( public ) методов. С другой стороны, документ WSDL немного сложнее своего IDL -эквивалента, поскольку он является платформонезависимым и поддерживает коммуникационные протоколы, отличные от SOAP и HTTP. Это означает, что каждый WSDL -файл для web-службы .NET содержит значительный объем стереотипного кода, служащего для обеспечения поддержки базового уровня коммуникации (в соответствии с протоколом SOAP или методами GET и POST протокола HTTP ).

    ПРИМЕЧАНИЕ

    В процессе .NET -программирования нет необходимости создавать свой собственный WSDL -документ. Каждая web-служба .NET генерирует такой документ автоматически. Его можно увидеть с помощью поддерживающего XML браузера.

    Некоторые разработчики утверждают, что стандарт WSDL для web-служб не нужен, поскольку сообщения SOAP являются самодостаточными и точно специфицируют типы данных любых содержащихся в них величин. Однако WSDL -документ предоставляет простой и последовательный способ задания разработчиком синтаксиса вызова любого web-метода. Более того, этот документ позволяет использовать инструменты автоматического генерирования прокси-классов, подобные включенным в среды Visual Studio .NET и .NET Framework. Благодаря указанным средствам использование web-службы является таким же простым, как и применение локального класса.

    WSDL -документ имеет основанный на XML формат, в соответствии с которым информация подразделяется на пять групп. Первые три группы представляют собой абстрактные определения, не зависящие от особенностей платформы, сети или языка, а оставшиеся две группы включают конкретные описания.

    Протокол 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, придется, очевидно, вручную сконструировать строку запроса, а затем вручную провести синтаксический разбор ответа, что, согласитесь, является не самым элегантным решением.

    Стандарт DISCO

    Стандарт DISCO предоставляет простейший способ получения доступа к файлам манифестов, позволяющий группировать ссылки на web-службы. Поскольку основной целью web-служб является обеспечение В2В-взаимодействия, требуется такой инструмент, который давал бы возможность не только создавать полезные функции, но и использовать их совместно с другими организациями. Информация о коммуникации с единственной web-службой может быть достаточно простой, но если у вас имеется сложная комбинация web-служб, которые расположены в различных приложениях ASP .NET и предназначены для различных клиентов, намного сложнее уследить за тем, чтобы клиенты получили требуемую информацию.

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

    Технология DISCO позволяет избежать данных проблем. DISCO -файл - это не просто список web-служб и соответствующих связей, представленных в XML-формате. Такой файл может включать файлы различных web-серверов и поддерживает "динамический поиск" - автоматический поиск каталога файлов web-службы на сервере. Инструменты .NET, например Visual Studio .NET, содержат средства обработки файлов манифестов и предоставляют простой способ их просмотра, а также обеспечивают подключение группы связанных служб к клиенту.

    Чтобы использовать web-службу, клиенту необходимо знать адрес web-узла соответствующей компании либо адрес URL файла манифеста. Файлы манифеста полезны тем, что объединяют множество web-служб в единственном списке, однако они не позволяют клиентам отыскивать web-службы определенного типа без указания наименования компании-разработчика.

    Спецификация UDDI

    Спецификация ), включая основных конкурентов - Sun и Microsoft. Объединив свои усилия, эти компании разработали проект спецификации UDDI, которая по истечении 18 месяцев была стандартизирована. Конечно, информация в подобном репозитории должна обновляться вручную. С этой целью некоторые "узловые операторы" хранят идентичные копии репозитория UDDI. Эти компании обеспечивают хранение указанного репозитория и бесплатный доступ к нему для популяризации web-служб. Кроме того, Microsoft включила версию UDDI в программное обеспечение сервера Windows .NET для использования в корпоративных сетях интранета.

    В хранилище UDDI содержатся сведения о предприятиях, предоставляющих web-службы, о типе каждой службы и связях с информацией и спецификациями, относящимися к этим службам. Любопытным фактом является то, что интерфейс UDDI сам по себе представляет собой web-службу. Для регистрации или поиска службы следует отправить SOAP -сообщение.

    Web-службы конкурирующих фирм-производителей

    Microsoft - не единственный разработчик инструментов реализации web-служб. В настоящее время существуют инструменты создания web-служб для разнообразных языков и платформ. Некоторые из них перечислены ниже.

  • Компания IBM предоставляет набор средств разработки Web Service Developinent Kit, содержащий среду выполнения и многочисленные примеры.
  • Компания Oracle предлагает специальный язык для разработки web-служб Web Integration Development Language, а также собственные web-службы.
  • Компания Sun Microsystems предоставляет среду Sun ONE (Open Net Environment), поддерживающую web-службы, написанные на языке Java.
  • Набор SOAP Toolkit от Microsoft позволяет вызывать web-службы из программных продуктов, созданных в предыдущих версиях Microsoft Visual Studio (и написанных на таких языках, как Visual Basic и C++ ).
  • Программа Internet Explorer версии 5 и более поздних дает возможность вызывать web-службы с web-страниц посредством простого сценарного кода. Эта технология носит название WebService Behavior.
  • Язык Perl включает набор инструментов SOAP::Lite для работы с базовыми функциями SOAP.
  • Другие технологии

    .NET MyServices

    .NET MyServices (первоначальное название - Hailstorm) представляет собой ориентированный на пользователя набор web-служб, разработанных компанией Microsoft. MyServices находится на вершине структуры .NET Framework и предназначен для предоставления некоторых основных функций, к которым приложения будут получать доступ, чтобы совместно использовать пользовательскую информацию.

    Службы .NET MyServices выполняют такие функции, как сопровождение информации, поддержка аутентификации, а также выдача уведомлений для отдельных пользователей. Хотя названные службы ориентированы на конечных пользователей, однако таковые не взаимодействуют с ними напрямую, как это происходит в случае обычных web-служб. К данным службам для получения базовой информации и высокоуровневых функций обращаются приложения. Большинство служб .NET MyServices являются стандартизированным интерфейсом web-служб онлайнового хранилища данных. К таким данным может относиться все что угодно, от бизнес- календаря с указанием дат встреч до финансовых отчетов.

    Первоначально компания Microsoft планировала хранить все наборы служебных пользовательских данных для MyServices на своих серверах. Потенциальные партнеры, однако, скептически отнеслись к такому способу размещения информации и потребовали предоставления возможности выбора места хранения своих данных. Поэтому было принято решение о том, что MyServices будет позволять организациям самостоятельно поддерживать свои службы MyServices и собственные (возможно, связанные) хранилища данных.

    В настоящее время самой известной (и наиболее важной) частью .NET MyServices является система аутентификации Passport, которая разрабатывалась для сервера Hotmail и предназначалась для проверки паролей доступа к электронной почте. Позднее Passport превратилась в полноценную web-службу и сегодня используется многими компаниями для аутентификации своих клиентов. Данная система также доступна для потребительских web-узлов через систему ASP .NET Framework и может использоваться в качестве простого средства для идентификации пользователей.

    .NET Remoting

    .NET Remoting - это технология распределенных компонентов, заменившая модель DCOM в среде .NET. Она остается идеальным средством во многих ситуациях, когда web-службы .NET оказываются неподходящими, в частности применяется при работе приложений, требующих совместного использования больших объемов информации либо при необходимости сокращения времени ответа. Однако в отличие от web-служб технология .NET Remoting разрабатывалась не с целью совместного использования и публикации служб (таких как DISCO -файлы и UDDI ) несколькими компаниями.

    Сегодня .NET Remoting представляет собой расширяемую технологию, которая способна поддерживать различные протоколы передачи данных, в том числе HTTP и SOAP. Таким образом, данная технология могла бы составить конкуренцию web-службам, если бы не тот факт, что .NET Remoting не поддерживает UDDI и в ней используется специальный .NET -ориентированный формат сериализации.

    Технология .NET Remoting может оказаться полезной лишь при необходимости создать распределенную систему, которая работает в довольно гомогенной (однородной) среде и не требует взаимодействия с множеством клиентов. Иными словами, эта технология больше подходит для внутрикорпоративных решений и в меньшей степени - для основанной на стандартах разработки, требующей совместимости с большим количеством проектов других организаций. Технология .NET Remoting используется в локальной сети компании или при работе с группой постоянных клиентов в Интернете. В отличие от web-служб .NET, для хост-компонентов .NET Remoting не требуется наличия ASP .NET или IIS.

    XML-RPC

    XML-RPC - это простой, но довольно распространенный протокол, который является предшественником протокола SOAP и web-служб .NET. Протокол RPC (Remote Procedure Call - вызов удаленной процедуры) обеспечивает вызовы удаленных процедур путем отправки запросов в виде XML-документов и получение ответа в другом XML-документе. Таким же образом работает и web-служба .NET, но для связи с ней необходим протокол SOAP.

    Протокол XML-RPC имеет некоторые ограничения, главным из которых является отсутствие поддержки типов данных. Технология web-служб .NET вобрала в себя лучшее качество XML-RPC, то есть тот факт, что программы могут взаимодействовать, если они обмениваются сообщениями, имеющими стандартный согласованный формат. Кроме того, при разработке web-служб .NET были учтены потребности промышленности в необходимости кросс -платформенного представления данных различных типов.

    Система обмена сообщениями

    Microsoft, Sun и многие другие компании предоставляют системы обмена сообщениями, которые допускают коммуникацию типа "store-and-forward" (сохранение и отправка далее). Такая модель не подходит для ситуаций, когда требуется немедленный ответ, но применима в случае односторонней связи наподобие регистрации. Серверные программные средства обмена сообщениями, например MSMQ (Microsoft Message Queuing - организация очередей сообщений), обеспечивают богатый набор функций, включая транзакции, и оказываются скорее помощниками, чем конкурентами web-служб. Однако web-службы относятся к числу более распространенных технологий и могут рассматриваться в качестве более простой модели для реализации удаленных вызовов функций, а не только односторонних сообщений. Кроме того, web-службы поддерживают асинхронный режим работы.

    Сервер BizTalk

    Сервер .

    При ближайшем рассмотрении сервер BizTalk оказывается, по сути, хостом для дополнительных высокоуровневых служб, которые разработчик может использовать для интегрирования бизнес-процессов. Например, с помощью сервера BizTalk можно создавать интерфейсы, позволяющие различным процессам взаимодействовать друг с другом даже тогда, когда для работы одного процесса требуются данные в формате, отличном от предоставляемого другим. Вы можете также конфигурировать длительные распределенные транзакции, проектировать рабочий поток документов с использованием визуальных средств проектирования, предписывать правила ведения бизнеса, а также обмениваться сообщениями в формате SOAP. Чтобы описать возможности сервера BizTalk, требуется отдельная книга, но он представляет интерес, главным образом, для разработчиков, которые проектируют программное обеспечение для В2В -взаимодействия.

    Вернуться к учебному плану