Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Предметно-ориентированное проектирование в Enterprise Java с помощью Jakarta ЕЕ, Eclipse MicroProfile, Spring Boot и программной среды Axon Framework

Покупка
Артикул: 748361.01.99
Доступ онлайн
999 ₽
В корзину
В книге подробно рассматриваются реализации шаблонов предметно-ориентированного проектирования с применением различных инструментальных средств и рабочих программных сред из Enterprise Java Space. При таком подходе читатель получает завершенную картину и возможность практического применения любого из этих средств в процессе предметно-ориентированного проектирования. В начальных главах описывается эталонная реализация проекта Cargo Tracker -создание монолитного приложения с использованием платформы Jakarta ЕЕ. Затем рассматривается полный процесс преобразования монолитного приложения в архитектуру, основанную на микросервисах. В заключительных главах демонстрируется создание версии приложения с использованием шаблонов CORS и Event Sourcing (ES); основной рабочей средой является Axon Framework. Издание будет полезно специалистам, приступающим к работе в среде Enterprise Java, ведущим разработчикам, которые осуществляют переход с монолитной архитектуры к архитектурам на основе микросервисов, а также для архитекторов ПО, осваивающих методику предметно-ориентированного проектирования для создания приложений.
Наир, В. Предметно-ориентированное проектирование в Enterprise Java с помощью Jakarta ЕЕ, Eclipse MicroProfile, Spring Boot и программной среды Axon Framework : практическое руководство / В. Наир ; пер. с англ. А. В. Снастина. - Москва : ДМК Пресс, 2020. - 306 с. - ISBN 978-5-97060-872-2. - Текст : электронный. - URL: https://znanium.com/catalog/product/1210717 (дата обращения: 22.11.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов
Виджей Наир

Предметно-ориентированное  
проектирование в 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

Доступ онлайн
999 ₽
В корзину