Предметно-ориентированное проектирование в Enterprise Java с помощью Jakarta ЕЕ, Eclipse MicroProfile, Spring Boot и программной среды Axon Framework
Покупка
Тематика:
Программирование на Java
Издательство:
ДМК Пресс
Автор:
Наир Виджей
Перевод:
Снастин А. В.
Год издания: 2020
Кол-во страниц: 306
Дополнительно
Вид издания:
Практическое пособие
Уровень образования:
ВО - Специалитет
ISBN: 978-5-97060-872-2
Артикул: 748361.01.99
В книге подробно рассматриваются реализации шаблонов предметно-ориентированного проектирования с применением различных инструментальных средств и рабочих программных сред из Enterprise Java Space. При таком подходе читатель получает завершенную картину и возможность практического применения любого из этих средств в процессе предметно-ориентированного проектирования. В начальных главах описывается эталонная реализация проекта Cargo Tracker -создание монолитного приложения с использованием платформы Jakarta ЕЕ. Затем рассматривается полный процесс преобразования монолитного приложения в архитектуру, основанную на микросервисах. В заключительных главах демонстрируется создание версии приложения с использованием шаблонов CORS и Event Sourcing (ES); основной рабочей средой является Axon Framework. Издание будет полезно специалистам, приступающим к работе в среде Enterprise Java, ведущим разработчикам, которые осуществляют переход с монолитной архитектуры к архитектурам на основе микросервисов, а также для архитекторов ПО, осваивающих методику предметно-ориентированного проектирования для создания приложений.
Тематика:
ББК:
УДК:
ОКСО:
- ВО - Специалитет
- 09.05.01: Применение и эксплуатация автоматизированных систем специального назначения
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов
Виджей Наир Предметно-ориентированное проектирование в Enterprise Java с помощью Jakarta EE, Eclipse MicroProfile, Spring Boot и программной среды Axon Framework
Practical Domain-Driven Design in Enterprise Java Using Jakarta EE, Eclipse MicroProfile, Spring Boot, and the Axon Framework Vijay Nair
Предметно-ориентированное проектирование в Enterprise Java с помощью Jakarta EE, Eclipse MicroProfile, Spring Boot и программной среды Axon Framework Виджей Наир Москва, 2020
УДК 004.42Java ББК 32.972 Н20 Наир В. Н20 Предметно-ориентированное проектирование в Enterprise Java с помощью Jakarta EE, Eclipse MicroProfile, Spring Boot и программной среды Axon Framework / пер. с англ. А. В. Снастина. – М.: ДМК Пресс, 2020. – 306 с.: ил. ISBN 978-5-97060-872-2 В книге подробно рассматриваются реализации шаблонов предметно-ориентированного проектирования с применением различных инструментальных средств и рабочих программных сред из Enterprise Java Space. При таком подходе читатель получает завершенную картину и возможность практического применения любого из этих средств в процессе предметно-ориентированного проектирования. В начальных главах описывается эталонная реализация проекта Cargo Tracker – создание монолитного приложения с использованием платформы Jakarta EE. Затем рассматривается полный процесс преобразования монолитного приложения в архитектуру, основанную на микросервисах. В заключительных главах демонстрируется создание версии приложения с использованием шаблонов CQRS и Event Sourcing (ES); основной рабочей средой является Axon Framework. Издание будет полезно специалистам, приступающим к работе в среде Enterprise Java, ведущим разработчикам, которые осуществляют переход с монолитной архитектуры к архитектурам на основе микросервисов, а также для архитекторов ПО, осваивающих методику предметно-ориентированного проектирования для создания приложений. УДК 004.42Java ББК 32.972 First published in English under the title Practical Domain-Driven Design in Enterprise Java; Using Jakarta EE, Eclipse MicroProfile, Spring Boot, and the Axon Framework by Vijay Nair, edition: 1. This edition has been translated and published under licence from APress Media, LLC, part of Springer Nature. APress Media, LLC, part of Springer Nature takes no responsibility and shall not be made liable for the accuracy of the translation. Russian language edition copyright © 2020 by DMK Press. All rights reserved. Все права защищены. Любая часть этой книги не может быть воспроизведена в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. ISBN 978-1-4842-4542-2 (англ.) Copyright © Vijay Nair, 2019 ISBN 978-5-97060-872-2 (рус.) © Оформление, издание, перевод, ДМК Пресс, 2020
Посвящается Тине и Майе
Содержание Об авторе ...........................................................................................................11 О техническом рецензенте ........................................................................12 Благодарности .................................................................................................13 Введение ............................................................................................................14 От издательства ..............................................................................................15 Глава 1. Предметно-ориентированное проектирование ...............16 Концепции предметно-ориентированного проектирования ...........................17 Предметная область/бизнес-домен .................................................................17 Поддомены/ограниченные контексты ...........................................................19 Модель предметной области................................................................................22 Агрегаты/объекты-сущности/объекты-значения ..........................................23 Правила предметной области ..........................................................................24 Команды/запросы .............................................................................................25 События .............................................................................................................26 Саги ....................................................................................................................26 Резюме ...................................................................................................................27 Глава 2. Проект Cargo Tracker ....................................................................29 Основная предметная область (домен) ...............................................................29 Проект Cargo Tracker: поддомены/ограниченные контексты ...........................30 Проект Cargo Tracker: модель предметной области (домена) ...........................33 Агрегаты ............................................................................................................34 Идентификаторы агрегатов .............................................................................34 Сущности ...........................................................................................................35 Объекты-значения ...........................................................................................36 Проект Cargo Tracker: операции модели предметной области (домена) .........39 Саги ........................................................................................................................40 Сервисы модели предметной области ................................................................41 Проектирование сервисов модели предметной области (домена) ...................43 Проект Cargo Tracker : реализации с использованием предметно-ориентированного проектирования ...............................................45 Резюме ...................................................................................................................46 Глава 3. Проект Cargo Tracker: Jakarta EE .............................................47 Платформа Java EE ................................................................................................48 Смена торговой марки на Jakarta EE и дальнейшее развитие ...........................48
Содержание 7 Спецификации платформы Jakarta EE ................................................................49 Технологии веб-приложений ...........................................................................50 Сервлет Java ..............................................................................................50 JavaServer Faces .........................................................................................51 JavaServer Pages .........................................................................................51 Expression Language ..................................................................................51 JSP Standard Tag Library (JSTL) .................................................................52 Java API для WebSocket .............................................................................52 Java API для связывания с форматом JSON ............................................52 Java API для обработки формата JSON ....................................................52 Технологии корпоративных приложений ......................................................52 Enterprise Java Beans (3.2) .........................................................................52 Contexts and Dependency Injection для Java (2.0) ....................................53 Валидация компонентов Bean .................................................................53 Java Persistence API (JPA) ..........................................................................53 Java Transaction API (JTA) .........................................................................54 Общие аннотации (Common Annotations) ..............................................54 Перехватчики (Interceptors) .....................................................................54 Веб-сервисы в Jakarta EE ..................................................................................54 Java API for RESTful Web Services (JAX-RS) ..............................................54 Технологии обеспечения безопасности ..........................................................54 Java EE Security API (1.0) ...........................................................................55 Итоговый обзор спецификаций Jakarta EE .....................................................55 Cargo Tracker как модульное монолитное приложение .....................................55 Ограниченные контексты с использованием платформы Jakarta EE ...........56 Пакет interfaces .........................................................................................58 Пакет application .......................................................................................59 Пакет domain .............................................................................................60 Пакет infrastructure...................................................................................61 Совместно используемые ядра ................................................................61 Реализация модели предметной области (домена) с использованием Jakarta EE ...........................................................................................................62 Агрегаты ....................................................................................................62 Сущности ...................................................................................................70 Объекты-значения ...................................................................................72 Правила предметной области (домена) ..................................................76 Команды ....................................................................................................77 Запросы .....................................................................................................78 Реализация сервисов предметной области с использованием Jakarta EE ....79 Входящие сервисы ............................................................................................79 RESTful API ........................................................................................................79 Собственные веб-API ........................................................................................80 Сервисы приложения .......................................................................................81 Сервисы приложения: события .......................................................................83 Исходящие сервисы ..........................................................................................86 Общая схема реализации .................................................................................87 Резюме ...................................................................................................................88
Содержание Глава 4. Проект Cargo Tracker: Eclipse MicroProfile ..........................89 Платформа Eclipse MicroProfile ............................................................................89 Платформа Eclipse MicroProfile: функциональные возможности .....................91 Платформа MicroProfile: основные спецификации .......................................93 Конфигурация Eclipse MicroProfile ..........................................................93 Проверка работоспособности Eclipse MicroProfile .................................94 Аутентификация Eclipse MicroProfile JWT Authentication .....................94 Метрики Eclipse MicroProfile....................................................................94 Eclipse MicroProfile OpenAPI ....................................................................94 Eclipse MicroProfile OpenTracing ..............................................................94 Eclipse MicroProfile Type Safe Rest Client .................................................95 Eclipse MicroProfile: спецификации поддержки .............................................95 Context and Dependency Injection (CDI) for Java (2.0) ..............................95 Общие аннотации .....................................................................................96 Java API for RESTful Web Services (JAX-RS) ..............................................96 Java API for JSON Binding ..........................................................................96 Java API for JSON Processing .....................................................................96 Итоговый обзор спецификаций Eclipse MicroProfile .....................................97 Реализация Cargo Tracker: Eclipse MicroProfile ...................................................97 Выбор реализации: проект Helidon MP ...........................................................98 Реализация Cargo Tracker: ограниченные контексты ....................................99 Ограниченные контексты: создание пакетов ..............................................101 Ограниченные контексты: структура пакета ...............................................103 Интерфейсы ............................................................................................104 Приложение ............................................................................................105 Предметная область (домен) .................................................................106 Инфраструктура ......................................................................................106 Реализация приложения Cargo Tracker .........................................................108 Модель предметной области (домена): реализация ....................................110 Модель основного домена: реализация ........................................................111 Агрегаты, сущности и объекты-значения ............................................111 Операции модели предметной области (домена) ........................................122 Команды ..................................................................................................122 Запросы ...................................................................................................125 События ...................................................................................................125 Сервисы модели предметной области (домена) ..........................................128 Входящие сервисы ..................................................................................129 Сервисы приложения .............................................................................136 Исходящие сервисы ................................................................................144 Итоговый обзор реализации..........................................................................159 Резюме .................................................................................................................160 Глава 5. Проект Cargo Tracker: платформа Spring ...........................161 Платформа Spring ...............................................................................................162 Spring Boot: функциональные возможности ................................................164 Spring Cloud .....................................................................................................165
Содержание 9 Итог краткого обзора рабочей среды Spring .................................................166 Ограниченные контексты и платформа Spring Boot ........................................166 Ограниченные контексты: формирование пакетов ....................................168 Ограниченные контексты: структура пакета ...............................................169 Пакет interfaces ...............................................................................................171 Пакет application .............................................................................................171 Пакет domain ...................................................................................................172 Пакет infrastructure .........................................................................................173 Реализация приложения Cargo Tracker .........................................................176 Модель предметной области (домена): реализация ........................................177 Модель основного домена: реализация ........................................................178 Агрегаты, сущности и объекты-значения ............................................178 Операции модели предметной области (домена) ........................................188 Команды ..........................................................................................................188 Запросы ...........................................................................................................191 События ...........................................................................................................192 Регистрация событий .............................................................................194 Сервисы модели предметной области (домена) ..............................................197 Входящие сервисы ..........................................................................................198 REST API ..................................................................................................198 Сервисы приложения .....................................................................................206 Сервисы приложения: делегирование команд и запросов .................207 Исходящие сервисы ........................................................................................211 Исходящие сервисы: классы репозиториев..........................................212 Исходящие сервисы: REST API ..............................................................213 Итоговый обзор реализации..........................................................................225 Резюме .................................................................................................................225 Глава 6. Проект Cargo Tracker: рабочая среда Axon .......................226 Шаблон Event Sourcing .......................................................................................227 Методика CQRS ...................................................................................................230 Рабочая среда Axon .............................................................................................233 Компоненты рабочей среды Axon .................................................................233 Компоненты предметной области (домена) Axon Framework .....................234 Агрегаты ..................................................................................................234 Команды и обработчики команд ...........................................................235 События и обработчики событий ..........................................................235 Обработчики запросов ...........................................................................235 Саги .........................................................................................................235 Компоненты модели регулирования и координации Axon Framework ......236 Шина команд ..........................................................................................236 Шина запросов ........................................................................................237 Шина событий .........................................................................................238 Саги .........................................................................................................239 Компоненты инфраструктуры Axon: Axon Server ........................................240 Приложение Cargo Tracker и рабочая среда Axon .............................................244 Ограниченные контексты в Axon ..................................................................244
Содержание Ограниченные контексты: создание артефакта ..........................................247 Ограниченные контексты: структура пакета ...............................................248 Пакет interfaces .......................................................................................249 Пакет application .....................................................................................250 Пакет domain ...........................................................................................251 Пакет infrastructure.................................................................................251 Реализация модели предметной области с использованием Axon.............254 Агрегаты ..................................................................................................254 Состояние ................................................................................................257 Обработка команд ..................................................................................261 Публикация событий ..............................................................................265 Сопровождение состояния ....................................................................267 Проекции агрегатов ...............................................................................278 Обработчики запросов ...........................................................................282 Саги .........................................................................................................286 Подведение итогов реализации ....................................................................291 Реализация сервисов модели предметной области (домена) с использованием Axon ..................................................................................292 Входящие сервисы ..................................................................................292 Сервисы приложения .............................................................................296 Резюме .................................................................................................................298 Предметный указатель ..............................................................................299