ABP框架開發 訊息通知

2022-01-11 06:50:37 字數 3423 閱讀 4327

一次完整的訊息傳送/接收過程中,會存在幾個必要的點,也正如同現實生活中的場景,有人傳送,有人接收,傳送的訊息本身也有型別。

1、訊息型別定義

///

///設定應用程式中常用通知唯一的名稱常量

///public

static

class

其次,開始訊息型別定義,新建乙個notificationprovider的類,完成訊息型別定義,管理訊息型別時,可以針對訊息設定許可權,這樣方便不同的角色擁有不同的訊息通知。

///

///訊息型別定義

///public

class

private

static ilocalizablestring l(string

name)

}

最後在領域層的module.preinitialize()中完成加入。

//

通知定義

2、訊息訂閱方式

對於訊息訂閱環節,是存在兩種情形的,第一種,傳送方發出的訊息,可以指定所有訂閱了的人員接收,比如,只有擁有任務管理許可權的人才會接收到新的任務下發的通知;第二種就是指定到具體人員接收,比如檔案上傳完畢的訊息通知是通知到負責檔案上傳的人。

訊息訂閱的管理,在abp框架中已經封裝好了,我們可以通過建構函式注入直接使用,通過獲取系統內的提前定義的所有訊息型別,我們可以在介面上完成訂閱工作,為當前使用者訂閱在他角色許可權內的訊息通知及無許可權限制的訊息通知等。

private

readonly

inotificationdefinitionmanager _notificationdefinitionmanager;

private

readonly

inotificationsubscriptionmanager _notificationsubscriptionmanager;

public

inotificationdefinitionmanager notificationdefinitionmanager,

inotificationsubscriptionmanager notificationsubscriptionmanager)

3、訊息發布方式

訊息發布時,可以是嵌入在其它操作中,比如制定完成乙個新的任務後,傳送訊息給相關人員,或是在檔案上傳完畢後,傳送給檔案上傳人員,也可以是定時任務中,指定時間點傳送訊息,對於這部分來講,在領域層建立乙個訊息通知的類,來負責處理訊息通知,而具體實現訊息通知的過程abp框架中已經實現了,如同訊息訂閱一樣,只需要在建構函式中注入即可,其次定義具體的訊息傳送方法,使得具體操作結束後呼叫具體的訊息傳送來傳送訊息。

///

///訊息通知發布例項

///public

class

#endregion

#region 訊息傳送

public

async task sendmessageasync(useridentifier user, string message, notificationseverity severity =notificationseverity.info));}

#endregion

#region 任務提醒

public

async task newtaskasync(string message, notificationseverity severity =notificationseverity.info)

#endregion

#region 輔助方法

private

message)

#endregion

}

在mvc層,在使用者控制器中完成對訊息通知設定,訊息本身是獨立的,只應有了使用者才活躍起來,因此把訊息的設定掛鉤在使用者身上,應該算是合理的,並同時完成頁面的設計。

///

///通知設定

//////

public

async tasknotificationsetting()

//////

更新通知訂閱

頁面設計只需要對提前在領域層中定義好的訊息型別展示出來即可,使用者自主勾選哪些想要接收的訊息提示。

在指定操作完畢,可以呼叫訊息服務來推送訊息到目標接收人員,此處,更改了原先資料字典建立處的**,當建立資料字典成功後,給與乙個訊息提示來模擬發布訊息通知使用者的過程。

var existeddatadictionary = await _datadictionaryrepository.getall().where(d => d.typename ==input.datadictionary.typename).firstordefaultasync();

if (existeddatadictionary != null

)await

_datadictionaryrepository.insertasync(datadictionary);

//模擬測試訊息通知

字典型別已完成新增,可以開始使用了

");

該訊息觸發的前提是,需要訂閱該訊息,不然有人發,無人收,總是很難為情。因此提前在通知設定中開啟型別為「新的任務」的開關。

對於訊息傳送到了瀏覽器中呈現,這個過程採用了signalr,abp框架也完成了前後端的訊息通知,因此可以直接使用即可。

至此,站內訊息通知的設計完畢,對於業務需求中可能面對的更為豐富的功能就得花更多時間來完成了。

2019-07-27,望技術有成後能回來看見自己的腳步

VC開發 訊息傳遞

在windows下,傳遞訊息一般使用兩個函式postmessage和sendmessage,函式原型如下 bool winapi postmessage hwnd hwnd,uint msg,wparam wparam,lparam lparam bool winapi sendmessage hw...

關於框架開發

紀念 jar library installation jar檔案複製的目錄 2種方式區別 1.add checked libraries to project build path 把build path中引入的包指向myeclipse中lib的位置,就是把myeclipse中你需要的lib作為外...

框架開發1

config.inc.php配置檔案 cfg array cfg host localhost cfg user root cfg password 111111 conf.class.php讀取配置檔案的資訊,封裝類 單例類 class conf final protected function ...