Оптимизация событий домена для массовых операций и синхронизации базы данных в DDDC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Оптимизация событий домена для массовых операций и синхронизации базы данных в DDD

Сообщение Anonymous »

Я разрабатываю приложение C#, используя принципы доменно-ориентированного проектирования (DDD) с событиями предметной области. У меня есть совокупный корень, который позволяет добавлять сотрудников и вызывать события домена для каждого добавления. Вот упрощенная версия моей текущей реализации:

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

public void AddEmployee(Employee employee)
{
bool HasBeenAdded = AssignedEmployees.Add(employee);
if (HasBeenAdded)
AddEvent(new EmployeeAddedToScheduleItem(this, employee));
}

public void AddEmployeesRange(ICollection employees)
{
foreach (var emp in employees)
AddEmployee(emp);
}
Моя конечная точка API добавляет сразу несколько сотрудников с помощью метода AddEmployesRange в обработчике команды.
Проблема
Мне нужно выполнить две операции при добавлении сотрудников:< /p>
Синхронизируйте изменения с базой данных (что в идеале должно представлять собой единую массовую операцию для повышения эффективности),
отправьте приветственное электронное письмо каждому новому сотруднику
Текущая реализация вызывает событие EmployeeAddedToScheduleItem для каждого добавленного сотрудника. Это приводит к множественным обновлениям базы данных при добавлении нескольких сотрудников, что неэффективно для синхронизации базы данных.
Что я ищу
Мне нужно решение, которое позволит мне:
Использовать события предметной области для поддержания разделения задач в моей архитектуре DDD.
Выполнять единую эффективную операцию синхронизации базы данных при добавлении нескольких сотрудников.
По-прежнему иметь возможность отправлять отдельные приветственные электронные письма каждому новому сотруднику.
Ограничения
Я предпочитаю, если это возможно, существенно не изменять уровень предметной области.
Решение должно соответствовать принципам DDD и продолжать использовать события предметной области.
/>Он должен быть масштабируемым и производительным для добавления и синхронизации большого количества сотрудников.
Вопросы
Как я могу оптимизировать события своего домена, чтобы обеспечить возможность массовой загрузки синхронизацию базы данных, сохраняя при этом возможность индивидуальной обработки электронной почты?
Существуют ли в DDD шаблоны или подходы, которые обеспечивают массовые операции и эффективную синхронизацию базы данных без ущерба для использования событий домена?
Как бы вы это реализовали, чтобы обеспечить эффективную синхронизацию базы данных? сохраняя при этом преимущества событий предметной области?
Мы будем очень признательны за любые идеи, примеры кода или предложения по архитектуре, особенно те, которые направлены на оптимизацию событий предметной области как для массовых операций, так и для эффективной синхронизации базы данных!
Кроме того, я знаю, что могу создать своего рода BulkEmployeesAddedEvent, а затем в обработчике событий домена перебирать коллекцию недавно добавленных сотрудников, но это не похоже на первоклассное решение. Это потребует от меня либо всегда использовать AddEmployesRange даже при добавлении одного пользователя, либо при создании двух обработчиков доменаEventHandler с почти одинаковым кодом.

Подробнее здесь: https://stackoverflow.com/questions/790 ... ync-in-ddd
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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