Система уведомлений — это самая основная функция зрелого веб-сайта или приложения, такого как Weibo, Zhihu, Nuggets и т. д. Конечно, сегодня в этой статье речь пойдет не о системе уведомлений с таким большим сайтом и большим трафиком, а о сайте или приложении с общим объемом пользователей.
Компоненты системы уведомлений
Система уведомлений состоит из: источника уведомления, элемента управления уведомлениями, целевых пяти разделов уведомления, шаблонов уведомлений и состава уведомлений. Позже подробно о роли каждого компонента. Структура композиции, как показано ниже:
источник уведомления
Источник уведомления относится к источнику, который инициирует событие уведомления, которое обычно включает следующие три ситуации:
- Запуск пользовательского события: когда другие пользователи выполняют такие действия, как комментарии, @, лайки и сообщения над объектом, владелец объекта должен быть уведомлен. Это наиболее распространенный сценарий, требующий уведомления.
- Автоматически срабатывает после выполнения правил системы: например, при блокировке системы, повышении уровня и получении медали, по идее, пользователь должен быть уведомлен.
- Запускается администратором: администратор активно отправляет уведомление всей сети или определенному пользователю, например, отправляет объявление.
контроль уведомлений
Контроль уведомлений используется для контроля разрешений, фильтрации черных и белых списков, контроля частоты сообщений, получаемых пользователями, и просмотра содержимого. Короче говоря, здесь находятся элементы управления и фильтрации.
Шаблон уведомления
Шаблон уведомления используется для объединения с моделью данных и, наконец, отображения ее пользователю, аналогично V в шаблоне MVC, который может быть простым текстом или шаблоном, таким как Velocity. Внедрение шаблонов уведомлений в основном должно соответствовать следующим трем пунктам:
- Различные способы уведомления Способы отображения уведомлений могут быть разными;
- Представление уведомлений отделено от модельных данных уведомлений;
- Шаблоны уведомлений настраиваются.
способ сообщить
К общим относятся письма на сайте, электронная почта, текстовые сообщения, рабочие уведомления (DingTalk, корпоративный WeChat) и т. д. Среди них электронная почта, текстовые сообщения и рабочие уведомления — все они основаны на сторонних приложениях, при их использовании вы можете в лучшем случае сделать слой инкапсуляции на предоставляемых ими интерфейсах, поэтому говорить не о чем. С другой стороны, письмо сайта часто требует, чтобы веб-сайт или приложение были спроектированы и разработаны сами по себе, поэтому многие онлайн-системы уведомлений представляют только дизайн письма сайта.
Многоуровневая система уведомлений
Блок-схема системы уведомлений, разработанная в этой статье, выглядит следующим образом и в основном разделена на бизнес-уровень, уровень модели данных, уровень управления, уровень распределения, уровень представления и уровень отправки. Многослойность может уменьшить связь между различными модулями, и каждый уровень делает только то, что должен делать.
Бизнес-уровень
Этот уровень связан с бизнесом и относится к части источника уведомлений системы уведомлений. Именно вызывающая сторона вызывает службу системы уведомлений. Она размещена здесь, чтобы позже объяснить разделение бизнеса и системы уведомлений.
слой модели данных
Я полагаю, что многие программисты, которые пишут веб-фон, знакомы с режимом MVC, который эквивалентен M слоям в режиме MVC, в основном отвечающим за сбор данных модели. Этот слой теоретически разделен на источник системы уведомлений. Модель данных этого уровня тесно связана с бизнесом верхнего уровня, и для разных бизнес-сценариев требуются разные данные уведомления.
Улучшение / фильтр-слой
То есть контроль уведомлений, который используется для контроля разрешений, фильтрации черных и белых списков, контроля частоты сообщений, получаемых пользователями, и просмотра контента.
слой распределения
Разные предприятия часто требуют разных способов отправки уведомлений, например, уведомления о событиях должны быть уведомлены письмом на месте, а если учетная запись заблокирована, часто выбираются уведомления по электронной почте или SMS. После того, как сообщение достигает уровня распределения, для разных служб выбираются разные стратегии отправки. Если вам нужно сохранить записи об отправленных сообщениях, вы также можете поместить их в этот слой.
слой просмотра
Этот слой тесно связан со слоем модели данных.После того как данные достигнут этого уровня, они будут объединены с шаблоном для формирования контента для отправки.
Отправка слоя
В основном он вызывает такие интерфейсы, как SMS, электронная почта, рабочее уведомление и письмо станции для отправки сообщений. Мы объясним дизайн внутренних сообщений в этом слое в третьей части.
В приведенном выше многоуровневом слое рекомендуется использовать структуру для организации всех процессов, и каждый уровень вызывается интерфейсом или абстрактным классом. У каждого слоя есть базовые классы и фиксированные интерфейсы, а когда появляется новый бизнес, нужно только наследовать эти базовые классы и реализовывать соответствующие интерфейсы.
конец
Эта статья о дизайне системы уведомлений, хотя он и прост, но также является опытом. Автор также медленно развивался при разработке этого произведения. В начале было мало предприятий и простых функций, и все коды были напрямую сложены вместе. Последующее добавление функциональных изменений очень велико, почти равносильно рефакторингу. После принятия этого дизайна, если вам нужно добавить новые услуги, вам нужно добавить только несколько классов, и процесс может быть запущен автоматически.