学习 MVC - 第一部分:MVC 架构和关注点分离简介






3.98/5 (99投票s)
MVC 架构和关注点分离简介。
介绍
在阅读了大量的博客和文章之后,我得出的结论是,很少有真正的作者从基础到全面地解释这个主题,同时包含一个可运行的应用程序。 我在这个 MVC 系列文章中的努力将是涵盖 MVC 的几乎所有方面,从创建一个简单的应用程序并使用各种 Microsoft 提供程序连接到数据库开始。 我们将逐步推进,以便我们可以理解并实际实施每种场景。
路线图
- 第一部分:MVC 架构和关注点分离简介。
- 第二部分:从头开始创建 MVC 应用程序并使用 LINQ to SQL 将其连接到数据库。
- 第三部分:借助 EntityFramework DB-First 方法连接 MVC 应用程序。
- 第四部分:借助 EntityFramework Code-First 方法连接 MVC 应用程序。
- 第五部分:在带有 EntityFramework 的 MVC 应用程序中实现 Repository 模式。
- 第六部分:在带有 EntityFramework 的 MVC 应用程序中实现通用 Repository 模式和 Unit Of Work 模式。
准备好了吗? 让我们从第一部分开始我们的旅程吧。
第一部分:MVC 架构和关注点分离简介
要涵盖的主题
- MVC 的含义是什么。
- 理解 MVC 架构。
- 关注点分离
参与者
模型 (Model):整体应用程序运行于其上的业务实体。 许多应用程序使用持久性存储机制(例如数据库)来存储数据。 MVC 没有专门提及数据访问层,因为它被理解为由模型封装。
视图 (View):将模型呈现为交互形式的用户界面。
控制器 (Controller):处理来自视图的请求并更新导致模型状态更改的模型。
要在 .NET 中实现 MVC,我们主要需要三个类(视图、控制器和模型)。
MVC 架构
当我们选择一个解决方案时,分离关注点、易于维护和应用程序的可扩展性非常重要,此时 MVC 是一个很好的选择。 按照下面给出的架构,我们可以看到 MVC 应用程序的请求-响应流程。
该架构是不言自明的。 浏览器(像往常一样)向 IIS 发送请求,IIS 搜索 MVC 应用程序中定义的路由,并根据路由将请求传递给控制器,控制器与模型通信并将填充的模型(实体)传递给视图(前端),视图填充有模型属性,并在浏览器上呈现,通过调用特定视图的控制器,通过 IIS 将响应传递给浏览器。
关注点分离
根据 Wikipedia 的定义,“将计算机程序分解为功能尽可能少重叠的不同特征的过程”。 MVC 设计模式旨在将内容与表示分离,并将数据处理与内容分离。 理论上听起来不错,但我们在 MVC 中在哪里看到这一点? 一个地方相当清楚 - 在数据处理(模型)和应用程序的其余部分之间。
当我们谈论视图和控制器时,它们的所有权本身就解释了分离。 视图只是应用程序的表示形式,它不必特别了解来自控制器的请求。 模型独立于视图和控制器,它只保存业务实体,这些实体可以由控制器传递给任何视图,以根据需要将其暴露给最终用户。 控制器独立于视图和模型,其唯一目的是处理请求并根据定义的路由和呈现视图的需要传递请求。 因此,我们的业务实体(模型)、业务逻辑(控制器)和表示逻辑(视图)位于彼此独立的逻辑/物理层中。
结论
现在我们知道了为什么以及在何处使用 MVC,在本系列的下一部分中,我们将从头开始创建一个 MVC 应用程序,并探索 MVC 的实际实现。