博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ABP源码分析二十四:Notification
阅读量:6900 次
发布时间:2019-06-27

本文共 2776 字,大约阅读时间需要 9 分钟。

NotificationDefinition: 用于封装Notification Definnition 的信息。注意和Notification 的区别,如果把Notification看成是具体的消息内容,NotificationDefinition则是对这个消息自身的定义(可理解为消息的类型)。

 

INotificationDefinitionManager:该接口定义根据name返回NotificationDefinition的一些方法

 

NotificationDefinitionManager: 单例对象,实现了INotificationDefinitionManager接口。NotificationDefinitionManager封装了一个Dictionary<string, NotificationDefinition>字典对象用于存放NotificationDefinition。其Initialize方法完成所有NotificationDefinition的初始化和装载。Initialize方法从NotificationConfiguration读取NotificationProvider以装载NotificationDefinition到他的私有的IDictionary容器中。其实现的手法和Feature,Navigation以及Authorization是一致的

 

INotificationDefinitionContext/NotificationDefinitionContext: 上下文类,作为方法的参数。没有特别的业务逻辑。这边context只是封装了INotificationDefinitionManager对象。

 

NotificationProvider: 抽象基类,用于向INotificationDefinitionManager对象(NotificationDefinitionManager)中添加NotificationDefinition. Abp框架只提供了抽象类,实际项目中可以创建自定义NotificationProvider来从数据库中读取NotificationDefinition来填充到NotificationDefinitionManager对象中。

 

INotificationConfiguration/NotificationConfiguration:提供给外部配置NotificationProvider。NotificationDefinitionManager通过具体的NotificationProvider来初始化和装载Notification字典对象。但是ABP核心模块处于最底层,怎么能知道上层定义的NotificationProvider的类型呢? NotificationConfiguration为解决这个问题引入了NotificationProvider配置项。NotificationProvider就是一个Type 列表 (ITypeList<NotificationProvider>),注意是NotificationProvider的Type,不是实例。在需要NotificationProvider的地方,可以使用容器根据Type构造出实例。

 

Notification:用于封装Notification 的信息。用作DTO而不是Entity

NotificationData: 用于储存真正的Notification的数据(即内容)

 

NotificationInfo:用于封装Notification的Entity.

 

INotificationStore:该接口提供持久化NotificationInfo的方法。NullNotificationStore是其空的实现。具体的实现留到外部的模块中。

 

INotificationPublisher/NotificationPublisher: 用于发布Notification,首先调用INotificationStore实例进行实例化,接着分发Notification。如果有接收者并且接收者少于5个则直接调用INotificationDistributer进行分发,否则就把分发的任务加到后台工作队列中去。

 

UserNotificationInfo:用于封装User和Notification关系的Entity.

 

UserNotification:用于封装User和Notification关系的信息。用作DTO而不是Entity

 

UserNotificationState: 表示UserNotification的状态:读和未读

 

IUserNotificationManager/UserNotificationManager: 用于获取,删除UserNotification,以及更改UserNotification的状态。

 

NotificationSubscriptionInfo:用于封装notification 和subscriptor 的关系的Entity

 

NotificationSubscription:用于封装封装notification 和subscriptor(User) 的关系的DTO,不是Entity。

 

INotificationSubscriptionManager/NotificationSubscriptionManager: 用于获取,删除和添加NotificationSubscription。

 

NotificationSettingProvider:用于初始化Notification功能模块的Setting,Notification功能模块的唯一一项setting就是设置是否接收Notification。

 

 

INotificationDistributer/NotificationDistributer:用于分发Notification给User,也就是建立Notification和User的关系。在分发Notification给某个User前会检查User的NotificationSetting,如果该设置为True就建立Notification和该User的关系

NotificationDistributionJob: 封装了INotificationDistributer的后台任务,当Notification的接收者超过5人时会,ABP将分发任务封装为一个后台执行任务,以减少用户等待时间。5是被hardcode到源码中的。

 

 

返回

转载于:https://www.cnblogs.com/1zhk/p/5365757.html

你可能感兴趣的文章
Lync for iphone
查看>>
SQL SERVER数据库权限
查看>>
Nginx 基础篇(二)
查看>>
Linux 中 10 个有用的命令行补全例子
查看>>
【思想篇之爱左看右】
查看>>
Hadoop2.6+Zookeeper3.4+Hbase1.0部署安装
查看>>
测试唯一ID支持多大的并发量
查看>>
centos 安装部署docker与局域网主机相通详细配置
查看>>
老鸟经验谈linux运维人员到底要不要考linux认证
查看>>
solr配置
查看>>
CSS HACK 区别于ie6/7/8/firefox的小问题
查看>>
编译一个可以用Qemu进行Debug的Linux Kernel:
查看>>
linux 服务器 keras 深度学习环境搭建
查看>>
xshell+xmanager远程linux图形化界面
查看>>
布局模型
查看>>
我的友情链接
查看>>
jquery 实现复选框 全选/反选
查看>>
我的友情链接
查看>>
http://www.mossle.com/wiki/13.lemon-devguide/0008.modeler
查看>>
UI自动化测试之selenium(3)——采坑填坑集
查看>>