ABP框架学习记录(24)- Notifications 解析
ABP框架学习记录(24)- Notifications 解析
Notifications 封装了通知的功能,实现 Notification 的定义,存储,发送,订阅等功能,支持租户通知,用户通知。通过 IRealTimeNotifier 接口,实现统一的 Notification 功能。支持 SignalR。
Notifications 在ABP项目中的位置:
表-实体类对应
首先,介绍关于 Notifications 的表-实体类;
NotificationInfo:用于存储需要发送的通知;

NotificationSubscriptionInfo: 用于存储 通知订阅。

TenantNotificationInfo: 分配给其相关租户的通知。

UserNotificationInfo:用户存储用户通知

通知数据
NotificationData:用户 通知数据的 存储;

MessageNotificationData:继承 NotificationData, 可以用户简单的通知消息;

LocalizableMessageNotificationData:继承 NotificationData, 可以用户表示本地的通知消息数据;

通知定义管理
NotificationDefinition:定义通知

NotificationDefinitionManager:实现 INotificationDefinitionManager 接口,用于管理 NotificationDefinition;

AbpKernelModule:PostInitialize 方法中初始化;

NotificationDefinitionContext:定义 NotificationDefinition 上下文;

NotificationDefinitionManagerExtensions:扩展方法,获取给定用户的所有通知;

配置
INotificationConfiguration:配置通知;
NotificationConfiguration:实现 INotificationConfiguration 接口;

AbpCoreInstaller 中注册:

持久化
INotificationStore:定义通知持久化接口;

Abp.Zero.Common 项目中,使用仓储模式,提供 INotificationStore 接口的实现 NotificationStore;

UserNotificationState:定义通知的状态,已读,未读;
管理用户通知
IUserNotificationManager:定义用户通知管理接口;
UserNotificationManager:实现 IUserNotificationManager 接口;

UserNotification:表示发送给用户的通知;

TenantNotification:代表租户/用户 已经发送的通知;

发布通知
INotificationPublisher:定义发布通知的接口;
NotificationPublisher:实现 INotificationPublisher 接口;

PublishAsync 异步方法:

NotificationDistributionJob:后台工作,去通知用户;

订阅通知
NotificationSubscription:表示一个用户订阅的通知;
INotificationSubscriptionManager:管理订阅通知;
NotificationSubscriptionManager:实现 INotificationSubscriptionManager;

通知设置
NotificationSettingNames:定义通知开关 配置名;

NotificationSettingProvider:适配器

AbpKernelModule 模块初始化:

发送通知
INotificationDistributer:定义发送给用户通知的接口;
DefaultNotificationDistributer:实现 INotificationDistributer 接口;



IRealTimeNotifier:定义向用户发送实时通知的接口;