Эвристический: агрегатный идентификатор во многих случаях аналогичен первичному ключу, используемому для различения сущностей в таблице базы данных.Применяются многие уроки натуральных против суррогатных ключей.
Можно ли ожидать, что пользователь будет знать и передавать агрегированные идентификаторы при выдаче команд?
Вы, вероятно, не можете зависеть от человека , который знает агрегированные идентификаторы.Но клиент , который использует оператор-человек, может очень хорошо их знать.
Например, если оператор будет работать на одном складе во время сеанса, то мы могли бы посмотретьвверх соответствующий идентификатор, кэшируйте его и используйте его при создании сообщений от имени пользователя.
Аналог: когда вы заполняете веб-форму и отправляете ее, браузер выполняет свою работупросмотра действия формы и использования этой информации для создания правильного URI, а также правильного HTTP-запроса.
Клиент обычно знает, что такое идентификатор, потому что он только что получил его во время предыдущего запроса.
Создание паттерны странные.В некоторых случаях для клиента может иметь смысл выбрать идентификатор, который будет использоваться при создании нового агрегата.В других случаях для клиента имеет смысл предоставить идентификатор для командного сообщения, и сервер сам решает, каким должен быть совокупный идентификатор.
Это обмен сообщениями, поэтому вы должны быть осторожны при соединении клиентанепосредственно к вашим внутренним деталям реализации, особенно если этот клиент находится в другом графике разработки.Если вы правильно заключили договор на сообщение, то сервер и клиент могут в любое время развиваться в соответствии с договором.
Возможно, вы захотите ознакомиться с 10-летней ретроспективой Грега Янга, которая включает обсуждение складские системы .TL; DR - во многих случаях сообщения, поступающие от операторов, являются событиями , а не командами.