# Domain-driven design, DDD

### Темы:

* Необходимость применения DDD
* Понимание терминов Поддомен (Subdomain) и Ограниченные контекст (Bounded Context), Карта контекстов (Context Map)
* Разработка Единого языка (Ubiquitous Language)
* Шаблоны DDD: Сущности, Объекты-значения, Доменные сервисы, Агрегаты, Корни Агрегатов, Репозитории, Доменные события
* Anemic Model vs Rich Model
* Построение Anti-Corruption Layer
* Имплементация DDD в .NET

### Контрольные вопросы:

* Когда нужно применять DDD?
* В чем разница между Поддоменом и Ограниченным контекстом?
* В чем смысл Ubiquitous Language и как его разработать?
* В чем разница между Сущностями и Объектами-значениями?
* Что означает Анемичная доменная модель?
* Как реализовать Доменный события?
* В каких случаях нужно размещать бизнес-логику в Доменных сервисах?
* Зачем может понадобиться создавать Anti-Corruption слой?

### Источники:

#### Книги:

* [Domain-Driven Design: Tackling Complexity in the Heart of Software](https://www.amazon.com/gp/product/0321125215/ref=dbs_a_def_rwt_hsch_vapi_taft_p1_i0)
* [Implementing Domain-Driven Design](https://www.amazon.com/Implementing-Domain-Driven-Design-Vaughn-Vernon/dp/0321834577)

#### Проекты:

* <https://github.com/ardalis/ddd-guestbook>
* <https://github.com/EduardoPires/EquinoxProject>

#### Статьи:

* [Domain-driven design: рецепт для прагматика](https://habr.com/ru/company/jugru/blog/440772/)
* [Anemic Model vs Rich Model](https://thevaluable.dev/anemic-domain-mode)
* [Wrapping your business logic with anti-corruption layers – NET Core ](https://www.thereformedprogrammer.net/wrapping-your-business-logic-with-anti-corruption-layers-net-core/)
* [Domain Driven Design на практике](https://habr.com/ru/post/334126/)
* [Как мы попробовали DDD, CQRS и Event Sourcing и какие выводы сделали](https://habr.com/ru/post/313110/)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://g-klensky.gitbook.io/roadmap/tech-skills/principy-i-metodologii/arkhitekturnye-shablony-i-atributy-kachestva/domain-driven-design-ddd.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
