
- •Введение
- •1 Тема 1. Предметная область и терминология РСОС
- •1.1 Этапы развития распределенных систем
- •1.1.1 Классификация систем обработки данных
- •1.1.2 Распределенные вычислительные сети
- •1.1.3 Объектные распределенные системы
- •1.2 Становление систем с сервис-ориентированной архитектурой
- •1.2.1 Развитие web-технологий
- •1.2.2 Развитие концепции SOA
- •1.3 Современные парадигмы сервис-ориентированных архитектур
- •1.3.1 Эталонная модель SOA
- •1.3.2 Модель Захмана
- •1.3.3 Концепция среды открытой системы
- •1.3.4 Бизнес-парадигма модели SOA
- •1.4 Программная платформа Java Enterprise Edition
- •1.4.1 Контейнеры и компоненты Java EE
- •1.4.2 Служебные сервисы контейнеров
- •1.4.3 Артефакты контейнеров
- •1.4.4 Аннотации и дескрипторы развертывания
- •1.4.5 Управляемые компоненты платформы Java EE
- •1.5 Инструментальные средства реализации РСОС
- •1.5.1 Сервера приложений
- •1.5.2 Микросервисы
- •1.5.3 Apache Maven — сетевая сборка приложений
- •1.5.4 Eclipse Enterprise Edition
- •1.5.5 Тестовый пример
- •1.6 Заключение по первой главе
- •1.6.1 Итоги теоретических построений первой главы
- •1.6.2 Тематический план последующих глав
- •Вопросы для самопроверки
- •2 Тема 2. Использование компоненты JSF контейнера Web
- •2.1.1 Языки HTML, JavaScript и протокол HTTP
- •2.1.2 Серверные технологии PHP и HttpServlet
- •2.1.3 Технология AJAX и компонента JavaServer Faces
- •2.2 Шаблон проектирования MVC
- •2.2.1 Контроллер FacesServlet и жизненный цикл запроса
- •2.2.2 Контекст состояния запроса FacesContext
- •2.2.3 Модель в виде компонентов-подложек
- •2.2.4 Представление (View) средствами Facelets
- •2.2.5 JSF OmniFaces
- •2.3 Реализация тестового примера средствами JSF
- •2.3.1 Создание Facelets-шаблона изучаемой дисциплины
- •2.3.2 Прямая реализация тестового примера
- •2.4 Реализация уровня интерфейса сервисов
- •2.4.2 Компонента Users с ЖЦ @ApplicationScoped
- •2.4.3 Компонента RSOS с ЖЦ @SessionScoped
- •2.4.4 Компоненты-подложки с ЖЦ @RequestScoped
- •2.4.5 Приложение авторизации пользователя
- •2.4.6 Компонента подзаголовка проекта
- •2.4.7 Компонента меню лабораторных работ
- •2.4.8 Второй вариант меню лабораторных работ
- •Вопросы для самопроверки
- •3 Тема 3. Современные способы доступа к данным
- •3.1 Учебная инфраструктура темы
- •3.1.1 Учебная задача Letters (Письма)
- •3.1.2 Корпоратиные EJB-компоненты
- •3.1.3 Тестовый HttpServlet проекта lab4
- •3.1.4 Инфраструктура сервера TomEE и СУБД Derby
- •3.2 Технология JPA
- •3.2.1 Сущности
- •3.2.2 Объектно-реляционное отображение
- •3.2.3 Манеджер сущностей
- •3.2.4 Пример использования не-JTA-типа транзакций
- •3.3 Транзакции управляемые контейнером
- •3.3.1 Объектно-ориентированные запросы Criteria API
- •3.3.2 Реализация EJB-компонента с JTA-типом транзакций
- •3.3.3 Реализация JPA-сервлета
- •Вопросы для самопроверки
- •4 Тема 4. Обработка документов XML и JSON
- •4.1 Технология JAXB
- •4.1.1 Программное обеспечение технологии JAXB
- •4.1.2 Аннотации для связывания объектов Java
- •4.1.3 Преобразование объекта Java в документ XML
- •4.2 Технология JSON
- •4.2.1 Программное обеспечение технологии JSON
- •4.2.2 Преобразование объекта Java в документ JSON
- •4.2.3 Пример представления JSON на уровне классов
- •4.2.4 Выводы по результатам изучения главы 4
- •Вопросы для самопроверки
- •5 Тема 5. Web-службы SOAP
- •5.1.1 Протоколы и языки Web-служб
- •5.1.2 Краткое описание языка WSDL
- •5.1.3 Краткое описание протокола SOAP
- •5.1.4 Необязательный реестр Web-служб — UDDI
- •5.1.5 Программные пакеты Java EE, обслуживающие SOAP
- •5.2 Создание Web-служб SOAP
- •5.2.1 Подготовка проекта lab7
- •5.2.2 Аннотации поставщика Web-сервиса
- •5.2.3 Обработка исключений поставщика Web-сервиса
- •5.2.4 Обработка контекста Web-сервиса
- •5.3 Создание потребителя Web-службы SOAP
- •5.3.1 Аннотации для потребителей сервиса
- •5.3.2 Использование утилиты wsimport
- •5.3.3 Реализация тестового примера
- •5.3.4 Выводы по результатам изучения главы 5
- •Вопросы для самопроверки
- •6 Тема 6. Web-службы в стиле REST
- •6.1 Основные положения технологии RESTful
- •6.1.1 Ресурсы, URI, представления и адресуемость
- •6.1.2 Протокол HTTP
- •6.1.3 Языки WADL и HAL
- •6.1.4 Технология JAX-RS
- •6.2 Реализация Web-службы в стиле REST
- •6.2.1 Преобразование сущности Letter
- •6.2.2 Реализация EJB-компоненты Lets9
- •6.2.3 Получение списка записей в формате XML
- •6.2.4 Получение записи по номеру индентификатора
- •6.2.5 Добавление новой записи
- •6.3 Вызов Web-служб в стиле REST
- •6.3.1 Инструментальные средства потребителя сервиса
- •6.3.2 Полная реализация RESTfull-сервиса
- •6.3.3 Шаблон реализации потребителя сервиса
- •6.3.4 Клиент, реализующий методы GET и POST
- •6.3.6 Клиент, реализующий методы DELETE и PUT
- •Вопросы для самопроверки
- •Заключение
- •Список использованных источников
- •Алфавитный указатель

