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.Web的更多相关文章
- ABP源码分析三:ABP Module
Abp是一种基于模块化设计的思想构建的.开发人员可以将自定义的功能以模块(module)的形式集成到ABP中.具体的功能都可以设计成一个单独的Module.Abp底层框架提供便捷的方法集成每个Modu ...
- 使用react全家桶制作博客后台管理系统 网站PWA升级 移动端常见问题处理 循序渐进学.Net Core Web Api开发系列【4】:前端访问WebApi [Abp 源码分析]四、模块配置 [Abp 源码分析]三、依赖注入
使用react全家桶制作博客后台管理系统 前面的话 笔者在做一个完整的博客上线项目,包括前台.后台.后端接口和服务器配置.本文将详细介绍使用react全家桶制作的博客后台管理系统 概述 该项目是基 ...
- [Abp 源码分析]三、依赖注入
0.简要介绍 在 Abp 框架里面,无时无刻不存在依赖注入,关于依赖注入的作用与好处我就不在这里多加赘述了,网上有很多解释的教程.在 [Abp 源码分析]一.Abp 框架启动流程分析 里面已经说过,A ...
- ABP源码分析三十四:ABP.Web.Mvc
ABP.Web.Mvc模块主要完成两个任务: 第一,通过自定义的AbpController抽象基类封装ABP核心模块中的功能,以便利的方式提供给我们创建controller使用. 第二,一些常见的基础 ...
- ABP源码分析三十六:ABP.Web.Api
这里的内容和ABP 动态webapi没有关系.除了动态webapi,ABP必然是支持使用传统的webApi.ABP.Web.Api模块中实现了一些同意的基础功能,以方便我们创建和使用asp.net w ...
- ABP源码分析三十七:ABP.Web.Api Script Proxy API
ABP提供Script Proxy WebApi为所有的Dynamic WebApi生成访问这些WebApi的JQuery代理,AngularJs代理以及TypeScriptor代理.这些个代理就是j ...
- ABP源码分析三十五:ABP中动态WebAPI原理解析
动态WebAPI应该算是ABP中最Magic的功能之一了吧.开发人员无须定义继承自ApiController的类,只须重用Application Service中的类就可以对外提供WebAPI的功能, ...
- ABP源码分析三十:ABP.RedisCache
ABP 通过StackExchange.Redis类库来操作Redis数据库. AbpRedisCacheModule:完成ABP.RedisCache模块的初始化(完成常规的依赖注入) AbpRed ...
- ABP源码分析三十一:ABP.AutoMapper
这个模块封装了Automapper,使其更易于使用. 下图描述了改模块涉及的所有类之间的关系. AutoMapAttribute,AutoMapFromAttribute和AutoMapToAttri ...
随机推荐
- [译]ZOOKEEPER RECIPES-Leader Election
选主 使用ZooKeeper选主的一个简单方法是,在创建znode时使用Sequence和Ephemeral标志.主要思想是,使用一个znode,比如"/election",每个客 ...
- 使用webstorm+webpack构建简单入门级“HelloWorld”的应用&&引用jquery来实现alert
使用webstorm+webpack构建简单入门级"HelloWorld"的应用&&构建使用jquery来实现 1.首先你自己把webstorm安装完成. 请参考这 ...
- OpenCASCADE Job - dimue
- 关于Layer弹出框初探
layer至今仍作为layui的代表作,她的受众广泛并非偶然,而是这五年多的坚持,不断完善和维护.不断建设和提升社区服务,使得猿们纷纷自发传播,乃至于成为今天的Layui最强劲的源动力.目前,laye ...
- Hawk 6. 编译和扩展开发
Hawk是开源项目,因此任何人都可以为其贡献代码.作者也非常欢迎使用者能够扩展出更有用的插件. 编译 编译需要Visual Stuido,版本建议使用2015, 2010及以上没有经过测试,但应该可以 ...
- [C#] C# 知识回顾 - 特性 Attribute
C# 知识回顾 - 特性 Attribute [博主]反骨仔 [原文地址]http://www.cnblogs.com/liqingwen/p/5911289.html 目录 特性简介 使用特性 特性 ...
- GJM : C#设计模式汇总整理——导航 【原创】
感谢您的阅读.喜欢的.有用的就请大哥大嫂们高抬贵手"推荐一下"吧!你的精神支持是博主强大的写作动力以及转载收藏动力.欢迎转载! 版权声明:本文原创发表于 [请点击连接前往] ,未经 ...
- 一些关于Linux入侵应急响应的碎碎念
近半年做了很多应急响应项目,针对黑客入侵.但疲于没有时间来总结一些常用的东西,寄希望用这篇博文分享一些安全工程师在处理应急响应时常见的套路,因为方面众多可能有些杂碎. 个人认为入侵响应的核心无外乎四个 ...
- 关于Genymotion下载比较慢的解决办法
Genymotion号称Android模拟器中运行最快的,但是服务器在国外,Android镜像下载起来那个速度就不想说了. Add new device后下载速度太慢了,容易失败 先登录,然后add, ...
- Android studio使用git教程
①下载Git工具,配置到Android studio中 http://git-scm.com/downloads ------------------------------------------- ...