Использование XML и Java для разработки Web-сервисов

Добавлено : 28 Dec 2008, 18:24

Технология Java предоставляет надежную, широко распространенную, независимую от операционной системы платформу, позволяющую быстро создавать и запускать Web-сервисы. Основой Web-сервисов является воплощенное в платформе J2EE, открытое, часто используемое решение, которое согласуется с существующими системами и предоставляет новые динамичные сервисы с ключевыми технологиями, такими как Enterprise JavaBeansTM, JavaServer PagesTM, сервлеты, поддержка XML.

Одна из главных задач, стоящих перед разработчиками, состоит в использовании преимуществ существующих моделей Web-сервисов, сохраняя при этом возможность для перехода к следующему поколению открытых интеллектуальных слабосвязанных контекстных "умных" Web-сервисов. XML и технология JavaTM идеально приспособлены для этого: XML – открытый и универсальный язык обмена данными, Java – отраслевой стандарт расширяемой межплатформенной службы доставки.

Web-сервисы сегодня

Современная модель Web-сервисов приносит предпринимателям солидные доходы и предоставляет широкие возможности на рынке. Однако, сегодняшний подход упускает большие возможности, которые сервисы могли бы предоставить, если бы были в состоянии работать одновременно с разными сетями, такими как GPS, телефонные линии и сети, основанные на протоколе IP.

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

Основные компоненты и протоколы

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

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

  • Интерфейс сервиса. Интерфейс сервиса реализует API для соединений, передачи сообщений. Реализует протоколы, преобразует и моделирует данные для требуемого устройства, а также объединяет, персонализирует, регистрирует и локализует содержимое.

  • Контейнер сервиса. Контейнер сервиса реализует программное окружение, функции персистентности и осуществляет управление состоянием.

  • Платформа сервиса. Платформой сервиса является система или оборудование, на которых она работает. Функции платформы включают в себя доступ к БД, службы обмена сообщениями, службы каталога, виртуальные машины, операционные системы, аппаратные интерфейсы и память.

  • Бизнес-логика. Бизнес-логика – это программный код, реализующий бизнес-операции.

  • Интеграция сервиса. К функциям интеграции сервиса относятся: объединение других сетевых сервисов, действующих систем, а так же служб инфраструктуры, таких как базы данных, файлы и директории.


Рис.1 Основные компоненты современных сетевых сервисов

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

  • Открытие – Открывает другие службы с помощью регистрационных форм и архивов (репозиториев) ebXML и/или UDDI (Проект "Универсальное обнаружение и интеграция описаний").

  • Создание – Создает XML-контент и формирует бизнес-логику.

  • Преобразование – Преобразовывает данные в формат XML, Java или SQL приложения.

  • Конструирование – Помещает компоненты в интерфейс XML сообщений, используя службу пересылки сообщений ebXML или SOAP (простой протокол доступа к объектам).

  • Развертывание – Передает сервис механизму размещения сервисов.

  • Тестирование – Локально или удаленно тестирует приложения.

  • Публикация – Размещает сервисы в ebXML или UDDI.

XML: лингва-франка сетевых сервисов

Языком обмена данных, лежащим в основе практически всех компонентов Web-сервисов, протоколов и API, на сегодняшний день является XML. В отличие от ASCII или HTML, структура и иерархия XML дают возможность отобразить его в виде дерева или представить данные в удобной для приложения форме, кроме того, данные находятся в текстовом формате, что позволяет легко их читать как человеку, так и поисковой машине.

XML не зависит от платформы и, таким образом, идеален в сочетании с технологией Java для разработки сетевых приложений. Технология Java предоставляет переносимую и независимую от платформы программную среду, а XML – переносимый и независимый от платформы формат данных.

Технология Java: команды для сетевых сервисов

Технология Java предоставляет надежную, широко распространенную, независимую от операционной системы платформу, позволяющую быстро создавать и запускать сетевые сервисы. Основой Web-сервисов является воплощенное в платформе J2EE (JavaTM 2 Platform, Enterprise Edition), открытое, часто используемое решение, которое согласуется с существующими системами и предоставляет новые динамичные сервисы с ключевыми технологиями, такими как Enterprise JavaBeansTM, JavaServer PagesTM, сервлеты, поддержка XML.

