В шаблоне CQRS (разделение ответственности за запросы команд) обычно используются два типа сообщений: команды и запросы. Позвольте мне объяснить каждый тип и привести примеры кода для лучшего понимания.
- Команды.
Команды представляют собой действия или намерения изменить состояние системы. Они отправляются на командную сторону приложения и отвечают за изменение данных. Команды обычно отправляются асинхронно и не ожидают возврата значения.
Пример кода на C#:
public class CreateUserCommand
{
public string Username { get; set; }
public string Email { get; set; }
// Additional properties for the command
}
public class CreateUserService
{
public void Handle(CreateUserCommand command)
{
// Logic to create a new user
// Modify the system's state accordingly
}
}
- Запросы.
Запросы используются для получения данных из системы. Они отправляются на сторону запроса, которая отвечает за чтение данных и возврат результата. Запросы обычно являются синхронными и возвращают данные без изменения состояния системы.
Пример кода на C#:
public class GetUserQuery
{
public int UserId { get; set; }
// Additional properties for the query
}
public class GetUserQueryHandler
{
public UserDto Handle(GetUserQuery query)
{
// Logic to retrieve user data from the system
// Return the result as a data transfer object (DTO)
}
}
public class UserDto
{
public int UserId { get; set; }
public string Username { get; set; }
public string Email { get; set; }
// Additional properties for the DTO
}