abp angular 和mvc_MVC - abp-angular - 博客园

模块对常用组件、服务进行服务注册,可以mvcCoreBuilder、mvcbuilder进行配置,Option的配置,如本地化,MvcOption,AbpAspNetCoreMvcOptions对自动API的控制器,特别是对ApplicationPartManager的part和feature管理

1、配置自动注入,要求是Controller、ViewComponent、PageModel的实现,或者配置Attribute特性,统一是Transient类型

2、Configure Razor 用到ConfigureOptions,配置它的FileProviders是RazorViewEngineVirtualFileProvider

即是IVirtualFileProvider

3、AbpApiDescriptionModelOptions

IgnoredInterfaces = new HashSet{typeof(ITransientDependency),typeof(ISingletonDependency),typeof(IDisposable),typeof(IAvoidDuplicateCrossCuttingConcerns)

};

增加

options.IgnoredInterfaces.AddIfNotContains(typeof(IAsyncActionFilter));

options.IgnoredInterfaces.AddIfNotContains(typeof(IFilterMetadata));

options.IgnoredInterfaces.AddIfNotContains(typeof(IActionFilter));

4、增加注册AddMvcCore(),返回类型是mvcCoreBuilder,

context.Services.ExecutePreConfiguredActions(mvcCoreBuilder);

上面这句话的意思是,可以在前面自定义配置,使用Context.Services.PreConfigure(mvcCoreBuilder=>{配置委托})

同理对AbpMvcDataAnnotationsLocalizationOptions类型,如

options.AddAssemblyResource(typeof(MvcTestResource),typeof(AbpAspNetCoreMvcTestModule).Assembly

);

而且将IOptions,使用new OptionsWrapper ??应该是Configure()是相同的效果??

增加Imvcbuilder,扩展方法增加AddNewtonsoftJson,AbpMvcJsonContractResolver,增加AddRazorRuntimeCompilation对Razor的编译

context.Services.AddMvc()

Func 对于创建IstringLocalizer使用DataAnnotationLocalizerProvider,根据类型的Assembly找到对应的Resource

再增加View Localization的服务到应用,也可以对IMvcbuilder进行配置,注入IActionContextAccessor,负责自动创建APi服务的ServiceBasedControllerActivator

创建ViewComponent的 ServiceBasedViewComponentActivator

ApplicationPartManager管理的parts和features

配置MvcOptions

AddConventions(options, services);AddFilters(options);

AddModelBinders(options);

AddMetadataProviders(options, services);

在应用初始化时增加程序集的ApplicationParts,插件集直接添加 ,否则要求的是ConventionalControllerSetting下的Assembly

即:AbpAspNetCoreMvcOptions》AbpConventionalControllerOptions》ConventionalControllerSettingList》ConventionalControllerSetting (包括关系)

即是在配置自动的API控制器,它会增加到ConventionalControllerSettingList列表,这个ConventionalControllerSetting的 Assembly会增加到ApplicationParts

Configure(options =>{

options

.ConventionalControllers

.Create(typeof(BookStoreApplicationModule).Assembly);

});

又因为FeatureProviders增加了AbpConventionalControllerFeatureProvider,重写什么是IsController方法,ConventionalControllerSetting下面ControllerTypes包含的类型,而这个类型在Create的方法将它个程序集下所有IRemoteService(可以继承,也可以设RemoteServiceAttribute)添加进去,实现IRemoteService的方法有ApplicationService,增加委托方法,可以将下面的委托进行操作

这个RootPath="app",TypePredicate,ControllerModelConfigurer,UrlControllerNameNormalizer,UrlActionNameNormalizer,ApiVersionConfigurer,List

在MvcOption下 options.Conventions.Add(new AbpServiceConventionWrapper(services)); 它增加了其中IApplicationModelConvention的,Abp将自定义的包装AbpServiceConventionWrapper添加了进去,它可以Controller进行自定义设置

ApplicationModel,是存储对象有

ApiExplorerModel:主要是配置默认MVC Api Explorer的一些东西,包括Api的描述信息,组信息,可见性等

ControllerModel:主要是 Comtroller 默认约定相关的了 IList记录了程序集所有Controller信息,可以自定义设置

IFilterMetadata :空接口,主要起到标记的作用。

ApiExplorer.visible是默认true.包括Controller以及Action

Selector:包括controller和action

ActionConstraints:即Get POST方法

AttributeRouteModel:AttributeRouteModel即路由关系,增加路由关系;RouteTemplate:Api/app/

EndpointMetadata :包括Attribute

Parameter:BindingInfo

/*Default binding system of Asp.Net Core for a parameter

* 1. Form values

* 2. Route values.

* 3. Query string.*/

Abp在不是"GET", "DELETE", "TRACE", "HEAD"方法上,即主要是Post、Put、Patch方法上增加了FromBodyAttribute

eb38d4da99fd51d63804727fa0cce946.png

避免横切关注点重复执行,目标是AbpController和ApplicationService,在ActionFilter里面增加了Audit和Feature拦截器

那么自己的拦截器就不要使用了,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值