Я прошел путь через руководство Призмы и думаю, что я понял большинство их средств коммуникации.
Командование очень простое, поэтому ясно, что DelegateCommand будет использоваться только для соединения View с его моделью.
Несколько менее понятно, когда речь идет о кросс-модульной связи, особенно когда использовать EventAggregation над составными командами.
Практический эффект тот же, например
- Вы публикуете событие -> все подписчики получают уведомление и исполняют код в ответ
- Вы выполняете составную команду -> выполняются все зарегистрированные команды и вместе с ними прикрепленный код
Оба работают по принципу «стреляй и забывай», то есть они не заботятся о каких-либо ответах своих подписчиков после запуска события / выполнения команд.
Мне трудно увидеть практическое различие в использовании, хотя я понимаю, что реализация обоих (под капотом) сильно отличается.
Так что мы должны думать о том, что это на самом деле означает - Событие? Это когда что-то случается (происходит событие)? Что-то, что пользователь не запрашивал напрямую, например, «веб-запрос завершен»?
а командование? Означает ли это, что пользователь что-то щелкнул и, таким образом, дал команду нашему приложению, запросив сервис напрямую?
Это так? Или есть другие способы определить, когда использовать один из этих транспортных средств связи над другим. Руководство, хотя и является одной из лучших документов, которые я прочитал, не дает конкретного объяснения.
Поэтому я надеюсь, что люди, вовлеченные в / использующие Prism, могут помочь пролить некоторый свет на это.