Непосредственная конкретизация модели SOA предполагает введение дополнительных ограничений на предметную область ее использования.
1.3.2Модель Захмана
В1987 году, Джон Захман (сотрудник корпорации IBM) предложил иерархическую модель предприятия, предлагая на каждом уровне представления давать ответы на вопросы: что?, как?, где?, кто?, когда? и почему?
Предложенная модель множество раз модифицировалась и расширялась.
Вконечном итоге она приняла стабильную форму и стала обязательным атрибутом учебных пособий по архитектуре предприятий, например, [13, 14]. Общий вид ее представлен на рисунке 1.10.
Рисунок 1.10 — Архитектурная матрица модели Захмана [14]
Для нашей дисциплины познавательная ценность модели Захмана состоит в демонстрации сложностей, с которыми сталкиаются участники процессов масштабной автоматизации деятельности предприятий.
26

Позитивная сторона модели Захмана связана с наглядным представлением тридцати шести позиций внимания, требующих согласования между представителями бизнеса (руководства) и техническими представителями ограниченных организационных структур. Это позволяет им контролировать полноту принятых проектных решений.
Негативная сторона модели Захмана связана с качественным различием компетенций и ответственности между бизнес-руководителями и ИТ-специа- листами. Это перегружает каждую из указанных групп большим количеством малопонятных модельных представлений.
1.3.3Концепция среды открытой системы
В1998 году, американский Институт инженеров электротехники и электроники (Institute of Electrical and Electronics Engineers, IEEE) выпустил стандарт IEEE Std 1003.23—98 под названием «Стандарт института инженеров по
электротехнике и электронике. Руководство по проектированию профилей среды открытой системы организации-пользователя». Он исходит из того, что современная инфраструктура предприятия представляет собой гетерогенную программно-аппаратную среду, использующую компьютеры различных классов и производителей. Стандарт предлагает формировать среду открытой системы (СОС), которая бы решала проблему совместимости трех инфраструктурных ресурсов: информационных, вычислительных и телекоммуникационных.
В ноябре 2002 года, Госстандарт России вынес постановление о публикации Рекомендаций по стандартизации Р 50.1.041-2002 под названием «Руководство по проектированию профилей среды открытой системы (СОС) органи- зации-пользователя» [15], где указанная выше концепция представлена как «Эталонная модель СОС POSIX (ИСО/МЭК 14252)».
Идейная основа эталонной модели СОС POSIX состоит в том, что при должном формиро-
вании профилей СОС (OSE, Open System Environment) предприятий, дальнейшее решение осуществляется рынком постащиков программного обеспечения, аппаратных средств и телекоммуникаций.
Про своей сути, Рекомендации по стадартизации Р 50.1.041-2002 [15] являются описанием методики проектирования информационных систем, где на верхнем (концептуальном) уровне выделяются и иерархически размещаются три объектных сущности и два интерфейса:
а) Объект прикладных программных средств;
б) ППИ — прикладной программный интерфейс (API, Application Program Interface);
в) Объект прикладной платформы — объект набора ресурсов, включая
27

