Я пытаюсь настроить WebApp, используя архитектуры CQRS/ES. Я определил модельный объект с помощью команд Create/Edit/Events. Команды обрабатываются связанной сагой. События сохраняются в магазине событий mongo, который является сразу же совместимым магазином. События обрабатываются денормализаторами, которые записывают в последовательный SQL-хранилище.Rebus - отправить команду и ждать обработчиков
Теперь у меня возникла проблема с необходимостью синхронизации транзакций CRUD с WebApp: пользователь открывает страницу со списком этих сущностей, считая из последовательного хранилища SQL. Первоначально он пуст. Затем пользователь компилирует форму для добавления нового объекта. Клиент выполняет вызов ajax для метода, который выдает команду Create на шину, а затем возвращает void.
При успешном обратном вызове (и это потому, что при выдаче команды нет проблем) клиент обновляет список объектов. Если денормализатор все еще не обработал объект «Созданное событие» и записал его в последовательный SQL-хранилище, страница все равно будет содержать пустой список. Я хочу, чтобы метод, вызывающий команду Create, вызывает денормализатор.
Я читал много блогов и прочее, и я получаю представление о том, что такая синхронизация идет вразрез с идеей использования шины ... но такие пользовательские операции НЕОБХОДИМО быть синхронными: как пользователь может быть представлен " вставить успешно! " а затем все еще видите пустой список?
Я надеюсь получить ответ, так как этот вариант использования кажется основным для меня ...
Спасибо mookid за быстрый ответ. Я согласен, что это взломать, и я не хочу этого делать, потому что мест не будет очень мало, в приложении, которое пользователь взаимодействует с ... Поэтому мне интересно: какие приложения реального мира разрабатываются с использованием этого шаблона? Службы на стороне сервера? Кажется, WebApps не идеальная цель. А также: команды/события интегрированы с хранилищем событий, поэтому могу ли я использовать другую технологию для синхронных операций с клиентом, действуя в тех же магазинах mongo и SQL? Я немного запутался прямо сейчас ... – Etchelon
Ну, люди ИМО путают вещи, если считают, что они должны основывать 100% своего приложения на шаблоне CQRS. Иногда имеет смысл хранить разные типы masterdata как «обычные сущности», возможно, записывая события по мере их редактирования, но сохраняя их таким образом, чтобы их легко было CRUD. В других случаях имеет смысл использовать CQRS повсюду, но я бы сказал, что неизбежное требование необходимости показывать изменения сразу после того, как оно было сделано, может быть признаком того, что это не та область, где CQRS настолько хорош. – mookid8000
Я подумаю, где использовать CQRS/ES, а где нет, спасибо за головы! – Etchelon