zoukankan      html  css  js  c++  java
  • 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源码分析系列文章目录

  • 相关阅读:
    【洛谷P1558】色板游戏
    【SCOI2010】序列操作
    Windows下MySQL下载安装、配置与使用
    Redis和MySQL数据同步及Redis使用场景
    python的设计模式之MVC模式
    python 面试真题
    python调用C语言
    一次跨域请求出现 OPTIONS 请求的问题及解决方法
    服务器宕机问题
    页面静态化
  • 原文地址:https://www.cnblogs.com/1zhk/p/5397579.html
Copyright © 2011-2022 走看看