Как без опасений делиться информацией о Web-службах

Универсальный протокол описания, обнаружения и интеграции UDDI (Universal Description, Discovery and Integration protocol) обеспечивает широкую стандартизированную инфраструктуру, позволяющую описывать и обнаруживать Web-службы. Реестр UDDI представляет собой Web-службу на базе протокола SOAP (Simple Object Access Protocol), которая отыскивает в сети Web-службы и программируемые ресурсы. UDDI — своего рода фундамент, на его основе разработчики и администраторы могут спокойно предоставлять третьим лицам информацию о Web-службах.

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

Разработчики Microsoft поняли, что предприятия возьмут на вооружение технологию UDDI гораздо быстрее, нежели пользователи, занятые в сфере организации отношений между отдельными компаниями (business-to-business, B2B). Поэтому в систему Windows Server 2003 была включена служба UDDI Services, которая позволяет компаниям организовывать в закрытых корпоративных сетях частные UDDI-службы. Таким образом, эти компании получают доступ к широким возможностям UDDI и при этом могут не беспокоиться об обеспечении конфиденциальности своих данных.

Реализация UDDI Services в системе Windows 2003

UDDI Services — это управляемое с помощью базы данных приложение ASP.NET, оснащенное как традиционным пользовательским интерфейсом, так и интерфейсом Web-службы. Специалисты Microsoft разработали интерфейс пользователя для выполнения таких операций, как поиск Web-служб, поиск поставщиков Web-служб и ввод вручную метаданных Web-служб. Интерфейс Web-службы, в котором полностью реализованы интерфейсы прикладного программирования UDDI 1.0 и UDDI 2.0, используется в процессе исполнения для решения таких задач, как формирование запросов к реестру и регистрация Web-служб программными средствами. База данных реализуется либо в виде Microsoft SQL Server 2000, либо в виде Microsoft Desktop Engine (MSDE). К слову, ответ на вопрос о том, какую из этих баз следует использовать, можно получить, ознакомившись с врезкой «SQL Server или MSDE?». Кроме того, в состав пакета UDDI Services входит административная консоль — UDDI Services Console. Она состоит из оснастки консоли Microsoft Management Console (MMC) и набора средств командной строки, которые обеспечивают администрирование локальными или удаленными узлами UDDI Services и резервирование содержимого базы данных.

Перед установкой UDDI Services

При развертывании UDDI Services в качестве автономной службы и Web-приложение, и база данных устанавливаются на одном компьютере, где выполняется одна из операционных систем семейства Windows 2003. База данных находится на сервере SQL Server 2000 или в локальном экземпляре MSDE, а Web-приложение затем подключается к этому экземпляру. Как правило, разработчики предпочитают устанавливать службу на своих рабочих станциях или на серверах в автономном варианте. Когда число пользователей ограничено, это просто безупречное решение. Однако при развертывании службы в масштабах всего предприятия Microsoft рекомендует вариант распределенной установки. Таким образом обеспечивается максимальная отказоустойчивость и управляемость, поскольку каждый компонент UDDI Services размещается на отдельном сервере, в серверном кластере или в пуле Web-серверов. Конкретный вариант распределения по разным системам компонентов UDDI Services зависит от того, каким образом решается проблема балансировки нагрузки. MSDE не комплектуется средствами администрирования и не обеспечивает возможности связи по сети. По этой причине MSDE можно использовать только при развертывании UDDI Services автономно. Распределенная установка возможна только в средах Windows 2003, Enterprise Edition или Windows 2003, Datacenter Edition (эти версии обеспечивают также автономные установки). Если же вы работаете с Windows 2003, Standard Edition, то сможете установить службу UDDI Services лишь в автономном варианте.

Установка UDDI Services

Чтобы установить службу UDDI Services, нужно открыть окно оснастки Add/Remove Programs панели управления. Щелчком на значке Add/Remove Windows Components следует запустить мастер Windows Components Wizard. Затем необходимо перейти в нижнюю часть списка переключателей и выбрать элемент UDDI Services. Щелкните на кнопке Next. Если на системе еще не установлен сервер Microsoft IIS, мастер установит IIS и настроит приложение ASP.NET. Далее требуется выполнить следующие операции.

  • Выбрать или создать экземпляр локальной базы данных для базы данных UDDI Services, как показано на экране 1.
Экран 1. Указание базы данных репозитария UDDI Services
  • Определить, потребуется ли вам протокол SSL (Secure Sockets Layer), который применяется только к запросам на публикацию. SSL обеспечивает более надежную аутентификацию в процессе обновления базы данных UDDI. Если планируется использовать протокол SSL, следует получить сертификат SSL до начала эксплуатации службы UDDI Services.
  • Подтвердить предложенный системой каталог для хранения файлов устанавливаемой базы данных или предложить для них иное местоположение. По умолчанию эти файлы записываются в каталог C:Inetpubuddidata.
  • Ввести учетные данные для использования службы UDDI Services, как показано на экране 2. Можно воспользоваться учетной записью службы Network Service либо доменной учетной записью. Пользователи с учетной записью Network Service получают минимальный объем прав, необходимых для выполнения Web-приложений. Зато эта учетная запись обеспечивает максимальную защиту от посягательств хакеров.
Экран 2. Задание учетных данных службы UDDI Services
  • Указать имя узла UDDI Services. Узел — это коллекция Web-серверов, на которых выполняется служба UDDI Services.
  • Зарегистрировать имеющиеся интерфейсы сайта. Установите флажок Self-register в следующем окне, как показано на экране 3. Если в одном узле UDDI Services разворачивается несколько Web-серверов, устанавливать этот флажок нужно только для одного из Web-серверов, поскольку это действие переопределит установки всех остальных Web-серверов узла UDDI Services.
Экран 3. Регистрация имеющихся интерфейсов

Заметки об установке

При установке сервера IIS с применением стандартных параметров использование любых Web-расширений (таких, как активные серверные страницы Active Server Pages-ASP, ASP.NET) исключается. После запуска процедуры установки UDDI Services мастер, как показано на экране 4, предоставляет возможность использования Web-расширения ASP.NET v1.1.4322. Если вы наложите запрет на использование этого Web-расширения, то не сможете обращаться к службе UDDI Services.

Экран 4. Web-расширение ASP.NET v1.1.4322

Если вы хотите разместить компоненты базы данных UDDI Services на сервере SQL Server 2000, нужно либо установить это приложение на своей машине, либо указать на уже существующий экземпляр приложения, установленный на другой машине. Без этого установка компонентов UDDI Services невозможна. Как мы видим на экране 1, пользовательский интерфейс мастера установки UDDI Services не дает возможности выбрать вариант с SQL Server; этот интерфейс позволяет лишь определить, какая из баз — SQL Server или MSDE — установлена на данной машине, а затем пользователь получает возможность установить экземпляр MSDE. Чтобы изменить эту стандартную настройку, в консоли MMC следует открыть окно оснастки UDDI Services, найти созданный вами узел, раскрыть список серверов и правой клавишей мыши щелкнуть на нужном сервере. Затем в открывшемся окне Properties требуется выбрать закладку Database Connection, после чего щелкнуть на кнопке Change, чтобы задать другую базу данных для использования службой UDDI Services.

Регистрация Web-служб XML

Итак, служба UDDI Services установлена. Но перед тем как приступить к ее использованию, необходимо опубликовать в реестре UDDI Web-службу XML. А для этого требуется иметь некоторое представление о том, как в UDDI организована классификация организаций и служб.

В UDDI Services предусмотрено шесть основных объектов (entities). В скобках указаны связанные с ними имена спецификаций UDDI.

Provider (businessEntity): лицо, группа лиц или организация, предлагающие одну или несколько Web-служб XML.

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

Service (businessService): Web-служба XML.

Binding (bindingTemplate): точка доступа (Access Point, AP) или указатель URL для Web-службы XML.

Instance Info (tModelInstanceInfo): ссылка на tModel, содержащую соответствующую техническую информацию о связывании.

tModel (tModel): техническая информация об интерфейсе, например файл на языке Web Service Description Language (WSDL), описывающий соглашения, поддерживаемые интерфейсом. tModel может также представлять организованную единицу описательных данных, например схему идентификации или категоризации.

Экран 5. Иерархия объектов UDDI Services

Объект Provider располагается на самой верхней ступеньке, представляющей объекты данных иерархии UDDI Services. Следующую ступеньку занимают объекты Contact (применяются по усмотрению администратора) и Service. Каждому объекту Service соответствует объект Binding, а каждому объекту Binding может соответствовать объект Instance Information, который, в сущности, представляет собой указатель на объект tModel, как показано на экране 5.

В демонстрационных целях я подготовил тестовое приложение на базе Web-службы, которое можно использовать при регистрации экземпляра UDDI Services (см. листинг 1). Речь идет о простенькой Web-службе: при вызове она возвращает строку Hello World. Нужно просто создать на своей машине виртуальный каталог и указать для него расположение файлов Web-службы Hello World.

Публикация Web-службы XML

