Как отслеживать все сообщения - PullRequest
1 голос
/ 28 апреля 2011

слабо связанная связь между моделями представления - хорошая идея. Я использовал Prism Eventaggregator, а также Messanger из набора инструментов MVVM Light.

Если проект растет, я получаю много сообщений туда и обратно.

Какова лучшая практика отслеживания моих сообщений? Соглашения об именах? узоры? так далее... Как вы отслеживаете?

Ответы [ 2 ]

1 голос
/ 29 апреля 2011

Я обнаружил, что предоставление пространства имен "Messages", содержащего ваши строго типизированные сообщения, очень полезно.Имейте в виду, что четко определенные сообщения будут больше похожи на контракты / DTO - вы хотите поддерживать как можно большую развязку, поэтому зависимости должны быть сведены к минимуму, иначе отправители и получатели будут полагаться на общие библиотеки.Иногда это необходимо из-за характера сообщения.

Я думаю, вы также обнаружите, что многие сообщения могут следовать определенному шаблону.Два общих шаблона сообщений - это то, что я назову Действие и Команда.Действие - это больше «глагол» и «субъект».

Например, у вас может быть MessageAction, который выставляет T Target, а действие представляет собой перечисление, которое указывает обновление, выбор, добавление, удаление и т. Д. Это часто встречается, и универсальное сообщение может переносить его, а ваши обработчики слушаютдля обобщений, которые закрывают интересующий их тип.

Команда - это Действие, которое исходит откуда-то и затем применяет действие к цели.Например, может быть, вы добавляете роль пользователю.В этом случае ваш интересующий объект - это роль, ваша цель - пользователь, а ваше действие добавляет его.Это может быть CommandAction.

Другим распространенным способом организации сообщений является реализация общего интерфейса или базового класса.Затем становится просто искать разработчиков в проекте, чтобы определить, где используются сообщения.

0 голосов
/ 29 апреля 2011

Хороший вопрос. Вот решения, которые я использовал, но, вероятно, существует множество альтернатив, и они не нашли никаких указаний на этот счет.

Одним из способов является определение определенных событий, которые расширяют базовые события: типичным примером при использовании призмы является расширение CompositePresentationEvent.

Однако при наличии большого количества сообщений иногда полезно определить, что такое сообщение. Обычно это может быть определено заголовком сообщения, некоторыми атрибутами сообщения и фактическим содержанием. Затем вы можете поместить эти сообщения в вашу шину сообщений.

...