ABP源码分析三十二:ABP.SignalR
2016-04-16 08:25
295 查看
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。
返回ABP源码分析系列文章目录
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。
返回ABP源码分析系列文章目录
相关文章推荐
- 域名下Web项目重定向出现DNS域名解析错误问题
- 数据挖掘算法(一)提高文本分类算法准确率和性能的10条建议
- 微信抽奖类游戏设计
- JVM(8)--OutOfMemory实战
- LeetCode 138. Copy List with Random Pointer
- bzoj 2306: [Ctsc2011]幸福路径 倍增+floyed
- 高仿精仿安卓疯狂猜图游戏源代码
- [异能程序猿]第三章 异能初现(第三更)
- 给一位打算从事前端,但是又有疑惑的在校大学生的回信
- Delphi 10.1 Berlin下载破解激活
- 跨库事务一致性问题的解决方式(例)
- javascript 判断是否数字类型
- 产品经理 和 管家
- maven设置http代理
- 存储过程之查询的另类写法
- 模拟登陆CSDN——就是这么简单
- This function or variable may be unsafe Consider using xxx instead
- Android Studio 小技巧
- 前端二维码生成工具
- python之prettytable