ABP源码分析三十四:ABP.Web.Mvc
ABP.Web.Mvc模块主要完成两个任务:
第一,通过自定义的AbpController抽象基类封装ABP核心模块中的功能,以便利的方式提供给我们创建controller使用。
第二,一些常见的基础功能的实现。
AbpController:这是一个抽象基类,继承自MVC Controller,是ABP系统中所有controller的基类。如下图中,其封装了ABP核心模块中提供的大多数的功能。同时实现了一些公共的方法。它有三个派生类:AbpAppViewController,AbpScriptsController,AbpLocalizationController。
AbpWebViewPage<TModel> ,AbpWebViewPage:继承自MVC的WebViewPage。他们是ABP系统中所有view的基类。实现了一些通用逻辑:比如本地化。
ControllerConventionalRegistrar:继承自IConventionalDependencyRegister,register 所有controller的派生类。
AbpWebMvcModule:继承自AbpModule,完成Abp.Web.MVC模块的初始化。初始化主要干两件事:
第一件事,Register Assembly by convention,这是所有模块都要在初始化执行的动作。
第二件事,使用自定义的的WindsorControllerFactory替换MVC默认的DefaultControllerFactory,以实现Controller的依赖注入。
WindsorControllerFactory: 继承自DefaultControllerFactory,重写了ReleaseController和GetControllerInstance方法来管理Controller对象。
ErrorViewModel:封装了ErrorInfo和Exception类型的属性。
MvcAjaxResponse<TResult>,MvcAjaxResponse:用于封装针对ajax requests的Response信息。继承自AjaxResponse<TResult>,添加了一个TargetUrl属性,没有重写基类中的方法。
AbpMvcAuthorizeAttribute:实现IAbpAuthorizeAttribute接口,继承Mvc的AuthorizeAttribute,并重写AuthorizeCore方法。 提供permissions的设置。
AbpLocalizationController:继承自AbpController,添加了ChangeCulture方法用于更改语言设置。并将语言设置保存在Cookie中。
AbpAppViewController:继承自AbpController,根据viewUrl返回一个view.
AbpScriptsController:继承自AbpController,添加了GetScripts方法返回一段javascript代码,该代码中的相应的JS对象包含当前访问用户的所有Permission信息,Navigation信息,session信息,setting信息,当前MultiTenancy的配置信息,当前访问用户的Tenant的所有Feature信息。
ActionDescriptorHelper:返回ActionDescriptor的methodInfo
AbpJsonResult:继承自Newtonsoft的JsonResult。配置将CLR对象序列化为CamelCase的json 对象。
EmbeddedResourceRouteHandler : 实现了MVC的IRouteHandler的GetHttpHandler方法。 返回自定义的IHttpHandler对象EmbeddedResourceHttpHandler
EmbeddedResourceHttpHandler:实现了MVC的IHttpHandler的ProcessRequest方法。根据RouteData中pathInfo指定的文件路径,返回对应的文件。
WebResourceHelper:为嵌入型的资源文件请求创建路由规则,和指定其RouteHandler为EmbeddedResourceRouteHandler。嵌入型的资源文件是指嵌入到assembly中的JS和Css资源.
HtmlHelperResourceExtensions: 扩展了HtmlHelper类,添加了IncludeScript和IncludeStyle方法。这连个方法如下。有何用?主要用于防止客户端读取其缓存在本地的Js和Css文件,而这些文件在server端又存在更新的版本。
实际项目中的用法如下:
返回ABP源码分析系列文章目录
ABP源码分析三十四:ABP.Web.Mvc相关推荐
- 【转】ABP源码分析三十四:ABP.Web.Mvc
ABP.Web.Mvc模块主要完成两个任务: 第一,通过自定义的AbpController抽象基类封装ABP核心模块中的功能,以便利的方式提供给我们创建controller使用. 第二,一些常见的基础 ...
- ABP源码分析三十:ABP.RedisCache
ABP 通过StackExchange.Redis类库来操作Redis数据库. AbpRedisCacheModule:完成ABP.RedisCache模块的初始化(完成常规的依赖注入) AbpRed ...
- 【转】ABP源码分析三十:ABP.RedisCache
ABP 通过StackExchange.Redis类库来操作Redis数据库. AbpRedisCacheModule:完成ABP.RedisCache模块的初始化(完成常规的依赖注入) AbpRed ...
- 【转】ABP源码分析三十八: ABP.Web.Api.OData
如果对OData不熟悉的话可参考OData的初步认识一文以获取OData的一些初步知识. API.Odata 模块唯一用处就是提供了一个泛型版本的ODataController,实现了Controll ...
- 【转】ABP源码分析三十五:ABP中动态WebAPI原理解析
动态WebAPI应该算是ABP中最Magic的功能之一了吧.开发人员无须定义继承自ApiController的类,只须重用Application Service中的类就可以对外提供WebAPI的功能, ...
- 【转】ABP源码分析三十六:ABP.Web.Api
这里的内容和ABP 动态webapi没有关系.除了动态webapi,ABP必然是支持使用传统的webApi.ABP.Web.Api模块中实现了一些同意的基础功能,以方便我们创建和使用asp.net w ...
- ABP源码分析三十六:ABP.Web.Api
这里的内容和ABP 动态webapi没有关系.除了动态webapi,ABP必然是支持使用传统的webApi.ABP.Web.Api模块中实现了一些同意的基础功能,以方便我们创建和使用asp.net w ...
- 【转】ABP源码分析三十九:ABP.Hangfire
ABP对HangFire的集成主要是通过实现IBackgroundJobManager接口的HangfireBackgroundJobManager类完成的. HangfireBackgroundJo ...
- 【转】ABP源码分析三十二:ABP.SignalR
Realtime Realtime是ABP底层模块提供的功能,用于管理在线用户.它是使用SignalR实现给在线用户发送通知的功能的前提 IOnlineClient/OnlineClient: 封装在 ...
最新文章
- 人工智能及其应用(第5版).蔡自兴-2章课后习题。【参考答案】
- 告别 swagger-ui ,我选择了这款神器!
- GNU screen 命令
- oracle云产品是什么意思,Oracle云端产品线也要AI化,ERP云等4大主力云产品先升级...
- Siverlight去掉ToolTip的白色边框
- Windows Mobile访问SQL Server CE 3.5(2)
- Silverlight实用窍门系列:42.读取拖动到控件上的外部txt和jpg文件,多外部文件的拖动【附带实例源码】...
- oracle上浮下浮分析函数_Oracle分析函数简析
- js webpack 配置路径_vue使用webpack配置路径别名
- 机械臂拉格朗日动力学怎么用matlab仿真_Matlab 机器人动力学参数辨识仿真(1)单摆的动力学参数辨识...
- Atitit office ooxml 系列 excel的读取api 框架 poi的使用
- 软件测试项目经验案例,项目经验又多了一些
- typedef的4种常见用法
- 霸榜11个月,神车MINI EV进退两难!
- windows使用opencc中文简体和繁体互转
- 我的window10
- 什么是云计算,云计算是什么意思
- python中label函数_让Label像Button一样可以点击
- 插件化原理解析——广播的管理
- Python - Python3 编程第一步 Fibonacci series: 斐波纳契数列