Лекция №3. Архитектура Web-приложений Учебные вопросы: 1. Стандарты и протоколы основе Web-сервисов 2. Технология EJB 3. Технология DCOM 4. Технология CORBA Вопрос №1 Web-cepвис — приложение, доступное через Internet и предоставляющее некоторые услуги, форма которых не зависит от поставщика (так как используется универсальный формат данных — XML) и платформы функционирования. В основе Web-сервисов лежат открытые стандарты и протоколы SOAP (Simple Object Access Protocol), разработанный консорциумом W3C, определяет формат запросов к Webсервисам. Сообщения между Web-сервисом и его пользователем пакуются в так называемые SOAP-конверты (SOAP envelopes, иногда их еще называют XML-конвертами). Само сообщение может содержать либо запрос на осуществление какого-либо действия, либо ответ — результат выполнения этого действия; WSDL (Web Service Description Language). Интерфейс Web-cepвиса описывается в WSDL-документах (a WSDL — это подмножество XML). Перед развертыванием службы разработчик составляет ее описание на языке WSDL, указывает адрес Webсервиса, поддерживаемые протоколы, перечень допустимых операций, форматы запросов и ответов; UDDI (Universal Description, Discovery and Integration) — протокол поиска Web-сервисов в Internet (http://www.uddi.org/). Представляет собой бизнес-реестр, в котором провайдеры Webсервисов регистрируют службы, а разработчики находят необходимые сервисы для включения в свои приложения. В данное время существуют три различные технологии, поддерживающие концепцию распределенных объектных систем: EJB, DCOM и CORBA. Вопрос №2 Основная идея, лежавшая в разработке технологии EJB (Enterprise JavaBeans) — создать такую инфраструктуру для компонентов, чтобы они могли бы легко «вставляться» («plug in») и удаляться из серверов, тем самым повышая или снижая функциональность сервера. Новый компонент создается из уже существующих, готовых и настраиваемых, аналогично RAD-системам. Опубликованная в марте 1998 г. EJB-спецификация версии 1.0 определяет следующие цели. 1) Облегчить разработчикам создание приложений, избавив их от необходимости реализовывать с нуля такие сервисы, как транзакции (transactions), нити (threads), загрузка (load balancing), хранение, передача и безопасность данных При этом все равно имеется возможность самому контролировать и описывать порученные системе процессы. 2) Описать основные структуры EJB-системы, описав при этом интерфейсы взаимодействия (contracts) между ее компонентами. 3) EJB преследует цель стать стандартом для разработки клиент/сервер приложений на Java: а) исходные JavaBeans (Delphi, или другие) компоненты от различных производителей можно было составлять вместе с помощью соответствующих RAD-систем, получая в результате работоспособные клиенты, б) таким же образом серверные компоненты EJB от различных производителей также могут быть использованы вместе. EJB-компоненты, будучи Java-классами, должны, работать на любом EJB-совместимом сервере даже без перекомпиляции, что практически нереально для других систем. 4) EJB совместима с Java API, может взаимодействовать с другими (не обязательно Java) приложениями, а также совместима с CORBA. Сущность технологии EJB-объект (созданный с помощью сервисов контейнера) и EJBкомпонента (созданная разработчиком) реализуют один и тот же интерфейс. В результате, когда приложение-клиент хочет вызвать метод у EJB- компоненты, то сначала вызывается аналогичный (по имени) метод у EJB-объекта, что находится на стороне клиента, а тот, в свою очередь, связывается с удаленной EJB-компонентой и вызывает у нее этот метод (с теми же аргументами). В EJB программные компоненты, которые являются как бы кирпичиками программы, называются Beans (в переводе — бобы). Мы будем далее их именовать бинами. Типы «бинов» Первый тип Session bean представляет собой EJB-компоненту, связанную с одним клиентом. «Бины» этого типа, как правило, имеют ограниченный срок жизни (хотя это и не обязательно) и редко участвуют в транзакциях. Он предназначен для выполнения некоторых функций на стороне сервера от имени одного клиента. Типы «бинов» Второй тип Entity bean представляет собой компоненту, работающую с постоянной (persistent) информацией, хранящейся, например, в базе данных. Entity beans ассоциируются с элементами баз данных и могут быть доступны одновременно нескольким пользователям. Например, entity bean может представлять собой строку какойнибудь таблицы из базы данных или даже результат операции SELECT. Достоинства EJB: 1. быстрое и простое создание; 2. Java-оптимизация; 3. кроссплатформенность; 4. динамическая загрузка компонент-переходников; 5. возможность передачи объектов по значению; 6. встроенная безопасность. Недостатки EJB: 1. поддержка только одного языка — Java; 2. трудность интегрирования с существующими приложениями; 3. плохая масштабируемость; 4. производительность; 5. отсутствие международной стандартизации. Вопрос №3 Технология DCOM (Distributed Component Object Model) — программная архитектура, разработанная компанией Microsoft для распределения приложений между несколькими компьютерами в сети. Программный компонент на одной из машин может использовать DCOM для передачи сообщения (его называют удаленным вызовом процедуры) к компоненту на другой машине. DCOM автоматически устанавливает соединение, передает сообщение и возвращает ответ удаленного компонента. Достоинства DCOM: 1. независимость от языка; 2. динамический/статический вызов; 3. динамическое нахождение объектов; 4. масштабируемость; 5. открытый стандарт (контроль со стороны TOG); 6. множественность Windows-программистов. Недостатки DCOM: 1. сложность реализации; 2. зависимость от платформы; 3. нет именования через URL; 4. нет проверки безопасности на уровне выполнении ActiveX компонент; 5. отсутствие альтернативных разработчиков. Вопрос №4 Технология CORBA специфицирует инфраструктуру взаимодействия компонент (объектов) на представительском уровне и уровне приложений модели OSI. Она позволяет рассматривать все приложения в распределенной системе как объекты. Объекты могут одновременно играть роль и клиента, и сервера: роль клиента, если объект является инициатором вызова метода у другого объекта; роль сервера, если другой объект вызывает на нем какой-нибудь метод. Объекты-серверы обычно называют «реализацией объектов». Практика показывает, что большинство объектов одновременно исполняют роль и клиентов, и серверов, попеременно вызывая методы на других объектах и отвечая на вызовы извне. Достоинства CORBA: 1. платформенная независимость; 2. языковая независимость; 3. динамические вызовы; 4. динамическое обнаружение объектов; 5. масштабируемость; 6. CORBA-сервисы; 7. широкая индустриальная поддержка. Недостатки CORBA: 1. нет передачи параметров по значению; 2. отсутствует динамическая загрузка компонент-переходников; 3. нет именования через URL.