65.9K
CodeProject 正在变化。 阅读更多。
Home

新手入门 MVC?阅读此文……

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.69/5 (26投票s)

2015年5月12日

CPOL

9分钟阅读

viewsIcon

30569

本文旨在面向 MVC 模式的初学者。如果您是这个框架的新手,请阅读我的这篇文章。

引言

本文旨在面向 MVC 模式的初学者(请不要将其与 ASP.NET MVC 混淆;如果您想学习 ASP.NET MVC,请阅读我的这篇帖子)。如果您是这个框架的新手,请阅读我的这篇帖子。我将涵盖 MVC 框架本身的 most of the parts,以及如何在您的应用程序中实现这个框架。

理解模型-视图-控制器

MVC 代表 Model-View-Controller(模型-视图-控制器)。如果您已经用 OOP(面向对象编程)模式开发过一些应用程序,您会很容易理解这一点。否则,您可能会在理解 MVC 模式时遇到一些困难。但随着我们继续,您会慢慢同步理解的。

首先,您应该从脑海中抛开任何其他的编程模型或框架。另外,(如前所述)不要将 MVC 与 ASP.NET MVC 混淆。这种模式在其他软件架构模式中非常常见。MVC 只是一个用于以一种模式开发软件的术语,这种模式将其分为三个子类别。

  1. Model(模型)— 应用程序的数据源。
  2. View(视图)— 应用程序的视图,简单来说就是图形用户界面。
  3. Controller(控制器)— 控制器是应用程序的实际后台逻辑。

以上是将代码高效分布的三个类别。应用程序编程是如何简化的,我将在后面的章节中解释。让我们先谈谈 MVC 的概念,然后我将介绍在不同编程语言和框架中实现 MVC 的方法。

深入 MVC

让我们首先将 MVC 作为我们讨论的主题。我们如何使用它,它实际上是什么。MVC 只是一个框架、架构或模式,无论您想怎么称呼它。它只是您软件开发过程的模型。其目标是维护您的源代码和数据源。此外,该框架旨在减少企业软件中存在的歧义和复杂性。通常,当一个应用程序达到企业级复杂度时,调试它会更加困难。

现在让我们剖析 MVC 的三个部分并对其进行彻底研究。

1. Model(模型)

该架构的模型部分着重于应用程序的数据。您的数据可能通过不同的方法获取:

  1. 数据库
  2. 报告
  3. 数据源,如文件;JSON 是一个主要例子
  4. 用户输入

这些构成了您应用程序的模型部分。模型负责更新用户界面,并向应用程序发出事件触发器(如果存在),以表明数据已更改。通常,这些只是给简单数据模型起的“花哨”名称。在大多数编程语言中,它可以是一个简单的类,具有几个成员(对应于数据库表中对象的属性或特性)以及一些函数,用于将数据存储到数据源并从中提取数据。这必须保持安全,并远离用户交互。将其分开有助于最大限度地减少未经授权的访问尝试。

注意函数部分也可以实现在控制器内部,用于保存或提取数据。 

2. 视图

View(视图)是软件应用程序的用户界面部分。所有界面设计,如按钮、输入字段等,都应添加到此类别。在大多数应用程序(如 Web 应用程序)中,HTML 页面就是 View,而在其他应用程序和框架中,则使用其他方法创建界面,例如 WPF 应用程序中的 XAML 文件。

视图的主要目的是从模型获取数据并将其呈现给用户。所有样式和其他 UI 和 UX 技术都必须在此应用。视图通常由控制器调用,并在用模型中的数据填充后作为响应返回给用户。

3. Controller(控制器)

接下来是这个框架最重要的部分。它是实际在后台运行的软件逻辑。它主要由应用程序运行的函数、为用户提供的其他底层逻辑代码以及其他需要在应用程序开始到结束的最后一行代码之间运行的代码组成。

在 Web 应用程序中,控制器负责处理来自用户的请求,然后通过将模型中的数据合并到所需的视图中来向用户返回响应。虽然过程与接收请求和返回响应类似。但幕后过程是这样的:

  1. 发起请求。
  2. 控制器处理请求。
  3. 读取 URL,然后触发相应的函数。
  4. 在这些函数中,向模型请求数据,并将数据填充到视图中。
  5. 然后将视图作为响应返回。

整个框架大致如下面的图像所示。

用户不得自行与模型交互,而必须使用控制器连接到模型,以获取供用户视图显示的数据。 

