Reo.Core.BaseDomainModels.MediatR
6.0.408
See the version list below for details.
dotnet add package Reo.Core.BaseDomainModels.MediatR --version 6.0.408
NuGet\Install-Package Reo.Core.BaseDomainModels.MediatR -Version 6.0.408
<PackageReference Include="Reo.Core.BaseDomainModels.MediatR" Version="6.0.408" />
<PackageVersion Include="Reo.Core.BaseDomainModels.MediatR" Version="6.0.408" />
<PackageReference Include="Reo.Core.BaseDomainModels.MediatR" />
paket add Reo.Core.BaseDomainModels.MediatR --version 6.0.408
#r "nuget: Reo.Core.BaseDomainModels.MediatR, 6.0.408"
#:package Reo.Core.BaseDomainModels.MediatR@6.0.408
#addin nuget:?package=Reo.Core.BaseDomainModels.MediatR&version=6.0.408
#tool nuget:?package=Reo.Core.BaseDomainModels.MediatR&version=6.0.408
Reo.Core.BaseDomainModels.MediatR
Описание пакета
Пакет Reo.Core.BaseDomainModels.MediatR предоставляет набор базовых классов и интерфейсов для построения приложений на основе Domain-Driven Design (DDD) с интеграцией MediatR. Он решает задачи структурирования бизнес-логики, управления доменными событиями и командами, а также обеспечивает удобный способ взаимодействия с репозиториями.
Основные функции:
- Поддержка доменных моделей (агрегатов) с идентификаторами.
- Интеграция с MediatR для обработки команд и событий.
- Абстракции для репозиториев (чтение и запись данных).
- Упрощение реализации паттернов CQRS и Event Sourcing.
Основные компоненты
1. IReoAggregateRoot<TId>
Интерфейс для агрегатов доменной модели. Определяет обязательные свойства и методы, такие как Id
и методы для
обработки команд и событий.
2. IReoDomainCommand / IReoDomainCommandWithResult
Интерфейсы для команд, которые могут быть обработаны через MediatR. IReoDomainCommand
используется для команд без
возвращаемого значения, а IReoDomainCommandWithResult
— для команд, возвращающих bool
.
3. IReoDomainEvent
Интерфейс для доменных событий, реализующих INotification
из MediatR. Используется для публикации событий после
изменения состояния агрегата.
4. IReoDomainCommandsExecutor / IReoDomainEventsExecutor
Интерфейсы для исполнения команд и событий. Реализуются в базовых классах, таких как ReoAggregateRoot
, и обеспечивают
интеграцию с MediatR.
5. IReoDomainReadOnlyRepository<TAggregateRoot> / IReoDomainWriteOnlyRepository<TAggregateRoot>
Абстракции для репозиториев. Предоставляют методы для чтения и записи агрегатов в хранилище данных.
6. ReoAggregateRoot<TId>
Базовый класс для реализации агрегатов. Реализует IReoAggregateRoot<TId>
, IReoDomainCommandsExecutor
,
IReoDomainEventsExecutor
и предоставляет методы для добавления команд и событий.
Требования
- .NET: 8.0 и выше.
- Зависимости:
Установка
NuGet Package Manager
Install-Package Reo.Core.BaseDomainModels.MediatR
.NET CLI
dotnet add package Reo.Core.BaseDomainModels.MediatR
Настройка
Регистрация в DI-контейнере (ASP.NET Core)
Добавьте сервисы в ConfigureServices
в Startup.cs
или Program.cs
:
services.AddMediatR(cfg => {
cfg.RegisterServicesFromAssembly(typeof(Startup).Assembly);
});
Пример регистрации репозиториев
services.AddScoped<IReoDomainReadOnlyRepository<MyAggregateRoot>, MyRepository>();
services.AddScoped<IReoDomainWriteOnlyRepository<MyAggregateRoot>, MyRepository>();
Использование
Пример 1: Создание агрегата и обработка команды
public class CreateOrderCommand : IReoDomainCommand
{
public Guid CustomerId { get; set; }
public List<OrderItem> Items { get; set; }
}
public class OrderAggregate : ReoAggregateRoot<Guid>
{
public Guid CustomerId { get; private set; }
public List<OrderItem> Items { get; private set; }
public void Apply(CreateOrderCommand command)
{
CustomerId = command.CustomerId;
Items = command.Items;
AddDomainEvent(new OrderCreatedEvent { OrderId = Id });
}
}
public class OrderCreatedEvent : IReoDomainEvent
{
public Guid OrderId { get; set; }
}
Пример 2: Обработчик команды
public class CreateOrderCommandHandler : IRequestHandler<CreateOrderCommand>
{
private readonly IReoDomainWriteOnlyRepository<OrderAggregate> _repository;
public CreateOrderCommandHandler(IReoDomainWriteOnlyRepository<OrderAggregate> repository)
{
_repository = repository;
}
public async Task Handle(CreateOrderCommand command, CancellationToken token)
{
var aggregate = new OrderAggregate();
aggregate.Apply(command);
await _repository.SaveAsync(aggregate, token);
}
}
Пример 3: Обработчик события
public class OrderCreatedEventHandler : INotificationHandler<OrderCreatedEvent>
{
public async Task Handle(OrderCreatedEvent notification, CancellationToken token)
{
// Логика обработки события (например, отправка уведомления).
Console.WriteLine($"Order created: {notification.OrderId}");
}
}
Лицензия
Этот пакет распространяется под лицензией MIT License.
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
- AutoMapper (>= 11.0.1)
- FluentValidation (>= 11.11.0)
- FluentValidation.AspNetCore (>= 11.3.1)
- Flurl (>= 4.0.0)
- Flurl.Http (>= 4.0.2)
- JetBrains.Annotations (>= 2024.3.0)
- MediatR (>= 12.5.0 && < 13.0.0)
- Microsoft.AspNetCore.Mvc.NewtonsoftJson (>= 8.0.17)
- Microsoft.Bcl.AsyncInterfaces (>= 9.0.6)
- Microsoft.CSharp (>= 4.7.0)
- Microsoft.Extensions.Configuration (>= 9.0.6)
- Microsoft.Extensions.Configuration.Abstractions (>= 9.0.6)
- Microsoft.Extensions.Configuration.Binder (>= 9.0.6)
- Microsoft.Extensions.DependencyInjection (>= 9.0.6)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 9.0.6)
- Microsoft.Extensions.Http.Polly (>= 9.0.6)
- Microsoft.Extensions.Logging (>= 9.0.6)
- Microsoft.Extensions.Logging.Abstractions (>= 9.0.6)
- Microsoft.Extensions.Options (>= 9.0.6)
- Microsoft.Extensions.Options.ConfigurationExtensions (>= 9.0.6)
- NEST (>= 7.17.5)
- Newtonsoft.Json (>= 13.0.3)
- Polly (>= 8.5.0)
- RedLock.net (>= 2.3.2)
- Reo.Core.BaseDomainModels (>= 6.0.408)
- System.Collections.Immutable (>= 9.0.6)
- System.ComponentModel.Annotations (>= 5.0.0)
- System.Configuration.ConfigurationManager (>= 9.0.6)
- System.IO.Abstractions (>= 22.0.14)
- System.IO.Pipelines (>= 9.0.6)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on Reo.Core.BaseDomainModels.MediatR:
Package | Downloads |
---|---|
Reo.Core.Application.Abstractions.MediatR
Package Description |
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last Updated |
---|---|---|
8.0.473 | 9 | 7/23/2025 |
8.0.472 | 8 | 7/23/2025 |
8.0.470 | 10 | 7/23/2025 |
8.0.469 | 13 | 7/23/2025 |
8.0.468 | 10 | 7/23/2025 |
8.0.467 | 9 | 7/23/2025 |
8.0.466 | 13 | 7/23/2025 |
8.0.465 | 10 | 7/23/2025 |
8.0.464 | 12 | 7/23/2025 |
8.0.463 | 11 | 7/23/2025 |
8.0.462 | 14 | 7/22/2025 |
8.0.461 | 12 | 7/22/2025 |
8.0.460 | 15 | 7/21/2025 |
8.0.459 | 43 | 7/18/2025 |
8.0.458 | 73 | 7/18/2025 |
8.0.457 | 106 | 7/17/2025 |
8.0.456 | 104 | 7/17/2025 |
8.0.455 | 108 | 7/17/2025 |
8.0.454 | 110 | 7/17/2025 |
8.0.453 | 105 | 7/17/2025 |
8.0.452 | 106 | 7/17/2025 |
8.0.451 | 104 | 7/17/2025 |
8.0.450 | 106 | 7/17/2025 |
8.0.449 | 108 | 7/17/2025 |
8.0.448 | 107 | 7/17/2025 |
8.0.447 | 107 | 7/16/2025 |
8.0.446 | 112 | 7/16/2025 |
8.0.445 | 105 | 7/16/2025 |
8.0.444 | 107 | 7/16/2025 |
8.0.443 | 111 | 7/16/2025 |
8.0.442 | 111 | 7/16/2025 |
8.0.439 | 130 | 7/15/2025 |
8.0.438 | 134 | 7/15/2025 |
8.0.437 | 128 | 7/15/2025 |
8.0.436 | 126 | 7/15/2025 |
8.0.435 | 131 | 7/15/2025 |
8.0.433 | 136 | 7/14/2025 |
8.0.432 | 133 | 7/14/2025 |
8.0.431 | 117 | 7/11/2025 |
8.0.430 | 117 | 7/11/2025 |
8.0.429 | 138 | 7/10/2025 |
8.0.428 | 133 | 7/10/2025 |
8.0.427 | 139 | 7/9/2025 |
8.0.426 | 141 | 7/8/2025 |
8.0.425 | 136 | 7/8/2025 |
8.0.424 | 136 | 7/8/2025 |
8.0.423 | 140 | 7/8/2025 |
8.0.422 | 131 | 7/8/2025 |
8.0.421 | 139 | 7/8/2025 |
8.0.420 | 132 | 7/7/2025 |
8.0.419 | 135 | 7/7/2025 |
8.0.418 | 135 | 7/7/2025 |
8.0.417 | 134 | 7/7/2025 |
8.0.416 | 133 | 7/6/2025 |
8.0.415 | 99 | 7/4/2025 |
8.0.414 | 103 | 7/4/2025 |
8.0.411 | 144 | 7/3/2025 |
8.0.410 | 140 | 7/3/2025 |
8.0.409 | 139 | 7/3/2025 |
8.0.408 | 139 | 7/1/2025 |
8.0.407 | 129 | 7/1/2025 |
8.0.406 | 135 | 7/1/2025 |
8.0.405 | 139 | 7/1/2025 |
8.0.404 | 129 | 6/26/2025 |
8.0.403 | 134 | 6/26/2025 |
8.0.401 | 182 | 6/24/2025 |
8.0.400 | 143 | 6/24/2025 |
8.0.399 | 136 | 6/23/2025 |
8.0.398 | 136 | 6/23/2025 |
8.0.397 | 96 | 6/20/2025 |
8.0.396 | 146 | 6/19/2025 |
8.0.395 | 136 | 6/18/2025 |
8.0.394 | 138 | 6/18/2025 |
8.0.392 | 138 | 6/18/2025 |
8.0.390 | 148 | 6/18/2025 |
6.0.473 | 9 | 7/23/2025 |
6.0.472 | 8 | 7/23/2025 |
6.0.470 | 7 | 7/23/2025 |
6.0.469 | 11 | 7/23/2025 |
6.0.468 | 8 | 7/23/2025 |
6.0.467 | 8 | 7/23/2025 |
6.0.466 | 9 | 7/23/2025 |
6.0.465 | 12 | 7/23/2025 |
6.0.464 | 12 | 7/23/2025 |
6.0.463 | 9 | 7/23/2025 |
6.0.462 | 10 | 7/22/2025 |
6.0.461 | 15 | 7/22/2025 |
6.0.460 | 14 | 7/21/2025 |
6.0.459 | 39 | 7/18/2025 |
6.0.458 | 70 | 7/18/2025 |
6.0.457 | 105 | 7/17/2025 |
6.0.456 | 110 | 7/17/2025 |
6.0.455 | 108 | 7/17/2025 |
6.0.454 | 105 | 7/17/2025 |
6.0.453 | 101 | 7/17/2025 |
6.0.452 | 100 | 7/17/2025 |
6.0.451 | 103 | 7/17/2025 |
6.0.450 | 102 | 7/17/2025 |
6.0.449 | 105 | 7/17/2025 |
6.0.448 | 104 | 7/17/2025 |
6.0.447 | 106 | 7/16/2025 |
6.0.446 | 106 | 7/16/2025 |
6.0.445 | 109 | 7/16/2025 |
6.0.444 | 110 | 7/16/2025 |
6.0.443 | 104 | 7/16/2025 |
6.0.442 | 103 | 7/16/2025 |
6.0.439 | 127 | 7/15/2025 |
6.0.438 | 122 | 7/15/2025 |
6.0.437 | 123 | 7/15/2025 |
6.0.436 | 127 | 7/15/2025 |
6.0.435 | 125 | 7/15/2025 |
6.0.433 | 127 | 7/14/2025 |
6.0.432 | 125 | 7/14/2025 |
6.0.431 | 108 | 7/11/2025 |
6.0.430 | 113 | 7/11/2025 |
6.0.429 | 129 | 7/10/2025 |
6.0.428 | 130 | 7/10/2025 |
6.0.427 | 129 | 7/9/2025 |
6.0.426 | 129 | 7/8/2025 |
6.0.425 | 133 | 7/8/2025 |
6.0.424 | 131 | 7/8/2025 |
6.0.423 | 128 | 7/8/2025 |
6.0.422 | 122 | 7/8/2025 |
6.0.421 | 131 | 7/8/2025 |
6.0.420 | 127 | 7/7/2025 |
6.0.419 | 129 | 7/7/2025 |
6.0.418 | 124 | 7/7/2025 |
6.0.417 | 127 | 7/7/2025 |
6.0.416 | 128 | 7/6/2025 |
6.0.415 | 88 | 7/4/2025 |
6.0.414 | 95 | 7/4/2025 |
6.0.411 | 131 | 7/3/2025 |
6.0.410 | 127 | 7/3/2025 |
6.0.409 | 131 | 7/3/2025 |
6.0.408 | 127 | 7/1/2025 |
6.0.407 | 125 | 7/1/2025 |
6.0.406 | 128 | 7/1/2025 |
6.0.405 | 136 | 7/1/2025 |
6.0.404 | 124 | 6/26/2025 |
6.0.403 | 127 | 6/26/2025 |
6.0.401 | 132 | 6/24/2025 |
6.0.400 | 132 | 6/24/2025 |
6.0.399 | 131 | 6/23/2025 |
6.0.398 | 136 | 6/23/2025 |
6.0.397 | 93 | 6/20/2025 |
6.0.396 | 133 | 6/19/2025 |
6.0.395 | 133 | 6/18/2025 |
6.0.394 | 133 | 6/18/2025 |
6.0.392 | 132 | 6/18/2025 |
6.0.390 | 134 | 6/18/2025 |