CQRS / EventStore - Передача GUIDS в интерфейс - PullRequest
1 голос
/ 03 февраля 2012

В настоящее время я использую EventStore J Oliver, который, как я понимаю, использует Guids для идентификатора потока, и это то, что используется для создания моего совокупного корня.

С точки зрения CQRS и DDD я должен думать о домене, а не о GUID.

Итак, если я выполняю GET (Mvc-клиент), могу ли я сказать, что в моем URL-адресе должен быть идентификатор объекта моего домена (совокупного корня), и из этого я получаю GUID из хранилища для чтения, которое затем используется построить мой сводный корень из хранилища событий?

Или я должен передать GUID своим формам и передать их обратно как скрытые переменные формы? По крайней мере, таким образом я знаю совокупный корневой идентификатор и не должен запрашивать хранилище для чтения?

Я полагаю, что первый путь - это правильный путь (без использования GUID в формах), так как тогда все мои Gets и POSTS имеют дело с идентификаторами объектов домена, а не с GUIDS, которые клиент не будет знать.

Я полагаю, что это также позволяет мне создавать API на основе REST, который фокусируется на ресурсах и их идентичности, а не на генерируемых системой GUIDS. Пожалуйста, поправьте меня, если я ошибаюсь.

JD

1 Ответ

1 голос
/ 03 февраля 2012

По-моему, вы на правильном пути.Пользовательский интерфейс должен полагаться исключительно на модель чтения и не заботиться о агрегатах.Затем, когда вам нужно отправить команду, вы можете использовать модель чтения, чтобы получить идентификатор интересующего вас агрегата. В любом случае модель чтения должна быть очень быстрой для чтения (в этом и заключается причина использования разных моделей для чтения и записи) и очень легко кешировать, если нужно.Это также даст вам гораздо более приятные ссылки.

...