CompositeWPF: EventAggregator - когда использовать?

ВЫБЕРИТЕ СУММУ (a1) AS 'Mercedes', sum (a2) AS 'BMW', sum (a3) ​​AS 'FORD' ОТ АВТО

10
задан toxvaerd 17 February 2009 в 08:14
поделиться

1 ответ

Это - хороший вопрос. В Составном WPF (Призма) там 3 возможных способа связаться между частями Вашего приложения. Один путь состоит в том, чтобы использовать Управление, которое используется только для передачи инициированных UI действий в будущем фактическому коду, реализовывая то действие. Иначе должен использовать Shared Services, где несколько частей содержат ссылку на тот же Сервис (Singleton), и они обрабатывают различные события на том сервисе классическим способом. Для разъединенной и асинхронной передачи, поскольку Вы уже заявили, лучший способ состоит в том, чтобы использовать Агрегатор События (который следует тесно за шаблоном Martin Fowler).

Теперь, когда к а не использовать его:

  1. Используйте его, когда необходимо будет связаться между модулями. (например, модуль Задачи должен быть уведомлен, когда Задача создается любым другим модулем).
  2. Используйте его, когда у Вас будет несколько возможных получателей или источников того же события. Например, у Вас есть список объектов, и Вы хотите обновить его каждый раз, когда объект того типа сохраняется или создается. Вместо того, чтобы содержать ссылки на все открываются, редактируют/создают экраны, Вы просто подписываетесь на это определенное событие.
  3. Не используйте его, когда только необходимо будет подписаться на нормальные события в области Model View Presenter. Например, если Ваш предъявитель слушает изменения в Модели (например, Модель реализует INotifyPropertyChanged), и Ваш Предъявитель должен воздействовать на такие изменения, лучше, что Ваш Предъявитель обрабатывает непосредственно событие PropertyChanged Модели вместо того, чтобы отклонить такие события через Агрегатор События. Так, если и отправитель и получатель находятся в той же единице, нет никакой потребности "широковещательно передать" такие события к целому приложению.

Я надеюсь, что это отвечает на Ваш вопрос.

20
ответ дан 3 December 2019 в 19:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: