Это не так редко, как вы могли бы себе представить. Дополнительным действительным бизнес-случаем является случай, когда поставщик услуг проводит проверку кредитоспособности кого-либо. Компании, предоставляющие кредитные отчеты, на самом деле хранят запросы, сделанные против их кредитных баллов, и используют их для влияния на будущие кредитные баллы. Конечно, когда я говорю, что это не так редко, как мы себе представляем, я не пытаюсь нормализовать такие практики (и мы должны вернуться, чтобы понять реальную ценность, которую нечто подобное предлагает для нашего продукта).
Однако я предлагаю смоделировать это явно, а не пытаться обобщать это. Эта функция, вероятно, обусловлена бизнес-потребностями, и вы должны смоделировать ее как таковую. Под этим я подразумеваю, что вы должны рассматривать службу, обслуживающую чтение, как отдельную службу, которая может инициировать собственные события для событий, которые произошли, и проектировать остальную часть системы реактивным способом (ie реагируя на сгенерированные события другим BC / service).
Например, у вас может быть служба, которая обслуживает запрос, запускающий событие BalanceChecked, которое либо та же самая служба, либо другая может хранить в потоке для последующей обработки.
Я бы не предлагал команду, потому что если вы будете отвечать данными, это не значит, что кто-то может отклонить команду; это уже произошло, у кого-то уже есть данные.