- •Введение
- •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
- •Вопросы для самопроверки
- •Заключение
- •Список использованных источников
- •Алфавитный указатель
1 Тема 1. Предметная область и терминология РСОС
Объектом внимания изучаемой дисциплины «Распределенные сервис-ори- ентированные системы» является особый класс искусственно созданных на основе вычислительной техники систем, элементы которых представляются в виде двух основных групп: поставщиков сервисов и потребителей сервисов. В последующем изложении текста мы будем использовать акроним РСОС, понимая под ним как объект или предмет изучения, так и частные теоретические толкования уже принятые в литературных источниках.
Предметом изучения дисциплины РСОС являются технологии проектирования и реализации подобных систем, получившие достаточную известность к настоящему времени и подкрепленные общепринятыми стандартами международных организаций.
Целью изучения дисциплины РСОС является получение более глубоких знаний и практических навыков о современных технологиях создания сложных компьютерных систем, охватываемых более широкой предметной областью дисциплины «Распределенные вычислительные системы».
В качестве результата этой цели предполагается подготовка обучающегося до уровня, обеспечивающего самостоятельное создание элеменов РСОС и возможность его успешной работы в соотвествующих коллективных проектах. Тем не менее, в силу достаточно большого объема и сложности изучаемой предметной области, знания о ней ограничены только технологиями реализованными на основе языка Java. Подобное ограничение имеет целью обеспечить целостность практических навыков обучающихся уже проверенными подходами, доказавшими свою значимость, а также сохранить преемственность учебнометодического подхода, сформированного в учебном пособии [1]. С этой же целью мы будем опираться на сформулированные ранее термины и определения, раскрывая и модифицируя их по мере необходимости.
Сосредоточенные системы группируют «классическое направление» развития цифровых технологий, основаных на вычислительной мощности про- граммно-аппаратных средств и локализованных во вполне обозримых границах. Для таких систем подключение и взаимодействие с другими подобными системами является допустимым явлением, но не главной характериской.
Детальное толкование таких систем интерпретируется в трех основных аспектах:
1.ЭВМ — согласованный в функциональном назначении аппаратный конструктив, дополненный базовым программным обеспечением (ПО) операционных систем (ОС) до конкретной виртуальной машины; в последующем, такая машина рассматривается как элемент более сложных систем;
5
2.Вычислительные системы — все прикладные аспекты программного обеспечения, реализованные поверх виртуальной машины ОС; в последующем, такие системы также рассматриваются как элементы более сложных систем;
3.Вычислительные комплексы — системы аппаратных средств, ориентированные на повышение вычислительной мощности и надежности всего конструктива, а также — дополненные соотвествующей виртуальной машиной ОС; в последующем, такой комплекс также может рассматривается как отдельная ЭВМ или составляющая часть вычислительной системы.
Распределенные системы группируют «современное направление» развития цифровых технологий, основной характеристикой которых является интеграция сосредоточенных систем (ЭВМ, ВС) на основе сетевых техно-логий. Важной особенностью таких систем является их свойство несводи-мости к моделям сосредоточенных систем. Обычно, это определяется самой природой интегрируемых приложений, например, программное обеспечение клиента банка должно быть отделено от ПО самого банка в силу норма-тивных требований к проведению финансовых операций.
Распределенные вычислительные сети (РВ-сети) — распределенные системы, дополнительно интерпретируемые схемой рисунка 1.1.
Рисунок 1.1 — Обобщенная модель РВ-сетей
С целью более полного раскрытия терминологии и содержания предмет-
6
