【转】ABP源码分析三十三:ABP.Web
ABP.Web模块并不复杂,主要完成ABP系统的初始化和一些基础功能的实现。
AbpWebApplication : 继承自ASP.Net的HttpApplication类,主要完成下面三件事
一,在Application_Start完成AbpBootstrapper的初始化。整个ABP系统的初始化就是通过AbpBootstrapper完成初始化的。
二,在Application_BeginRequest设置根据request或cookie中的Culture信息,完成当前工作线程的CurrentCulture和CurrentUICulture的设置。
三,在Application_AuthenticateRequest设置TenantId到claimsIdentity的Claim中。
AbpWebModuleConfiguration/IAbpWebModuleConfiguration: 定义了一个SendAllExceptionsToClients配置项
AbpWebModule: 继承自AbpModule,完成Abp.Web模块的初始化。初始化主要干两件事:
第一,Register Assembly by convention,这是所有模块都要在初始化完成的动作。
第二,将资源文件中的本地化数据添加到底层框架中的LocalizationManager维护的一个ILocalizationSource对象的字典中。
WebAssemblyFinder : 实现了IAssemblyFinder的GetAllAssemblies方法,用于获取当前web项目所引用的非原生的assembly。
WebAuditInfoProvider: 实现了底层框架中的IAuditInfoProvider接口。主要提供BrowserInfo,ClientIpAddress和ClientName。这三个信息来自HttpContext。
IFeaturesScriptManager/FeaturesScriptManager:用于返回一段javascript代码,该代码中的abp.features包含了当前访问用户的Tenant的所有Feature信息。
IAuthorizationScriptManager/AuthorizationScriptManager :用于返回一段javascript代码,该代码中的abp.auth包含了当前访问用户的所有Permission信息。
IMultiTenancyScriptManager/MultiTenancyScriptManager : 用于返回一段javascript代码,该代码中的abp.multiTenancy包含了当前MultiTenancy的配置信息。
INavigationScriptManager/NavigationScriptManager : 用于返回一段javascript代码,该代码中的abp.nav包含了当前访问用户的所有Navigation信息。
ISessionScriptManager/SessionScriptManager : 用于返回一段javascript代码,该代码中的abp.session包含了当前访问用户的所有session信息(userId,tenantId,impersonatorUserId,impersonatorTenantId,multiTenancySide)。
ISettingScriptManager/SettingScriptManager : 用于返回一段javascript代码,该代码中的abp.setting包含了当前访问用户的所有setting信息
ErrorInfo:用于封装error的信息
ValidationErrorInfo:用于封装Validation Error的信息
IExceptionToErrorInfoConverter/DefaultErrorInfoConverter : 该接口和其默认的实现用于将CLR的exception转换为ABP中的ErrorInfo。
IErrorInfoBuilder/ErrorInfoBuilder : 该接口和其实现通过调用IExceptionToErrorInfoConverter对象将将CLR的exception转换为ABP中的ErrorInfo。
AjaxResponse /AjaxResponse<object>: 用于封装针对ajax requests的Response信息。
返回ABP源码分析系列文章目录
【转】ABP源码分析三十三:ABP.Web相关推荐
- 【转】ABP源码分析三:ABP Module
Abp是基于模块化设计思想进行构建的.开发人员可以将自定义的功能以模块(module)的形式集成到ABP中.具体的功能都可以设计成一个单独的Module.Abp底层框架提供便捷的方法集成每个Modul ...
- ABP源码分析三十四:ABP.Web.Mvc
ABP.Web.Mvc模块主要完成两个任务: 第一,通过自定义的AbpController抽象基类封装ABP核心模块中的功能,以便利的方式提供给我们创建controller使用. 第二,一些常见的基础 ...
- 【转】ABP源码分析四十三:ZERO的本地化
ABP Zero模块扩展了ABP基础框架中的本地化功能,实现了通过数据库对本地化功能进行管理.其通过数据库保存本地化语言及其资源. ApplicationLanguage:代表本地化语言的实体类.一种 ...
- 【转】ABP源码分析三十五:ABP中动态WebAPI原理解析
动态WebAPI应该算是ABP中最Magic的功能之一了吧.开发人员无须定义继承自ApiController的类,只须重用Application Service中的类就可以对外提供WebAPI的功能, ...
- 【转】ABP源码分析三十四:ABP.Web.Mvc
ABP.Web.Mvc模块主要完成两个任务: 第一,通过自定义的AbpController抽象基类封装ABP核心模块中的功能,以便利的方式提供给我们创建controller使用. 第二,一些常见的基础 ...
- 【转】ABP源码分析三十一:ABP.AutoMapper
这个模块封装了Automapper,使其更易于使用. 下图描述了改模块涉及的所有类之间的关系. AutoMapAttribute,AutoMapFromAttribute和AutoMapToAttri ...
- ABP源码分析三十:ABP.RedisCache
ABP 通过StackExchange.Redis类库来操作Redis数据库. AbpRedisCacheModule:完成ABP.RedisCache模块的初始化(完成常规的依赖注入) AbpRed ...
- 【转】ABP源码分析三十九:ABP.Hangfire
ABP对HangFire的集成主要是通过实现IBackgroundJobManager接口的HangfireBackgroundJobManager类完成的. HangfireBackgroundJo ...
- 【转】ABP源码分析三十七:ABP.Web.Api Script Proxy API
ABP提供Script Proxy WebApi为所有的Dynamic WebApi生成访问这些WebApi的JQuery代理,AngularJs代理以及TypeScriptor代理.这些个代理就是j ...
最新文章
- Microbiome:生态中心张丽梅组-植物发育时期驱动玉米微生物组生态角色的分化...
- 希尔伯特著名的第六问题 – 原来麦克斯韦早就有解?
- 软件项目管理 用户测试,1对软件研发过程中用户需求研发设计项目测试交付实施测试等流程监督管理.doc...
- 如何自学python编程-如何教少儿学习Python编程
- 算法训练 猴子分苹果c语言,算法训练 猴子分苹果
- 人机猜拳代码python_python实现人机猜拳小游戏
- 利用面向对象的方式来使用JS
- rocketmq存储消息mysql_RocketMQ消息消费以及进度管理解析
- Javascript数据类型共有六种
- 「拖放」Mac 的底层能力,也是效率神技
- python脚本操作excel
- 联想服务器引导盘制作工具,联想(Lenovo)服务器System X 系列无法进入引导盘Server Guide的解决方案 - 王耍耍...
- [渝粤教育] 许昌学院 英语公共演讲 参考 资料
- 河北工程大学计算机类专业排名,河北工程大学优势专业排名,2021年河北工程大学最好的专业排名...
- 计算机平面设计大专学校排名,平面设计学校排名哪些较好?
- python编译环境 eclipse_Eclipse python 开发环境配置
- 原创:从零开始,微信小程序新手入门宝典《一》
- springBoot 用户头像的修改并及时显示
- 拂晓时分的伤感爱情独特日志发布:其实,我们不需要为爱找借口
- hive报错整理之Malformed ORC file 、Invalid postscript.
热门文章
- 移植U-BOOT之裁剪和修改默认参数(易用性)启动内核,以及对uboot进行分区
- 微信公众号开发经验总结
- AFNetworking 3.0源码阅读 - AFURLResponseSerialization
- jQuery介绍 DOM对象和jQuery对象的转换与区别
- Pydiction : VIM上的PYTHON代码自动补全插件
- centos永久关闭防火墙
- SQL中binary 和 varbinary的区别
- 上拉加载更多后台数据_微信小程序端操作云数据库
- java 强制向上转型,Java 转型(向上或向下转型)详解及简单实例
- 7-6 列出连通集 (25 分)(C语言实现)