Замена сервисного уровня на MediatR – стоит ли это делать?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Замена сервисного уровня на MediatR – стоит ли это делать?

Сообщение Anonymous »

Считаете ли вы, что было бы разумно заменить мой уровень обслуживания или классы обслуживания на MediatR? Например, мои классы обслуживания выглядят так:

Код: Выделить всё

public interface IEntityService where TEntityDto : class, IDto
{
Task CreateAsync(TEntityDto entityDto);
Task DeleteAsync(int id);
Task GetAllAsync(SieveModel sieveModel);
Task GetByIdAsync(int id);
Task UpdateAsync(int id, TEntityDto entityDto);
}
Я хочу добиться своего рода модульной конструкции, чтобы другие динамически загружаемые модули
или плагины могли писать свои собственные обработчики уведомлений или команд для моего основного основного приложения.< /p>

В настоящее время мое приложение вообще не управляется событиями, и у моих динамически загружаемых плагинов нет простого способа взаимодействия.

Я могу либо включить MediatR в свои контроллеры, полностью удалив уровень обслуживания, либо использовать его со своим уровнем обслуживания, просто публикуя уведомления, чтобы мои плагины могли их обрабатывать.

В настоящее время мой логика в основном CRUD, но перед созданием, обновлением и удалением выполняется много пользовательской логики.

Возможная замена моего сервиса будет выглядеть так:

Код: Выделить всё

public class CommandHandler : IRequestHandler, IRequestHandler, IRequestHandler
{
private readonly DbContext _dbContext;

public CommandHandler(DbContext dbContext)
{
_dbContext = dbContext;
}

public Task Handle(CreateCommand request, CancellationToken cancellationToken)
{
//...
}

public Task Handle(UpdateCommand request, CancellationToken cancellationToken)
{
//...
}

public Task Handle(DeleteCommand request, CancellationToken cancellationToken)
{
///...
}
}
Может ли это быть что-то неправильное?

По сути, я бьюсь над тем, что выбрать для своей логики поток:
  • Контроллер -> Сервис -> MediatR -> Обработчики уведомлений -> Репозиторий
  • Контроллер -> MediatR -> Обработчики команд -> Репозиторий
Похоже, что с MediatR у меня не может быть единой модели для создания, обновления и Удалить, поэтому для повторного использования мне потребуется получить такие запросы, как:

Код: Выделить всё

public CreateRequest : MyDto, IRequest {}
public UpdateRequest : MyDto, IRequest {}
или вставьте его в мою команду, например:

Код: Выделить всё

public CreateRequest : IRequest
{
MyDto MyDto { get; set; }
}
Одним из преимуществ MediatR является возможность легко подключать и отключать логику, что кажется подходящим для модульной архитектуры, но, тем не менее, я немного озадачен тем, как чтобы сформировать с его помощью свою архитектуру.

Подробнее здесь: https://stackoverflow.com/questions/508 ... h-to-do-it
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Стоит ли делать веб-сервер на c++ в 2024 году? [закрыто]
    Anonymous » » в форуме C++
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous
  • FirebaseError: Обмен сообщениями: мы не можем зарегистрировать сервисного работника по умолчанию.
    Гость » » в форуме Jquery
    0 Ответы
    32 Просмотры
    Последнее сообщение Гость
  • Что значит утечка сервисного соединения?
    Anonymous » » в форуме Android
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Избегайте использования JSON сервисного аккаунта в GCP с Polars.
    Anonymous » » в форуме Python
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Избегайте использования JSON сервисного аккаунта в GCP с Polars.
    Anonymous » » в форуме Python
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»