Я думаю, вы здесь ошиблись.
CreateEmployee
и EmployeeCreated
являются представлениями сообщений в памяти; эти сообщения являются частью вашего API. Если ваша CreateEmployee
схема и EmployeeCreated
схема разделяют то же понимание Address
, то вы вряд ли столкнетесь с проблемами, если вы также используете ту же структуру данных. .
Другими словами, те же ограничения, которые вы думаете применить к Address
, также применимы к более простым вещам, таким как CustomerId
; да, в вашей модели может быть более одного представления CustomerId
, но какое преимущество вы получите от этого?
Есть места, где несколько представлений одной и той же общей идеи могут иметь смысл: например, UnverifiedAddress и VerifiedAddress - это две разные вещи.
В некоторых случаях это будет иметь смысл для потребителя сообщения использовать другое представление в памяти, чем это делает производитель - ваша модель чтения может использовать другое представление в памяти, чем используется моделью записи. Точно так же для разных потребителей может иметь смысл иметь разные представления одной и той же идеи в памяти.
Тривиальная версия этого - когда вы имеете дело с потребителями, реализованными на разных языках. Маловероятно, что вы будете работать с монолитом.