Я не совсем понимаю, как разделить классы команд и событий между службами.
Вы не делите классы команд и событий между службами. Вы разделяете команду и событие схема между службами.
Udi Dahan, 2014
Службы разделяют договор и схему, а не класс или тип .... За исключением соглашения о связи, ничего больше.
Кроме того, вы вкладываете капитал проектирования в схему, чтобы вы могли развивать свои сообщения в прямой / обратной совместимой форме. Книга Грега Янга о управлении версиями в системе с источником событий - моя ссылка на это, но на самом деле многие стандарты обмена сообщениями содержат ссылки, в которых обсуждаются те же идеи.
Основная идея заключается в следующем; Вы берете информацию, которую хотите передать, и используете свою схему для преобразования этой информации в байты, которые вы отправляете мне. Я использую мою схему для преобразования байтов обратно в информацию. Если моя и ваша схемы совместимы, я пойму ваше сообщение.
Мотивация для этого заключается в том, что вы пытаетесь поддерживать независимое развертывание служб. Если вам нужно расширить свою схему сообщений, вы сможете повторно развернуть синий сервис, а затем и красный сервис (или наоборот), не нарушая систему. Красная и синяя схемы не должны синхронизироваться, просто совместимы.
Avro, Thrift, Protocol Buffers - все системы для описания информации в байтах.
Schema.org - это схема; это отображение идентификаторов, например http://schema.org/telephone,, и семантики, например номер телефона . Это общий словарь, который позволяет независимым от домена компонентам делать полезные вещи.
Они обычно встречаются в гипермедиа представлениях сообщений, где они служат двойной цели описания данных и говорят вам, где искать дополнительную информацию.