ASP.NET Core MVC应用模型的构建[1]: 应用的蓝图 - Artech

ASP.NET Core MVC应用模型的构建[1]: 应用的蓝图 - Artech

💡 原文中文,约9300字,阅读约需22分钟。
📝

内容提要

ASP.NET Core MVC框架的核心在于应用模型的构建。应用模型通过提取Controller类型和Action元数据生成API文档和客户端代码。ApplicationModelFactory负责创建应用模型,利用IApplicationModelProvider和IApplicationModelConvention进行构建和约定,最终描述整个应用的结构,包括Controller、Action和属性等。

🔎

延伸解读

应用模型:MVC框架的蓝图与扩展点

应用模型是MVC框架的核心蓝图,它从Controller类型和Action元数据构建而来,不仅用于生成路由终结点,还能自动生成API文档和客户端代码。其构建过程由ApplicationModelFactory驱动,通过IApplicationModelProvider和IApplicationModelConvention两个扩展点实现定制。理解这一设计,有助于开发者深入掌握MVC框架的运作机制,并灵活扩展应用模型。

两阶段构建:IApplicationModelProvider的执行逻辑

IApplicationModelProvider采用两阶段构建模式:先按Order顺序执行OnProvidersExecuting,再逆序执行OnProvidersExecuted。这种设计允许提供程序在正向处理时收集信息,在反向处理时进行修正或补充。共享上下文ApplicationModelProviderContext贯穿始终,确保所有提供程序操作同一应用模型实例,最终由工厂提取结果。

约定定制:IApplicationModelConvention的灵活应用

IApplicationModelConvention允许通过约定方式定制应用模型,其Apply方法可修改整个ApplicationModel。此外,针对Controller、Action、参数和属性,MVC提供了IControllerModelConvention、IActionModelConvention、IParameterModelConvention和IParameterModelBaseConvention等接口,可将约定实现为特性标注在对应节点上,实现细粒度控制。

内置提供程序与注册方式

MVC框架内置了多个IApplicationModelProvider实现,如DefaultApplicationModelProvider提供大部分元数据,AuthorizationApplicationModelProvider和CorsApplicationModelProvider处理授权与跨域,ApiBehaviorApplicationModelProvider提供API相关描述。这些提供程序通过AddMvcCore、AddControllers等扩展方法注册到依赖注入容器,开发者也可注册自定义实现来定

❓

Q&A

ASP.NET Core MVC框架的应用模型是什么?

应用模型是通过提取Controller类型和Action元数据生成的,描述整个应用的结构,包括Controller、Action和属性等。

ApplicationModelFactory在应用模型构建中起什么作用?

ApplicationModelFactory负责创建应用模型,并利用注册的IApplicationModelProvider和IApplicationModelConvention进行构建和约定。

IApplicationModelProvider接口的主要功能是什么?

IApplicationModelProvider接口定义了Order属性和两个方法,用于构建Action元数据的两阶段任务。

如何利用应用模型生成API文档?

应用模型可以自动生成API开发文档,工具可以利用它生成消费API的客户端代码。

IApplicationModelConvention对象的作用是什么?

IApplicationModelConvention对象用于为应用模型设置基于约定的元数据,支持对Controller、Action和参数的定制。

ApplicationModel的结构是怎样的?

ApplicationModel对象包含多个ControllerModel对象,每个ControllerModel又包含多个ActionModel和PropertyModel对象。

🏷️

标签

➡️

继续阅读