JavaTM 2 Platform, Enterprise Edition – это платформа для работы с приложениями, которые решают критические задачи. Java 2 Platform, Micro Edition (J2METM) дает возможность широкому диапазону сетевых устройств использовать множество новых служб. Одним из главных достоинств Java является всеобъемлющая интеграция и общая модель для создания и внедрения сервисов.

Преимущества технологии Java:

  • Надежная высокоразвитая открытая платформа для создания и установки Web сервисов.

  • Возможность легкой адаптации к новым стандартам.

  • Улучшенные возможности разработки и внедрения новых сервисов.

  • Внутренняя низкоуровневая защита. По мере персонализации сетевых сервисов возрастают требования к безопасности и аутентификации.

  • Единая платформа для целого ряда устройств.

  • Сквозная архитектура для разработки, внедрения, поддержки и обслуживания Web сервисов.

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

Технология Java уже поддерживает различные стандарты, такие как XML и ebXML. Также Java используется в стандартах различных организаций как часть их основной спецификации. Например, HAVi (Home Audio/Video), OSGi (Open Services Gateway Initiative), GSM (распространенный во всем мире стандарт мобильной связи), Open Cable, DVB для цифровых приставок к телевизору, а так же нескольких лидирующих производителей автомобилей.

Все это говорит о том, что Web сервисы, построенные сегодня на основе технологии Java, не уйдут в прошлое с появлением нового поколения открытых "умных" сетевых сервисов.

Открытые "умные" Web-сервисы

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

Две тенденции, которые определяют следующее поколение Internet, – это "умные" Web сервисы и автоматизированный обмен данными между деловыми партнерами. Общим для этих тенденций является необходимость в существовании слабосвязанной вычислительной структуры.

Технологии XML и Java: инициализация открытых "умных" сервисов

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

Технология XML является ключевым фактором в обеспечении этой слабой зависимости. Она позволяет перейти от сильно связанных, API-центрированных подходов к модели слабой связи, основанной на форматах стандартизованных данных, которые не зависят от платформы и описывают сами себя.

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


Рис.2 Панель стандартов XML/Java

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

В отличие от других технологий, Java смогла легко объединить открытые технологии, такие как XML, UDDI и ebXML. Это позволяет компаниям создавать сервисы уже сегодня, а также станет основой для следующего поколения открытых, "умных" сервисов, усиливающих и объединяющих существующие экономические системы компаний и делающих их частью смежных "умных" сервисов. Более того, технология Java может обеспечить сервисами миниатюрные устройства, которые имеют выход в сеть. С помощью сервлетов и JavaServer Pages, объединенных с технологией XML, даже эти очень ограниченные устройства могут улучшить новые Web-сервисы.

"Умные" Web-сервисы являются слабосвязанными Internet службами, поддерживающими высокий уровень персонализации и возможности для настройки, основанные на контексте, с которым они работают. Такие устройства можно создавать динамически "на лету" из модулей компонент различных производителей, и они могут работать на любом количестве устройств в любое время в любом количестве мест. Эта же служба может часть времени работать как сервер, а другую часть времени как клиент (client). Подобным образом, некоторые сервисы могут обслуживаться, в то время как другие могут и не обслуживаться. Большое разнообразие устройств, в которых работают "умные" службы, неизменно будут иметь свои собственные платформенные требования, интерфейсы и ограничения. К тому же, специальные динамические свойства сервиса будут изменяться в зависимости от контекста, в котором она работает.

Решение проблем, связанных с недостатками современных Web сервисов

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

  • Контекстность.Сервисы динамически меняют свое поведение в зависимости от контекста, с которым они работают.

  • Более полные личные профили. Для одного пользователя поддерживается множество идентификаторов и имён, причём профили поддерживаются по сервисам перекрёстно.

  • Улучшенные средства конфиденциальности и безопасности. Секретные данные можно сделать выборочно доступными, в зависимости от контекста и предпочтений пользователя.

  • Более полный контекст компании. Общий идентификатор, политики, контракты и соглашения могут быть динамически выбраны и доставлены, основываясь на контексте.

  • Улучшенные бизнес-процессы. Технологические процессы, чувствительные к контексту, и data mining предоставляют процедуры и информацию.

  • Улучшенное обслуживание текущего состояния. Архив служебных взаимодействий может быть сохранен в устройствах, контексте, службах.

