1. 程式人生 > >ABP原始碼分析三十二:ABP.SignalR

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原始碼分析ABP.SignalR

Realtime Realtime是ABP底層模組提供的功能,用於管理線上使用者。它是使用SignalR實現給線上使用者傳送通知的功能的前提 IOnlineClient/OnlineClient: 封裝線上使用者的資訊 OnlineClientManager/IOnlineClientManager:

ABP原始碼分析ABP.AutoMapper

這個模組封裝了Automapper,使其更易於使用。 下圖描述了改模組涉及的所有類之間的關係。 AutoMapAttribute,AutoMapFromAttribute和AutoMapToAttribute:這三個attribute用於標註一個類到另外一個類的map方向。 Auto

ABP原始碼分析ABP.Web.Mvc

ABP.Web.Mvc模組主要完成兩個任務: 第一,通過自定義的AbpController抽象基類封裝ABP核心模組中的功能,以便利的方式提供給我們建立controller使用。 第二,一些常見的基礎功能的實現。 AbpController:這是一個抽象基類,繼承自MVC Controller,是A

ABP原始碼分析ABP.Web.Api

這裡的內容和ABP 動態webapi沒有關係。除了動態webapi,ABP必然是支援使用傳統的webApi。ABP.Web.Api模組中實現了一些同意的基礎功能,以方便我們建立和使用asp.net webApi。 AbpApiController:這是一個抽象基類,繼承自ApiController,是AB

ABP原始碼分析ABP中動態WebAPI原理解析

動態WebAPI應該算是ABP中最Magic的功能之一了吧。開發人員無須定義繼承自ApiController的類,只須重用Application Service中的類就可以對外提供WebAPI的功能,這應該算是對DRY的最佳詮釋了. 如下圖所示,一行程式碼就為所有實現了IApplicationService的

ABP原始碼分析ABP.Hangfire

ABP對HangFire的整合主要是通過實現IBackgroundJobManager介面的HangfireBackgroundJobManager類完成的。 HangfireBackgroundJobManager:實現了介面IBackgroundJobManager中的方法EnqueueAsync,通過

ABP原始碼分析ABP.Web.Api Script Proxy API

ABP提供Script Proxy WebApi為所有的Dynamic WebApi生成訪問這些WebApi的JQuery代理,AngularJs代理以及TypeScriptor代理。這些個代理就是javascript指令碼,通過這些代理可以簡單的訪問Dynamic webApi。 如下例項演示一個最基本的

ABP原始碼分析ZERO的身份認證

ABP Zero模組通過自定義實現Asp.Net Identity完成身份認證功能, 對Asp.Net Identity做了較大幅度的擴充套件。同時重寫了ABP核心模組中的permission功能,以實現授權。注意:ABP僅僅使用了Asp.Net Identity的身份認證功能,但沒有使用Asp.Net Id

ABP原始碼分析ABP中的異常處理

ABP 中異常處理的思路是很清晰的。一共五種型別的異常類。 AbpInitializationException用於封裝ABP初始化過程中出現的異常,只要丟擲AbpInitializationException異常就可以,無須做額外處理。這類異常往往是需要維護人員介入分析的。 其他四個異常都在AbpCon

ABP原始碼分析ZERO的Audit,Setting,Background Job

AuditLog: 繼承自Entity<long>的實體類。封裝AuditLog的資訊。 AuditingStore: 實現了IAuditingStore介面,實現了將AuditLog的資訊儲存到資料庫的功能。其通過IRepository<AuditLog, long>例項完成對資料

ABP原始碼分析八: ABP.Web.Api.OData

如果對OData不熟悉的話可參考OData的初步認識一文以獲取OData的一些初步知識。 API.Odata 模組唯一用處就是提供了一個泛型版本的ODataController,實現了Controller程式碼的常用。 AbpODataEntityController<TEntity, TPrima

ABP原始碼分析ZERO的配置

ABP Zero模組中需要配置的地方主要集中在三塊:配置靜態的role,配置外部認證源,以及配置本地化語言和資源。 UserManagementConfig/IUserManagementConfig:定義了一個配置項,用於配置外部認證源。預設情況下,ABP Zero使用AbpUser表作為身份

ABP原始碼分析ABP Module

Abp是一種基於模組化設計的思想構建的。開發人員可以將自定義的功能以模組(module)的形式整合到ABP中。具體的功能都可以設計成一個單獨的Module。Abp底層框架提供便捷的方法整合每個Module.下圖是所有Abp自帶的module.AbpModule是所有Module的基類,其已經擁有了IIocMa

ABP原始碼分析十三ABP.Web

ABP.Web模組並不複雜,主要完成ABP系統的初始化和一些基礎功能的實現。 AbpWebApplication : 繼承自ASP.Net的HttpApplication類,主要完成下面三件事一,在Application_Start完成AbpBootstrapper的初始化。整個ABP系統的初始化就是通過A

ABP原始碼分析ZERO的Application和Tenant

ABP的Zero模組以資料庫為資料來源實現了ABP框架中的tenant management (multi-tenancy), role management, user management, session, authorization (permission management), setting m

練習用python實現:按相反的順序輸出列表的每一位值

用python實現:按相反的順序輸出列表的每一位值 1. 使用list[::-1] 1 list1 = ["one","two","three","four"] 2 for i in list1[::-1]:#list[::-1]結果為列表的反向 3 print(i) 2. 使用l

opencv學習筆記Haar特徵與積分影象

一、 Haar特徵定義         Haar特徵是基於“塊”的特徵,也被稱為矩形特徵。Haar特徵(模板)分為三類:邊緣特徵、線性特徵、中心特徵和對角線特徵。特徵模板內有白色和黑色兩種矩形,並定義該模板的特徵值為白色矩形畫素和減去黑色矩形畫素和。Haar特徵值反映了影象

UNIX v6原始碼分析除錯之單步除錯系統程式碼 main函式之 kinit1

    環境搭建完成,該學習Main.c的main函數了。先貼上main函式的實現。int main(void) { kinit1(end, P2V(4*1024*1024)); // phys page allocator kvmalloc(); // k

性能測試監控之Java線程監控

無限 腳本 lsof 右鍵 定向 log文件 tin lock bubuko 線程的五種狀態 * 新建:new * 運行:runnable * 等待:waitting(無限期等待),timed waitting(限期等待) * 阻塞:blocked * 結束:te

Linux運維學習筆記之 防火牆實戰

第四十三章 防火牆實戰一、Iptables基礎概念1、一般使用情況(1)seLinux關閉(生產系統也是關閉的)(2)使用硬體ids(入侵檢測)(3)iptables在生產環境中一般是內閘道器閉,外網開啟。在大併發的情況下,不能開iptables,影響效能,這時可以使用硬體防