日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

【转】ABP源码分析二十四:Notification

發(fā)布時(shí)間:2023/12/10 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【转】ABP源码分析二十四:Notification 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

NotificationDefinition: 用于封裝Notification Definnition 的信息。注意和Notification 的區(qū)別,如果把Notification看成是具體的消息內(nèi)容,NotificationDefinition則是對(duì)這個(gè)消息自身的定義(可理解為消息的類型)。

?

INotificationDefinitionManager:該接口定義根據(jù)name返回NotificationDefinition的一些方法

?

NotificationDefinitionManager: 單例對(duì)象,實(shí)現(xiàn)了INotificationDefinitionManager接口。NotificationDefinitionManager封裝了一個(gè)Dictionary<string, NotificationDefinition>字典對(duì)象用于存放NotificationDefinition。其Initialize方法完成所有NotificationDefinition的初始化和裝載。Initialize方法從NotificationConfiguration讀取NotificationProvider以裝載NotificationDefinition到他的私有的IDictionary容器中。其實(shí)現(xiàn)的手法和Feature,Navigation以及Authorization是一致的

?

INotificationDefinitionContext/NotificationDefinitionContext: 上下文類,作為方法的參數(shù)。沒(méi)有特別的業(yè)務(wù)邏輯。這邊context只是封裝了INotificationDefinitionManager對(duì)象。

?

NotificationProvider: 抽象基類,用于向INotificationDefinitionManager對(duì)象(NotificationDefinitionManager)中添加NotificationDefinition. Abp框架只提供了抽象類,實(shí)際項(xiàng)目中可以創(chuàng)建自定義NotificationProvider來(lái)從數(shù)據(jù)庫(kù)中讀取NotificationDefinition來(lái)填充到NotificationDefinitionManager對(duì)象中。

?

INotificationConfiguration/NotificationConfiguration:提供給外部配置NotificationProvider。NotificationDefinitionManager通過(guò)具體的NotificationProvider來(lái)初始化和裝載Notification字典對(duì)象。但是ABP核心模塊處于最底層,怎么能知道上層定義的NotificationProvider的類型呢? NotificationConfiguration為解決這個(gè)問(wèn)題引入了NotificationProvider配置項(xiàng)。NotificationProvider就是一個(gè)Type 列表 (ITypeList<NotificationProvider>),注意是NotificationProvider的Type,不是實(shí)例。在需要NotificationProvider的地方,可以使用容器根據(jù)Type構(gòu)造出實(shí)例。

?

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

NotificationData: 用于儲(chǔ)存真正的Notification的數(shù)據(jù)(即內(nèi)容)

?

NotificationInfo:用于封裝Notification的Entity.

?

INotificationStore:該接口提供持久化NotificationInfo的方法。NullNotificationStore是其空的實(shí)現(xiàn)。具體的實(shí)現(xiàn)留到外部的模塊中。

?

INotificationPublisher/NotificationPublisher: 用于發(fā)布Notification,首先調(diào)用INotificationStore實(shí)例進(jìn)行實(shí)例化,接著分發(fā)Notification。如果有接收者并且接收者少于5個(gè)則直接調(diào)用INotificationDistributer進(jìn)行分發(fā),否則就把分發(fā)的任務(wù)加到后臺(tái)工作隊(duì)列中去。

?

UserNotificationInfo:用于封裝User和Notification關(guān)系的Entity.

?

UserNotification:用于封裝User和Notification關(guān)系的信息。用作DTO而不是Entity

?

UserNotificationState: 表示UserNotification的狀態(tài):讀和未讀

?

IUserNotificationManager/UserNotificationManager: 用于獲取,刪除UserNotification,以及更改UserNotification的狀態(tài)。

?

NotificationSubscriptionInfo:用于封裝notification 和subscriptor 的關(guān)系的Entity

?

NotificationSubscription:用于封裝封裝notification 和subscriptor(User) 的關(guān)系的DTO,不是Entity。

?

INotificationSubscriptionManager/NotificationSubscriptionManager: 用于獲取,刪除和添加NotificationSubscription。

?

NotificationSettingProvider:用于初始化Notification功能模塊的Setting,Notification功能模塊的唯一一項(xiàng)setting就是設(shè)置是否接收Notification。

?

?

INotificationDistributer/NotificationDistributer:用于分發(fā)Notification給User,也就是建立Notification和User的關(guān)系。在分發(fā)Notification給某個(gè)User前會(huì)檢查User的NotificationSetting,如果該設(shè)置為True就建立Notification和該User的關(guān)系

NotificationDistributionJob: 封裝了INotificationDistributer的后臺(tái)任務(wù),當(dāng)Notification的接收者超過(guò)5人時(shí)會(huì),ABP將分發(fā)任務(wù)封裝為一個(gè)后臺(tái)執(zhí)行任務(wù),以減少用戶等待時(shí)間。5是被hardcode到源碼中的。

?

?

返回ABP源碼分析系列文章目錄

總結(jié)

以上是生活随笔為你收集整理的【转】ABP源码分析二十四:Notification的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。