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