龙空技术网

ASP.NET Core MVC 简介

愤怒的苹果盘 778

前言:

眼前我们对“netmvc程序入口”大概比较关心,看官们都需要剖析一些“netmvc程序入口”的相关知识。那么小编也在网摘上汇集了一些对于“netmvc程序入口””的相关知识,希望朋友们能喜欢,咱们一起来了解一下吧!

什么是 MVC 模式?

模型-视图-控制器 (MVC) 架构模式将应用程序分为三个主要组成部分:模型、视图和控制器。 此模式有助于实现关注点分离。 使用此模式,用户请求被路由到控制器,后者负责使用模型来执行用户操作和/或检索查询结果。 控制器选择要显示给用户的视图,并为其提供所需的任何模型数据。

下图显示 3 个主要组件及其相互引用关系:

这种责任划分有助于根据复杂性缩放应用程序,因为这更易于编码、调试和测试包含单一作业的某个组成部分(模型、视图或控制器)。 但这会加大更新、测试和调试代码的难度,该代码在这 3 个领域的两个或多个领域间存在依赖关系。 例如,用户界面逻辑的变更频率往往高于业务逻辑。 如果将表示代码和业务逻辑组合在单个对象中,则每次更改用户界面时都必须修改包含业务逻辑的对象。这常常会引发错误,并且需要在每次进行细微的用户界面更改后重新测试业务逻辑。

模型责任

MVC 应用程序的模型 (M) 表示应用程序和任何应由其执行的业务逻辑或操作的状态。 业务逻辑应与保持应用程序状态的任何实现逻辑一起封装在模型中。 强类型视图通常使用 ViewModel 类型,旨在包含要在该视图上显示的数据。 控制器从模型创建并填充 ViewModel 实例。

视图责任

视图 (V) 负责通过用户界面展示内容。 它们使用 Razor 视图引擎在 HTML 标记中嵌入 .NET 代码。 视图中应该有最小逻辑,并且其中的任何逻辑都必须与展示内容相关。 如果发现需要在视图文件中执行大量逻辑以显示复杂模型中的数据,请考虑使用 View Component、ViewModel 或视图模板来简化视图。

控制器职责

控制器 (C) 是处理用户交互、使用模型并最终选择要呈现的视图的组件。 在 MVC 应用程序中,视图仅显示信息;控制器处理并响应用户输入和交互。 在 MVC 模式中,控制器是初始入口点,负责选择要使用的模型类型和要呈现的视图(因此得名 - 它控制应用如何响应给定请求)

而ASP.NET Core MVC 提供一种基于模式的方式,用于生成可彻底分开管理事务的动态网站。它提供对标记的完全控制,支持 TDD 友好开发并使用最新的 Web 标准。

ASP.NET Core MVC 包括以下功能:

路由,模型绑定,模型验证,依赖关系注入,筛选器,区域,Web API,可测试性,Razor 视图引擎,强类型视图,标记帮助程序,视图组件

路由:ASP.NET Core MVC 建立在 ASP.NET Core 的路由之上,是一个功能强大的 URL 映射组件,可用于生成具有易于理解和可搜索 URL 的应用程序。它可让你定义适用于搜索引擎优化 (SEO) 和链接生成的应用程序 URL 命名模式,而不考虑如何组织 Web 服务器上的文件。可以使用支持路由值约束、默认值和可选值的方便路由模板语法来定义路由。

模型绑定:ASP.NET Core MVC 通过使用数据注释验证属性修饰模型对象来支持验证。验证属性在值发布到服务器前在客户端上进行检查,并在调用控制器操作前在服务器上进行检查。

依赖关系注入:ASP.NET Core 内置有对依赖关系注入 (DI) 的支持。 在 ASP.NET Core MVC 中,控制器可通过其构造函数请求所需服务,使其能够遵循 Explicit Dependencies Principle(显式依赖关系原则)。

应用还可通过 @inject 指令使用视图文件中的依赖关系注入。

筛选器:帮助开发者封装横切关注点,例如异常处理或授权。筛选器允许操作方法运行自定义预处理和后处理逻辑,并且可以配置为在给定请求的执行管道内的特定点上运行。筛选器可以作为属性应用于控制器或操作(也可以全局运行)。此框架中包括多个筛选器(例如 Authorize)。[Authorize] 是用于创建 MVC 授权筛选器的属性。

区域:提供将大型 ASP.NET Core MVC Web 应用分区为较小功能分组的方法。区域是应用程序内的一个 MVC 结构。在 MVC 项目中,模型、控制器和视图等逻辑组件保存在不同的文件夹中,MVC 使用命名约定来创建这些组件之间的关系。对于大型应用,将应用分区为独立的高级功能区域可能更有利。例如,具有多个业务单位(如结账、计费、搜索等)的电子商务应用。每个单位都有自己的逻辑组件视图、控制器和模型。

WEB API:该框架包括对 HTTP 内容协商的支持,后者有允许设置数据格式为 JSON 或 XML 的内置支持。编写自定义格式化程序以添加对自己格式的支持。

可测试性:框架对界面和依赖项注入的使用非常适用于单元测试,并且该框架还包括使得集成测试快速轻松的功能(例如 TestHost 和实体框架的 InMemory 提供程序)。详细了解如何测试控制器逻辑。

Razor视图引擎:ASP.NET Core MVC 视图使用 Razor 视图引擎呈现视图。Razor 是一种紧凑、富有表现力且流畅的模板标记语言,用于使用嵌入式 C# 代码定义视图。Razor 用于在服务器上动态生成 Web 内容。可以完全混合服务器代码与客户端内容和代码。

强类型视图:可以基于模型强类型化 MVC 中的 Razor 视图。控制器可以将强类型化的模型传递给视图,使视图具备类型检查和 IntelliSense 支持。

标记帮助程序:使服务器端代码可以在 Razor 文件中参与创建和呈现 HTML 元素。可以使用标记帮助程序定义自定义标记(例如 <environment>),或者修改现有标记的行为(例如 <label>)。标记帮助程序基于元素名称及其属性绑定到特定的元素。它们提供了服务器端呈现的优势,同时仍然保留了 HTML 编辑体验。

视图组件:通过视图组件可以包装呈现逻辑并在整个应用程序中重用它。这些组件类似于分部视图,但具有关联逻辑。

标签: #netmvc程序入口