正如我之前提到的,用户不得与模型交互。用户必须在视图上提供所有必需的工具和按钮。视图可以与控制器交互以下载数据(如果需要)。这就是 MVC 软件开发模式。现在在下一节中,我将提供其他可能有用的资源。

其他资料…

正如我之前提到的,我将为特定框架或语言中的开发人员提供其他工具和材料。

任何框架或类型

本节面向所有人。如果您正在开发应用程序并希望实现 MVC 模式,请阅读本节,您将了解如何在自己的应用程序开发过程中开发此模式。

默认使用的语言是 C#,您也可以使用您自己特定的语言。C、C++ 和 Java 与该语言非常相似。

创建模型

创建模型是一项非常简单的任务。它只是您的数据源的包装器。可以将其转换为对象,然后在应用程序中进行交互。可以将其视为一个简单的对象。

class Model {
   public string Name { get; set; }
   public int Age { get; set; }
   public string Email { get; set; }
   public string Message { get; set; }

   // Functions
   public static List<Model> GetData() { /* code */ }
   public static void SaveData(List<Model> data) { /* code */ }
}

上面的代码是您自己应用程序的模型。它有几个属性(来自数据库)和 2 个函数。一个用于检索数据,另一个用于存储数据。

您现在可以将此连接到数据库、文件或其他资源中,并使用您拥有的数据源填充您的数据。

创建视图

这是一个简单的(另一个)任务。它包含构建用户界面。如果您使用 Web 应用程序,您将创建 HTML 网页并将所需的元素添加到网页中。相同的过程必须应用于软件应用程序,您可以在其中设计应用程序的用户界面并使用(后端)代码显示它。

创建控制器

现在来到必要的部分。控制器是运行应用程序逻辑的整个代码,它与事件和底层操作系统进行交互。当应用程序启动时会发生什么,应用程序终止时应该做什么,以及它们之间发生的事情。所有这些代码都是控制器。

您可以创建处理启动事件的类,也可以创建处理与您的视图进行其他交互事件的类。控制器还包含触发模型的代码;例如,触发我们模型中某个方法的代码(参见上面的“创建模型”部分)。

Web 应用程序中的 MVC

如果您要开发新的 Web 应用程序,您可以按照上述非常相似的方式开发您的应用程序。以一种能够将其划分为三个类别的方式编写代码。

  1. 模型
  2. 视图
  3. 控制器 (Controller)

当您的应用程序达到企业级复杂度时,这将非常有用。这样,到那时您就不必两次抓耳挠腮地想:“我当时是怎么想的?”

如果您(但是)要使用 ASP.NET,那么已经为您内置了一个 MVC 框架,所有的底层代码都已完成,并且 IDE 准备好满足您的需求。有关更多学习目的,请阅读我的另一个帖子。该文章包含了一个初学者开始 ASP.NET MVC Web 应用程序开发所需的所有信息。

离线应用程序

如果您正在使用 Java… 那么我有一个主要帖子用于此目的。您可以阅读它,了解如何在 Java 应用程序开发中实现相同的模式。您也可以下载并试用其中包含的示例。

其他软件语言和框架也可以实现 MVC 模式,您只需对您的软件应用程序代码进行分类即可。

关注点

话虽如此,我现在可能会给您一些关于安全应用程序和框架的其他有用的建议。以下内容可能对您有所帮助:

  1. MVC 模式可以帮助您整理代码,并将相同类型的代码归入 M-V-或-C 的单个标签下。
  2. 您永远不应该允许用户与模型交互。模型包含数据或数据定义。如果潜在用户能够与您的应用程序模型交互,他也可能绕过安全检查。因此,始终使用控制器来验证请求,然后从模型访问数据。
  3. 我使用过数据库、JSON 文件以及所有种类的其他可用数据源。因此,您的模型能够与任何存在的数据源交互(前提是您有足够的代码使其正常工作)。
  4. 您还可以使用 Ajax 在视图上部分运行控制器。如果您有兴趣学习如何在 MVC 模式中使用 Ajax,请阅读我的另一篇文章
  5. MVC 模式是一种软件设计和开发架构。它不要求您处于 Web 或离线上下文中。

希望这篇文章对您有所帮助。:)

历史

第一篇文章… 如果您发现有遗漏或问题。请在下方评论。如有需要,我将更新(或添加更多详细信息)。:)

版本 2:删除了一个错误和重复的一行。 

© . All rights reserved.