Ваша команда должна быть действительной при ее отправке в ваш домен. Поэтому перед отправкой вам необходимо проверить его на своем клиенте, чтобы узнать, находится ли папка здесь или нет. Она позволяет сообщить клиенту, что происходит именно с четким сообщением об ошибке
Это уменьшает также много в запас ошибки .The сроки, чтобы иметь что-то, что не удается сводится к тому времени, чтобы отправить команду над сети и время выполнения команды на сервере.
Если этот риск действительно низкий. Мы можем получить только команду fail (например: enum) из домена. Для пользователя это может закончиться сообщением об исключительном исключении , и мы могли бы актуализировать его данные, чтобы показать ему , что все по-другому, и он не может делать то, что он намеревался. Такие сообщения с низким процентом не должны быть огромной проблемой, если они встречаются только 2-3 раза в году, я ожидаю.
Если риски действительно высок или если проверка невозможна из клиента, но должно происходить только на стороне домена, то у меня нет ответа , чтобы дать вам в данный момент. Я сам изучаю CQRS, а i не могу сказать больше.
надеюсь, что это помогло,
[Редактировать]
Я принял команду обработки, чтобы не быть асинхронной. Если So, я пытаюсь поймать любое исключение во время выполнения команды, и я могу вернуть некоторое уведомление об отказе, не сказав, что именно клиент. Проецирование на другую оставшуюся асинхронную readmodel.
public void Handle(ICommand command)
{
try
{
CommandService.Execute(command);
Bus.Return(ErrorCodes.None);
}
catch (Exception e)
{
Bus.Return(ErrorCodes.Fail);
}
}
Мои CommandServiceDelegate право исполнителя, чтобы сделать работу:
Public class TheGoodExecutor{
protected void Execute(IUOW context, MyCommand command)
{
var myDomainObject= context.GetById<DomainObjecType>(command.Id);
myDomainObject.DoStuff(Command.Data);
// Accept all the work we just did.
context.Accept();
}
}
Если хороший исполнитель идет по ошибке, то Bus.Return (ErrorCodes.Fail);
И это может быть получено моим клиентом либо синхронно, либо асинхронно.
Если вы хотите пойти полный асинхр (это то, что я пытаюсь сделать, или, по крайней мере, я хотел бы изучить, что путь), я бы примерить, подписавшись на события, клиент может быть интересно. Для Проверка, я думаю, прислушиваясь к событиям не имеет большого смысла для большинства случаев. Но во втором случае я говорил, может быть. В других случаях, помимо проверки, это тоже может ...
все, что есть в Italic, является личным испытанием, я ничего не читал и ничего не исправлял в этом смысле. Так что возьмите его с большими скобками .. он он!
[/ Edit]
Я хотел бы держаться подальше от CQRS, слишком много недостатков и контрсил с ним. –