Laravel DDD - webkoth/style-guide-php-laravel GitHub Wiki

При разделении архитектуры приложения на уровни принципы обычно включают разделение различных обязанностей и функций для достижения модульной и удобной в сопровождении конструкции. Вот подробное описание трех часто используемых уровней: прикладного уровня, уровня инфраструктуры и уровня домена:

App Layer

Уровень приложения отвечает за обработку пользовательского интерфейса, взаимодействие с пользователем и бизнес-логику приложения. Он фокусируется на уровне представления и координирует взаимодействие между пользователем и нижележащими уровнями. Этот уровень инкапсулирует все функции и функции, которые непосредственно соответствуют конкретным требованиям и вариантам использования приложения. Он включает в себя такие компоненты, как пользовательские интерфейсы, обработка пользовательского ввода, механизмы аутентификации и авторизации, управление рабочим процессом и бизнес-правила для конкретных приложений. Уровень приложения взаимодействует как с уровнем инфраструктуры, так и с уровнем домена. Он получает пользовательский ввод и переводит его в команды или запросы, понятные на уровне домена. Он также использует службы и компоненты, предоставляемые уровнем инфраструктуры, для выполнения таких задач, как хранение данных, интеграция внешних служб и обмен данными.

Infrastructure Layer

Уровень инфраструктуры фокусируется на предоставлении необходимой технической инфраструктуры и поддержки для работы приложения. Он включает компоненты, связанные с хранением данных, протоколами связи, интеграцией внешних служб и другими техническими проблемами. Этот уровень обычно абстрагируется от конкретных деталей реализации и предоставляет общие интерфейсы или API для взаимодействия с прикладным уровнем (App). Уровень инфраструктуры отвечает за управление и предоставление доступа к системам хранения данных, таким как базы данных или файловые системы. Он также может обрабатывать связь с внешними службами, такими как API, очереди сообщений или шлюзы электронной почты. Кроме того, он может включать компоненты, связанные с кэшированием, ведением журнала, безопасностью и оптимизацией производительности.

Уровень приложения взаимодействует с уровнем инфраструктуры через четко определенные интерфейсы или API. Он полагается на службы инфраструктуры для выполнения своих требований, таких как хранение или извлечение данных, отправка уведомлений или выполнение других технических операций.

Domain Layer

Уровень домена представляет основную логику домена и бизнес-правила приложения. Он инкапсулирует концепции, объекты и операции, характерные для проблемной области, к которой обращается приложение. Этот уровень фокусируется на моделировании и реализации поведения и функций, непосредственно связанных с бизнес-требованиями приложения. Уровень домена отвечает за управление и соблюдение бизнес-правил, выполнение сложных вычислений, применение проверок и обеспечение целостности данных. Обычно он включает в себя сущности, объекты-значения, службы и репозитории, которые в совокупности представляют модель предметной области. Модель предметной области определяет структуру, поведение и отношения сущностей и объектов в предметной области приложения.

Уровень приложения активно взаимодействует с уровнем предметной области. Он отправляет команды или запросы на уровень домена для выполнения операций, специфичных для домена. Уровень домена, в свою очередь, обрабатывает эти команды, выполняет необходимую бизнес-логику и может соответствующим образом изменять состояние приложения. Он также может возвращать результаты или уведомления обратно на прикладной уровень для представления или дальнейшей обработки.

В целом, разделение на эти уровни позволяет разделить проблемы, что приводит к лучшей ремонтопригодности, тестируемости и масштабируемости приложения. Уровень приложения обрабатывает взаимодействия с пользователем и логику конкретного приложения, уровень инфраструктуры обеспечивает техническую поддержку и возможности интеграции, а уровень домена фокусируется на основных бизнес-правилах и поведении приложения. Четко определяя обязанности и взаимодействие между этими уровнями, разработчики могут проектировать и разрабатывать сложные приложения со структурированной и управляемой архитектурой.

Слой приложения App Layer

Прикладной уровень — это уровень, клиенты которого обычно являются внешними запросами (через некоторые источники ввода, такие как обращение HTTP, вызов API или операция, реализованная с помощью SOAP). Клиенты этого уровня обычно являются пользователями приложения. Когда что-то должно произойти с Что касается бизнес-правил или бизнес-объектов, прикладной уровень не имеет отношения к их напрямую. Вместо этого он имеет дело с уровнем инфраструктуры, который лучше всех знает, как справиться с различные тонкости работы с объектами на уровне предметной области (или на уровне модели). Здесь несколько разъяснений компонентов, которые существуют в каждом слое:

• Службы приложений находятся на уровне приложений, но лишены какой-либо логики домена. • Они контролируют постоянство транзакций и безопасность. • Они могут отправлять уведомления о событиях в другие системы. • Они составляют сообщения электронной почты для пользователей. • Они могут подписываться на события, которые исходят от доменного уровня. • Службы приложений внутри этого уровня являются прямыми клиентами доменная модель.

Слой инфраструктуры Infrastructure Layer

Уровень инфраструктуры содержит следующее: • Содержит репозитории, которые внедряются на уровне инфраструктуры. для интерфейса, определенного в домене •Можно перевернуть «вверх ногами» при использовании вместе с внедрение зависимостей, что дает инфраструктурному уровню возможность реализовать любой интерфейс в слоях ниже него • Фабрики могут существовать на этом уровне (или на уровне домена) • Механизмы сохранения

Слой модели (уровень предметной области) Domain Layer

Уровень модели содержит специфические для бизнеса правила и сущности, которые компания, построил их использует для того, чтобы функционировать. Помните, код — это бизнес. Относитесь к этому как к такой. 50 • Службы домена обрабатывают определенные процессы и задачи, связанные с домен. • Этот уровень публикует события предметной области для остальной части приложения. реагировать на.Глава 2 Базовый учебный лагерь •Клиенты этой модели обычно существуют на прикладном уровне. • Ключевыми являются ограниченные контексты и разделение бизнес-компонентов. Важно отметить несколько вещей о слое модели. • Уровень модели является самым важным слоем в любом приложении. • Другие уровни, существующие в приложении, предназначены только для поддержки объекты в слое модели. • Постоянная итерация, реформирование, уточнение и уточнение Уровень модели важен в распределенном приложении DDD. •Слой модели (уровень предметной области) находится в центре внимания в доменно-ориентированный дизайн. • Улучшения модели обычно вносятся только после длительных обсуждения того, как бизнес работает и функционирует, обычно между разработчиком и каким-либо экспертом в предметной области. Pasted image 20230718180831