Core.RW
1.1.1
dotnet add package Core.RW --version 1.1.1
NuGet\Install-Package Core.RW -Version 1.1.1
<PackageReference Include="Core.RW" Version="1.1.1" />
<PackageVersion Include="Core.RW" Version="1.1.1" />
<PackageReference Include="Core.RW" />
paket add Core.RW --version 1.1.1
#r "nuget: Core.RW, 1.1.1"
#:package Core.RW@1.1.1
#addin nuget:?package=Core.RW&version=1.1.1
#tool nuget:?package=Core.RW&version=1.1.1
Core.RW — Domain Primitives & Consistency Model
Overview / Обзор
Core.RW предоставляет базовые строительные блоки для реализации систем, основанных на предметно-ориентированном проектировании (DDD), с явными границами согласованности и отслеживанием изменений состояния через доменные события.
This library is not a utility collection. Эта библиотека не является набором утилит.
It defines a domain execution model, including: Она определяет модель выполнения домена, включающую:
- Identity-based domain entities / Сущности с идентичностью
- Value-based objects / Объекты-значения
- Aggregate consistency boundaries / Границы согласованности агрегатов
- Domain event collection model / Модель сбора доменных событий
Architectural Intent / Архитектурное назначение
Core.RW предназначена для систем, которым необходимы:
- Strict domain encapsulation / Строгая инкапсуляция домена
- Explicit mutation boundaries / Явные границы изменений состояния
- Event-driven state propagation / Событийное распространение изменений
- Compatibility with event sourcing patterns / Совместимость с event sourcing
- Clear separation between domain and application concerns / Чёткое разделение домена и приложения
Domain Model Structure / Структура доменной модели
Core.RW построена вокруг четырёх основных концепций:
- Entities / Сущности
- Value Objects / Объекты-значения
- Aggregates / Агрегаты
- Domain Events / Доменные события
Entities / Сущности
Entity Представляет объект со стабильной идентичностью и жизненным циклом.
Сущности определяются своей идентичностью, а не набором свойств.
Key properties / Основные свойства:
- Identity is immutable / Идентичность неизменна
- Equality is based on identity / Сравнение основано на идентичности
- State may change over time / Состояние может изменяться
Responsibility / Ответственность:
Entity представляют доменные объекты, которые изменяются в рамках бизнес-правил.
Value Objects / Объекты-значения
ValueObject Представляет неизменяемый объект, полностью определяемый своими значениями.
Key properties / Основные свойства:
- No identity / Отсутствует идентичность
- Immutable by convention / Неизменяемость по соглашению
- Equality based on structure / Сравнение по структуре
Responsibility / Ответственность:
ValueObject Инкапсулирует доменные концепции, полностью определяемые значениями.
Examples / Примеры:
- Money / Деньги
- Address / Адрес
- Date range / Диапазон дат
- Measurement / Измерение
Aggregates / Агрегаты
AggregateRoot Представляет границу согласованности внутри доменной модели.
Агрегат гарантирует, что все внутренние изменения состояния корректны и согласованы.
Responsibility / Ответственность:
- Enforce domain invariants / Обеспечение инвариантов
- Control state mutations / Контроль изменений состояния
- Maintain internal consistency / Поддержание согласованности
- Collect domain events / Сбор доменных событий
Domain Events / Доменные события:
Агрегаты не публикуют события напрямую. Они только накапливают их во время выполнения. События извлекаются внешним слоем приложения.
Lifecycle flow / Жизненный цикл:
- Command is applied to AggregateRoot / Команда применяется к агрегату
- State is mutated internally / Изменяется внутреннее состояние
- Domain events are recorded / Записываются доменные события
- Events are retrieved externally / События извлекаются приложением
Domain Events / Доменные события
DomainEvent Представляет факт того, что в домене произошло значимое событие.
Key properties / Основные свойства:
- Immutable / неизменяемые
- Append-only / только добавление
- Generated by aggregates / создаются агрегатами
- Consumed outside domain boundary / обрабатываются вне домена
Key concept / Ключевая идея:
Доменные события описывают что произошло, а не что нужно сделать.
Lifecycle flow / Жизненный цикл:
- Created inside AggregateRoot / Создаются в агрегате
- Stored internally / Хранятся внутри агрегата
- Retrieved by application layer / Извлекаются приложением
- Dispatched externally / Отправляются во внешние системы
Design Principles / Принципы проектирования
1. Explicit Consistency Boundaries / Явные границы согласованности
Агрегаты задают строгие границы изменения состояния.
2. Identity vs Value Separation / Разделение идентичности и значений
- Entities = identity-based / сущности основаны на идентичности
- Value Objects = structure-based / объекты-значения основаны на структуре
3. Event Capture at Mutation Point / Фиксация событий в точке изменения
Доменные события фиксируются в момент изменения состояния
. Domain Isolation / Изоляция домена
Core.RW не зависит от внешних слоёв.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net8.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.1.1 | 77 | 6/3/2026 |
| 1.1.0 | 101 | 5/16/2026 |
| 1.0.0 | 121 | 4/12/2026 |
| 1.0.0-beta.1 | 193 | 10/5/2025 |
| 1.0.0-alpha.2 | 145 | 6/28/2025 |
| 1.0.0-alpha.1 | 127 | 6/20/2025 |