технические и программные средства, которые обеспечивает услуги для функционирования прикладных программных средств;
г) ИВС — интерфейс с внешней средой (EEI, External Environment Interface);
д) Внешняя среда.
Выделенные объектные сущности объединяются с помощью четырех служб, как это показано на рисунке 1.11.
Рисунок 1.11 — Эталонная модель СОС POSIX [15]
Далее, следуя описанию методики проектирования, проводится декомпозиция объектных уровней и интерфейсов. Выполняются различные группировки по службам и технологическим компонентам, строятся матрицы перекрестных связей.
Позитивная сторона модели СОС POSIX — сведение всего многообразия сервисов к четырем службам: системной, коммуникационной, информационной и службы интерфейса человек-компьютер. Это усиливает понимание
28

между ИТ-специалистами и Бизнес-руководителями предприятий, поскольку предоставляет последним модельные представления о хозяйственной деятельности предприятия.
Негативная сторона модели СОС POSIX — явные ограничения на число и состав выделенных служб (сервисов). Поскольку ИТ-службы являются обеспечивающими подразделениями по отношению к производственным подразделениям предприятия, то возникают проблемы взаимной подчиненности таких служб и степени их ответственности, по отношению к производственной деятельности предприятия.
1.3.4 Бизнес-парадигма модели SOA
Бизнес-парадигма модели SOA исходит из того, что сервисы существуют исключительно для удовлетворения бизнес-руководителей предприятия. Тогда сама сервисная архитектура может быть представлена трехуровневой иерархией, как это показано на рисунке 1.12.
Рисунок 1.12 — Бизнес-парадигма архитектуры предприятия [11]
Уровень бизнес-логики — соответствует уровню бизнес-руководителей предприятия, которые генерируют бизнес-процессы и становятся потребителями сервисов (Service Consumer).
Уровень интерфейса сервисов (Service Interface) — уровень взаимодей-
29

ствия бизнес-руководителей и ИТ-специалистов предприятия, обеспечивающий свойства видимости (Visibility), перспектива возможного использования сервисов (Interaction) и фактического получения результата услуги (Real world effect). На этом уровне ИТ-специалисты получают статус провайдеров услуг (Service Provider).
Уровень приложений — уровень ИТ-специалистов, которые обеспечивают реализацию сервисов. Он считается «невидимым» для бизнес-руководи- телей, поэтому может реализовываться различными способами, например:
а) представлять слабосвязанные или сильносвязанные системы; б) быть распределенными или сосредоточенными системами;
в) соответствовать или несоответсвовать эталонной модели СОС POSIX;
г) принадлежать предприятию или находиться в «облаке» (cloud computing) на аутсорсинге (outsourcing).
Позитивная сторона модели бизнес-парадигмы модели SOA состоит в разделении статуса и полномочий ИТ-специалистов и Бизнес-руководителей предприятий. В этой модели наблюдается возможность масштабирования и смены парадигм уровня приложений без прямого влияния на уровень бизнес-логи- ки предприятия. Отсутствуют многоплановые матричные зависимости, присутствующие в предыдущих двух концепциях.
Ситуация принципиально не меняется, когда основная производственная деятельность предприятия связана с ИТ-технологиями. В этом случае, основная часть бизнес руководителей является или являлась ранее ИТ-специалистами. Тогда в силу вступает иерархия по целям производственной деятельности: стратегия, тактика и оперативное исполнение. Этого вполне достаточно для сохранения целостности модельной парадигмы SOA.
Негативная сторона модели бизнес-парадигмы модели SOA состоит в достаточно высокой степени неопределенности концепции проектирования и реализации уровня приложений.
Бизнес-парадигма модели SOA предполагает быстрое и качественное создание, развертывание и сопровождение сервисов.
Бизнес-руководители — главные потребители сервиса не могут удовлетвориться медленным созданием и развертыванием нужных сервисов. Такое ограничение стимулирует качественный выбор прикладной платформы.
30