
- •Введение
- •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
- •Вопросы для самопроверки
- •Заключение
- •Список использованных источников
- •Алфавитный указатель

Что касается программного обеспечения web-браузеров, то развиваясь достаточно независимо, оно также претерпело значительные изменения.
Вдекабре 1995 года, американский программист Брендан Эйх (Айк) опубликовал скриптовый объектно-ориентированный язык программирования, названный JavaScript и предназначенный для браузера Netscape одноименной американской компании, работающей в сфере IT-индустрии.
Вмае 1995 года, компания Sun Microsystems опубликовала первую версию языка Java, в котором присутсвовал пакет java.applet, реализующий графические интерактивные возможности Java, выполняемые в среде Web-браузеров (правда с необходимостью запуска виртуальной машины Java — JVM).
Вавгусте 1996 года, корпорация Microsoft выпустила браузер Internet Explorer 3.0, в котором в качестве скриптов был использован язык JScript, синаксически основанный на языке JavaScript компании Netscape. Это событие на долгие годы вызвало серьезные трения между этими компаниями.
Вдекабре 1996 года, CSS Working Group выпустила спецификации языка CSS (Cascading Style Sheets) — языка каскадной таблицы стилей, предначенной для описания внешнего вида документов. Это событие вызвало серьезную переработку программного обеспечения всех Web-браузеров.
Втечение многих лет ПО браузеров адаптировалось и под различные версии языка HTML,
включая XHTML, который соответствует специфика-циям метаязыка SGML. В настоящее время, стандартом является версия языка HTML 5.
В июне 1997 года, компания Sun Microsystems опубликовала новые пакеты javax.servlet и javax.servlet.http языка Java, которые были разработаны для платформы Java EE. Уже в 1999 году, компания-фонд Apache Software Foudation выпустила свободый сервер, являющийся контейнером сервлетов и JSP-страниц.
Таким образом, к 2000 году web-технологи полностью сформировались для реализации полноценных приложений, хотя бы на платформе языка Java.
1.2.2 Развитие концепции SOA
Недостатки, присущие объектному подходу создания РСОС, и все возрастающие потребности производства в управлении бизнес-процессами потребовали нового уровня абстракции, который был сформулирован как «Сервисное Ориентирование», показанное на рисунке 1.18 и влючающее [5]:
а) BPM (Business process management, управление бизнес-процессами) — концепция процессного управления организацией, рассматривающая
16

бизнес-процессы как ресурсы;
б) EAI (Enterprise Application Integration) — общее название сервиса интеграции прикладных систем предприятия;
в) AOP (Aspect-Oriented Programming) — аспектно-ориентированное программирование; парадигма программирования, основанная на идее разделения функциональности программы на модули;
г) Web-сервисы (Web-services) — web-службы со стандартизированными интерфесами, адресуемые уникальными URI/URL-адресами.
Концептуально, на уровне сервисного-оринтированой архитектуры выделяются следующие составляющие:
а) Сервисные компоненты (или сервисы) описываются программными компонентами, которые обеспечивают прозрачную сетевую адресацию.
б) Интерфейс сервиса обеспечивает описание возможностей и качества предоставляемых сервисом услуг. В таком описании определяется формат сообщений для обмена информацией, а также входные и выходные параметры методов, поддерживаемых сервисным компонентом.
в) Соединитель сервисов — это транспорт, обеспечивающий обмен информацией между отдельными сервисными компонентами.
г) Механизмы обнаружения сервисов предназначены для поиска севисных компонентов, обеспечивающих требуемую функциональность сервиса.
Рисунок 1.6 — Концептуальная идея сервис-ориентированной архитектуры [5]
17

В 1998 году Дейв Винер, сотрудник компании UserLand Software, опубликовал протокол XML-RPC, предназначенный для вызова удаленных процедур в формате XML-сообщений поверх протокола HTTP. Сам протокол разрабатывался по заказу корпорации Microsoft для обеспечения решения задач в области электронной коммерции. Последующие доработки этого протокола привели к созданию протокола SOAP (Simple Object Access Protocol).
Известны две спецификации этого протокола, опублицованные консорциумом W3C:
а) Simple Object Access Protocol (SOAP) 1.1 [6];
б) SOAP Version 1.2 Part 0: Primer (Second Edition) [7].
В марте 2001 года и в июне 2007 года, консорциум W3C публикует спецификации WSDL (Web Service Description Language) в документах [8] и [9]. Эти спецификации обеспечивают описание сервисов в формате XML-документов, что позволяет их публикацию средствами web-технологий.
Считается, что в августе 2000 года была реализована первая система
UDDI (Universal Description Discovery & Integration) — инструмент для размещения описаний описаний WSDL. В настоящее время доступно описание версии UDDI 3.0.2 [10], которое находится под контролем глобального консорциума OASIS (Organization for the Advancement of Structured Information Standards).
Таким образом, на начало 2000-х годов были сформированы все необходимые технологические компоненты для создания сервис-ориентированных систем на основе web-сервисов первого поколения.
Такие системы имели общую архитектуру взаимодействия «Клиент-сер- вер», показанную на рисунке 1.7.
Рисунок 1.7 — Взаимодействие участников SOA для web-сервисов первого поколения [11]
18