NotificationDefinition: 用於封裝Notification Definnition 的信息。注意和Notification 的區別,若是把Notification當作是具體的消息內容,NotificationDefinition則是對這個消息自身的定義(可理解爲消息的類型)。html
INotificationDefinitionManager:該接口定義根據name返回NotificationDefinition的一些方法數據庫
NotificationDefinitionManager: 單例對象,實現了INotificationDefinitionManager接口。NotificationDefinitionManager封裝了一個Dictionary<string, NotificationDefinition>字典對象用於存放NotificationDefinition。其Initialize方法完成全部NotificationDefinition的初始化和裝載。Initialize方法從NotificationConfiguration讀取NotificationProvider以裝載NotificationDefinition到他的私有的IDictionary容器中。其實現的手法和Feature,Navigation以及Authorization是一致的框架
INotificationDefinitionContext/NotificationDefinitionContext: 上下文類,做爲方法的參數。沒有特別的業務邏輯。這邊context只是封裝了INotificationDefinitionManager對象。ide
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構造出實例。spa
Notification:用於封裝Notification 的信息。用做DTO而不是Entity3d
NotificationData: 用於儲存真正的Notification的數據(即內容)code
NotificationInfo:用於封裝Notification的Entity.htm
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到源碼中的。