ABP源碼分析三十二:ABP.SignalR


Realtime

Realtime是ABP底層模塊提供的功能,用於管理在線用戶。它是使用SignalR實現給在線用戶發送通知的功能的前提

IOnlineClient/OnlineClient: 封裝在線用戶的信息

OnlineClientManager/IOnlineClientManager: 用於提供基本維護在線用戶的方法。其內部維護了一個字典來保存在線的客戶信息。

 

 

 

SingalR

SignalRRealTimeNotifier: 實現了給在線用戶發送通知的功能。其從IOnlineClientManager中獲取在線客戶列表,然后比對通知UserNotification中的uerid,從而實現定向發送通知的功能。

 

AbpCommonHub:重寫了Hub中的OnConnectedOnDisconnected方法,在這兩個方法中將當前用戶添加/移除出IOnlineClientManager對象的集合。

 

 

WindsorDependencyResolver:繼承自系統默認的DefaultDependencyResolver,用於替換默認的serviceContainer為Castle的IWindsorContainer。

 

 

AbpSignalRContractResolver:實現了NewtonSoft的IContractResolver接口。其封裝了一個IgnoredAssemblies集合。實現ResolveContract方法:如果type的assembly在IgnoredAssemblies中就使用DefaultContractResolver,否則就使用CamelCasePropertyNamesContractResolver。

 

 

AbpWebSignalRModule:完成SignalR模塊的初始化,主要完成以下三方面的工作:

使用WindsorDependencyResolver替換DefaultDependencyResolver

根據ABP的regiser 規則,對SignalR模塊的接口或類進行register

設置JsonSerializer的ContractResolver為AbpSignalRContractResolver。

 

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM