码迷,mamicode.com
首页 > Web开发 > 详细

MVC

时间:2019-12-11 19:37:21      阅读:160      评论:0      收藏:0      [点我收藏+]

标签:code   json   vcc   access   name   rac   注册   tac   xpl   

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

  

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

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

即是IVirtualFileProvider

3、AbpApiDescriptionModelOptions

    IgnoredInterfaces = new HashSet<Type>
            {
                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>(mvcCoreBuilder=>{配置委托})

 同理对AbpMvcDataAnnotationsLocalizationOptions类型,如

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

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

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

context.Services.AddMvc()

Func<Type, IStringLocalizerFactory, IStringLocalizer> 对于创建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列表,这个ConventionalControllerSettingAssembly会增加到ApplicationParts

 Configure<AbpAspNetCoreMvcOptions>(options =>
        {
            options
                .ConventionalControllers
                .Create(typeof(BookStoreApplicationModule).Assembly);
        });

 又因为FeatureProviders增加了AbpConventionalControllerFeatureProvider,重写什么是IsController方法,ConventionalControllerSetting下面ControllerTypes包含的类型,而这个类型在Create的方法将它个程序集下所有IRemoteService添加进去,

增加委托方法,可以将下面的委托进行操作

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

 

在MvcOption下有个IList<IApplicationModelConvention> Conventions,Abp将自定义的包装AbpServiceConventionWrapper添加了进去

ApplicationModel对象有

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

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

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

 

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

RoutTemplate:Api/app/

MVC

标签:code   json   vcc   access   name   rac   注册   tac   xpl   

原文地址:https://www.cnblogs.com/cloudsu/p/12021840.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!