Realtime
Realtime是ABP底層模塊提供的功能,用於管理在線用戶。它是使用SignalR實現給在線用戶發送通知的功能的前提
IOnlineClient/OnlineClient: 封裝在線用戶的信息
OnlineClientManager/IOnlineClientManager: 用於提供基本維護在線用戶的方法。其內部維護了一個字典來保存在線的客戶信息。
SingalR
SignalRRealTimeNotifier: 實現了給在線用戶發送通知的功能。其從IOnlineClientManager中獲取在線客戶列表,然后比對通知UserNotification中的uerid,從而實現定向發送通知的功能。
AbpCommonHub:重寫了Hub中的OnConnected和OnDisconnected方法,在這兩個方法中將當前用戶添加/移除出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。