Для публикации Web-службы XML в UDDI Services необходимо выполнить следующие операции.

  • Создать объект Provider, в котором вы сможете публиковать свою службу.
  • Ввести информацию о Web-службе XML, например имя Web-службы и категории (такие, как географическое положение). В соответствии с указанными категориями будет осуществляться классификация Web-службы.
  • Добавить к Web-службе объект Binding, состоящий из точки доступа (URL) и описания. Например, для Web-службы Hello World следует ввести строку http://localhost/webservice1/service1.asmx?op=helloworld.
  • Если для Web-службы вы подготовили файл WSDL, можно при желании добавить его в качестве объекта tModel, а затем добавить новый объект tModel в качестве объекта Instance Information, относящегося к объекту Binding. В нашем примере со службой Hello World объект tModel будет иметь значение http://localhost/webservice1/service1.asmx?wsdl.

Перечисленные выше операции можно выполнить с помощью Web-приложения UDDI Services (http://servername/uddi) или программно, направляя вызовы Web-служб на сервер UDDI Services. В листинге 2 представлено примерное консольное приложение на языке C#, которое регистрирует Web-службу в экземпляре UDDI Services с помощью программного комплекта разработчика Microsoft UDDI .NET software development kit (SDK) версии 1.76 (http://download.microsoft.com/download/ visualstudionet/patch/v.1.76/w98xp/enus/ uddisdksetup.msi). Нужно иметь в виду, что комплект требуется предварительно установить для компиляции и запуска кода. В состав программы входит пакетный файл UddiDemoPublisherBuild.bat, который компилирует код в исполняемую программу UddiDemoPublisher.exe. Консольное приложение предложит ввести UDDI-имя машины, имя пользователя и пароль для выполнения процедуры аутентификации в службе UDDI Services. После этого приложение запросит имя провайдера (организации), имя, которое планируется дать Web-службе, и ее URL. Получив необходимые данные, программа создаст в базе данных UDDI Services запись для Web-службы. Этот код показывает, с какой легкостью комплект UDDI .NET SDK позволяет автоматически регистрировать Web-службы.

Интеграция с Visual Studio .NET

После того как данные о Web-службе будут опубликованы в службе UDDI Services, можно воспользоваться преимуществом, которое дает ее интеграция с Visual Studio .NET. После ввода вместе с Web-службой файла WSDL вы сможете обращаться к своей Web-службе из Visual Studio .NET. Делается это так же, как при обращении к другим Web-службам в Visual Studio .NET, — с помощью мастера Add Web Reference Wizard. Следует ввести строку http://имя_вашего_ UDDI_сервера/uddi/addwebreference, после чего на экране появится средство поиска UDDI Services в окне Visual Studio .NET Wizard, как показано на экране 6. Обнаружив свою Web-службу среди результатов поиска, необходимо щелкнуть на ней, а затем щелкнуть на соответствующем определении интерфейса данной службы. В левой панели появится файл WSDL и можно будет щелкнуть на кнопке Add Reference в правой панели.

Публикуйте файлы WSDL

Хотя Microsoft и не выдвигает такого требования, я настоятельно рекомендую публиковать все файлы WSDL для Web-служб как объекты tModel. Если в наличии имеется несколько Web-служб, использующих один и тот же интерфейс (скажем, WSDL), все они могут повторно использовать один и тот же объект Instance Info tModel. Вот здесь-то и проявляется мощь UDDI. Зарегистрировав один файл WSDL, который может быть реализован одной или несколькими Web-службами, вы получаете возможность обращаться на этапе исполнения к ряду полезных функций, таких как средства предотвращения сбоев Web-служб, агрегирование Web-служб и полиморфизм.

Следующие шаги

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


SQL Server или MSDE?

При установке UDDI Services в распределенном варианте в качестве базы данных можно использовать лишь Microsoft SQL Server 2000. Если UDDI Services устанавливается как автономная служба, предстоит решить, какую базу данных использовать — SQL Server или Microsoft Desktop Engine (MSDE). Выбор будет определяться тем, какое количество пользователей предстоит обслуживать одновременно. Реализованный в MSDE диспетчер управляемой параллельной нагрузки обеспечивает обслуживание лишь пяти параллельных задач с обычной скоростью; скорость обменов по всем последующим соединениям существенно снижается. Поэтому для обслуживания базы данных UDDI я рекомендую задействовать SQL Server 2000. Эту систему нужно заранее установить на той же машине, что и UDDI Services, иначе еще до того, как вы сможете установить UDDI Services, вы должны иметь возможность указывать на существующий экземпляр SQL Server 2000, установленный на другом компьютере.