- •Введение
- •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
- •Вопросы для самопроверки
- •Заключение
- •Список использованных источников
- •Алфавитный указатель
Министрество науки и высшего образования Российской Федерации
Томский государственный университет систем управления и радиоэлектроники
В.Г. Резник
РАСПРЕДЕЛЕННЫЕ СЕРВИСОРИЕНТИРОВАННЫЕ СИСТЕМЫ
Учебное пособие
Томск
2020
УДК 004.75 ББК 30.2-5-05
Р 344
Рецензенты:
Бойченко И.В., программист АО «ИнфоТеКС», кандидат техн. наук Ефремов В.А., ведущий инженер ООО «КС Групп», кандидат техн. наук
Резник, Виталий Григорьевич
Р 344 Распределенные сервис-ориентированные системы. Учебное пособие / В.Г. Резник. – Томск : Томск. гос. ун-т систем упр. и радиоэлектроники, 2020. – 305 с.
Учебное пособие предназначено для обучения дисциплине «Распределенные сервисориентированные системы» для студентов направления подготовки магистратуры: 09.04.01 «Информатика и вычислительная техника», направленность (профиль) программы - «Программное обеспечение вычислительных машин, систем и компьютерных сетей».
Одобрено на заседании каф. АСУ протокол № 5 от 22.04.2021
УДК 004.75 ББК 30.2-5-05
© Резник В. Г., 2020 © Томск. гос. ун-т систем упр. и
радиоэлектроники, 2020
Введение
Данное учебное пособие содержит учебный материал предназначенный для студентов магистратуры по дисциплине «Распределенные сервис-ориенти- рованные системы» (РСОС) для направления подготовки 09.04.01 «Информатика и вычислительная техника».
Предметная область изучаемой дисциплины является составной частью более обширного научно-технического направления, часто обозначаемого как «Распределенные вычислительные системы» и изучаемого в рамках направления подготовки 09.03.01 на уровне бакалавриата. Соответственно, принятый в данном пособии стиль изложения предполагает, что студент уже знаком с определениями и аргументацией учебного пособия [1] и использует его в качаестве базовой основы изучаемой дисциплины.
Целью изучаемой дисциплины РСОС является изучение общих архитектурных принципов построения сервис-ориентированных систем, териториально распределенных по множеству вычислительных машин (ВМ) и объединенных как средствами компьютерных сетей, так и стандартизированными средствами программного обеспечения.
Основной задачей изучения дисциплины является формирование у обучающихся теоретических представлений о современных подходах, которые направлены на проектирование элементов РСОС, а также на практическое освоение методов и инструментальных средств, способствующих их успешной реализации.
В процессе обучения студент использует литературные источники, рекомендованные программой обучения по данному курсу, а по результатам обучения он должен:
а) знать общие принципы построения и терминологию описания распределенных сервис-ориентированных систем; теорию и практику предметной области; этапы и технологию проектирования РСОС;
б) уметь самостоятельно разрабатывать программы, реализующие элементы распределенных систем; проводить технологическое описание распределенной предметной области; использовать инструментальные средства реализации элементов РСОС;
в) владеть инструментальными средствами языка Java специализированными на создание распределенных сервисных систем; инструментальными средствами создания веб-сервисов.
Общее содержание дисциплины по главам отражает следующую познавательную тематику:
а) Тема 1. Предметная область и терминология РСОС.
3
б) Тема 2. Использование компоненты JSF контейнера Web. в) Тема 3. Современные способы доступа к данным.
г) Тема 4. Обработка документов XML и JSON. д) Тема 5. Web-службы SOAP.
е) Тема 6. Web-службы в стиле REST.
Глава 1 дает краткое описание изучаемой предметной области. Ее содержание основано на обобщении материала, изложенного в главах 1 и 5 учебного пособия [1], и конкретизировано для целевой предметной области. В ней также раскрывается назначение и тематика последующих глав.
Глава 2, озаглавленная как «Использование компоненты JSF контейнера Web», посвящена демонстрации контейнерной и компонентной технологии программной платформы Java EE на примере серверной парадигмы представления визуальной информации.
Глава 3 раскрывает программную платформу Java EE, демонстрируя новые подходы работы с СУБД, отличные от классической парадигмы SQL-запро- сов. Такими подходами являются EJB-компоненты серверов приложений и технология JPA, обеспечивающая объектно-реляционное отображение объектовсущностей на структуру таблиц баз данных.
Глава 4 описывает инструментарий платформы Java EE для работы с информацией, представленной форматами документов XML и JSON, что обеспечивает обмен сообщениями в сервис-ориентированных системах.
Глава 5 непосредственно рассматривает классическое представление сер- вис-ориентированных систем, основанных на использовании протокола SOAP и языка описания Web-сервисов — WSDL.
Глава 6 завершает учебный курс дисциплины, демонстрируя реализацию Web-служб в стиле REST.
В заключении к данному учебному пособию подводятся итоги по всему объему теоретического и практического материала дисциплины «Распределенные сервис-ориентированные системы». Эта часть определяет границы усвоенного студентом учебного материала и намечает пути дальнейшего изучения рассмотренной тематики.
4