Компоненты "умных" сетевых сервисов

Основные компоненты "умных" Web-сервисов можно приблизительно классифицировать следующим образом:

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

  • Интерфейс сервиса. Интерфейс сервиса реализует API для соединений, передачи сообщений. Реализует протоколы, преобразует и моделирует данные для требуемого устройства, а также объединяет, персонализирует, регистрирует и локализует содержимое.

  • "Умная" доставка. "Умная" доставка предоставляет контекстный доступ, накопление, представление, персонализацию и доставку содержимого.

  • Контейнер сервиса. Контейнер сервиса реализует программное окружение, функции персистентности и осуществляет управление состоянием.

  • Платформа сервиса. Платформой сервиса является система или оборудование, на которых она работает. Функции платформы включают в себя доступ к БД, службы обмена сообщениями, службы каталога, виртуальные машины, операционные системы, аппаратные интерфейсы и память.

  • Бизнес-логика. Бизнес-логика – это программный код, реализующий бизнес-операции.

  • "Умный" образ действий. Компоненты "умных" методов предоставляют службу идентификации и разграничения доступа, а так же контекстный сервис.

  • "Умное" управление. Компоненты "умного" управления делают возможными конфиденциальность, безопасность, разграничение прав, администрирование и пользовательский контроль.

  • "Умная" автоматизация. "Умная" автоматизация позволяет автоматизировать процесс управления.

  • Интеграция сервиса. К функциям интеграции сервиса относятся: объединение других сетевых сервисов, действующих систем, а так же служб инфраструктуры, таких как базы данных, файлы и директории.


Рис.3 Компоненты "умных" сетевых служб

Контекст в "умных" сервисах

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

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

Задачи контекста

Ключевым моментом "умных" Web-сервисов является контекст. Главная задача сводится к определению и согласованию соответствующего набора широко используемых протоколов и схем, необходимых для работы с контекстом.

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

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

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

Первое поколение "умных" сервисов будет основано на следующих способах использования контекста:

  • Идентификация – Идентификация личности и компании, безопасность, конфиденциальность, разделение прав.

  • Настройка под заказчика – Месторасположение, время, предпочтения, журнал.

  • Обработка – Качество службы, договор об уровне предоставляемых услуг, политика, деловые операции, ревизии, лицензирование, составление накладных.

Основные XML/Java взаимодействия

Компоненты XML и Java взаимодействуют следующим образом:

  • Регистрация сервиса. Сервис регистрируется в реестре служб, например в UDDI или реестрах и репозиториях ebXML. Пользователь находит сервис и разбирается при помощи реестров, как с ним работать. С появлением Java API for XML Registry (JAXR) будет создан программный интерфейс Java для регистрации сервисов.

  • Вызов сервиса. Пользователь может вызвать Web-сервис, послав сообщение в XML формате через HTTP протокол. Сервер, получив запрос, запускает JSP (Java Server PagesTM, расширяемая Web-технология, использующая данные шаблона, заказные элементы, языки сценариев и серверные объекты Java для предоставления клиенту динамического содержания) или сервлет для обработки вызова.

  • Обработка XML сообщения. JSP и/или сервлет обрабатывают XML сообщение. В будущем для чтения и получения заголовков сообщений разработчикам будут доступны JAXM (the Java API for XML Messaging) или JAX/RPC (the Java APIs for XML based RPC). В настоящее время JAXM можно использовать для анализа сообщений.

  • Преобразование XML данных в Java формат. Следующим шагом JSP и/или сервлета является преобразование XML данных, полученных из сообщения, в элементы данных объектов Java, используя JAXP или в будущем JAXB (the Java API for XML Data Binding). С помощью JAXB разработчик может создавать объекты Java из DTD (Document Type Definition – определение типа документа), которое представляет собой схему XML документа. С использованием JAXB, отображение данных, полученных из документа, в Java объект займет всего лишь одну строку.

  • Сеанс захвата и контекстная информация. После этого JSP и/или сервлет фиксирует информацию о контексте запроса (кто послал запрос, когда он имел место быть, где находится посылающий, какое устройство использовалось для этого, какова предыстория запроса и т. д.). API языка Java для управления контекстом все еще находится на стадии разработки.

  • Исполнение сервиса. Далее для выполнения сервиса JSP и/или сервлет запускают соответствующий EJB компонент, отвечающий за бизнес-логику. Реальное поведение процесса может гибко изменяться в соответствии с политикой и правилами, основанными на контексте запроса. EJB компонент может, в свою очередь, запустить другие EJB компоненты или Web-сервисы. Разработчики используют JDBC (Java Database Connectivity, промышленный стандарт для независимого от базы данных взаимодействия JavaTM-платформы и широкого диапазона баз данных) для доступа к поддерживаемым базам данных, а так же J2EE Connector Architecture или JMS (JavaTM Message Service) для запуска приложений. Для обращения к другому Web-сервису EJB компонент должен послать ей сообщение в формате XML. XML сообщение создается при помощи JAXP, а в будущем этой цели будут служить JAXM или JAX/RPC.

  • Обработка результатов. После завершения работы EJB компонент передает результаты JSP и/или сервлету, которые с помощью JAXP или JAXB переводят данные из Java в XML формат. Потом информация преобразуется в соответствии с контекстом и правилами персонализации и предоставляется пользователю в том виде, который ему более удобен. Разработчик использует JAXP для преобразования результатов в выходной XML документ.

  • Вывод результатов работы. Конечный выходной XML документ запаковывается в XML сообщение при помощи JAXP, JAXM или JAX/RPC и отсылается пользователю.


Рис.4 Модель XML/Java взаимодействия в "умном" сервисе

Назначение "умных" Web-сервисов

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

  • Создание новых сервисов. "Умные" Web-сервисы создаются в основном на Java с использованием технологий Java и J2EE. Инструменты разработки упрощают задачу создания компонент JavaBeans, JSP и EJBTM, автоматически создавая привязки и XML схемы.

  • Объединение имеющихся компонент в архитектуру Web-сервисов. Существующие сетевые приложения, разработанные с помощью JSP, сервлетов и EJB могут быть легко и быстро расширены, для того чтобы работать в качестве Web-сервисов. Обычные сетевые приложения предназначены для поддержки HTML клиентских интерфейсов. Разработчикам попросту необходимо создать новый XML интерфейс для приложений, используя JSP или сервлеты, как было описано ранее.

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

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

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

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

  • Представление результатов. Средства в данной категории обслуживают выход, принимая входные данные от пользователей или других сервисов. Эти инструментальные средства должны давать расширяемую структуру для конструирования компонент представления, а не концентрироваться на отдельном инструменте. Цель данного этапа состоит в управлении сервисом, а не сервером.

  • Тестирование. Тестирование и отладка в распределенной среде осложнены, потому что некоторые сервисы находятся вне зоны контроля данного механизма разработки. Инструментальные средства в данной категории служат для создания моделей сервисов, наблюдения за производительностью и использованием ресурсов, а также редактирования приложения.

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

  • Публикация/Объявление. Интерфейсы издательской службы не имеют эквивалентной функции в архитектурах текущих приложений. Инструментальные средства в данной категории помогают пользователям искать через UDDI подходящие категории, темы, положения в одном из пространств имен сервиса.

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

Заключение

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

XML и Java обладают множеством достоинств для разработчиков, предприятий и, в конечном счете, для пользователей. Преимущества этих технологий:

  • Обновление вместо создания. Используя открытые отраслевые стандарты, такие как XML и Java, разработчики смогут сосредоточиться на главном – улучшении сервисов, не касаясь стандартов – вместо создания приложений "с нуля". Разработчики, использующие собственную архитектуру, в конечном счете, вынуждены все создавать и внедрять заново, что всегда ограничивает возможности.

  • Значение открытых пакетов для разработчиков. Открытые пакеты дают разработчикам возможность более быстро и гибко писать приложения, что, в свою очередь, позволяет им выгодно использовать запас знаний, накопленный их коллегами. Программисты, работающие с пакетами компании Sun, максимально используют потенциал "умных" сервисов.

  • Ресурсы доступны разработчикам уже сегодня. Программы для разработчиков и партнеров Sun уже сегодня предоставляют ресурсы и модели открытых Web-сервисов. Большая часть необходимых технологий для открытой архитектуры уже доступна. Многие партнеры Sun используют в своих проектах компоненты открытых пакетов. Sun считается лидером в этой области и будет оставаться лучшим выбором, как платформа и партнер.

Теги: web service xml