ASP.NET MVC 简介

1.何谓Model

Model 可翻译成“模型”,笔者认为译成“数据模型”会更贴切一些,因为Model 负责所有与“数据”有关的任务,大致如下。

  • 定义数据结构。

  • 负责与数据库沟通。

  • 从数据库读取数据。

  • 将数据写入数据库。

  • 运行预储程序。

  • 数据格式验证。

  • 定义与验证商业逻辑规则。

  • 对数据进行各种加工处理。例如:指定特定实体(Entity) 某些字段的默认值。

简言之,只要是和“数据”有关的任务,都应该在Model 里完成定义。

2 何谓View

View可翻译成“检视”或者“视图”,但我很不喜欢这种为了翻译而翻译的名词,这样反而不利于沟通表达,所以之后一律会以View来表示。

View负责所有呈现在用户面前的东西,最简单的说法就是输出与输入。输出工作就是呈现在浏览器上的界面,例如,输出HTML、XML,等等。输入工作则是将用户输入的数据传回服务器,例如,在浏览器上呈现网页窗体让用户输入。

以下简单介绍,在View中与输出/输入有关的工作。

  • 输出

    • 从Controller 取得数据,并显示在用户界面上。

    • 决定要用什么技术来呈现“用户界面”(例如,HTML、XML、Silverlight 、Flash,等)。

    • 负责界面的排版、字型、颜色、美观与各种呈现方式。

    • 将Controller 传送的数据显示于界面,而数据是参考自Model 的定义。

    • 参考Model 的数据格式定义数据显示。

  • 输入

    • 负责将数据送回Controller 。

    • HTML 窗体通过GET 或POST 输出数据。

    • 决定数据应该送到哪一个Controller 的Action 中。

    • 决定数据传送的方式,例如,GET、POST、XML HTTP Request (XHR) 。

    • 前端基本的数据格式验证。

    • 验证功能,例如,使用JavaScript 验证表单域是否输入。

    • 参考Model 的类别定义,在Visual Studio 中利用Intellisense 撰写程序。

此外,与View相关的演示与技术如下。

  • HTML / XML / CSS

  • JSON

  • JavaScript ( jQuery 、jQuery UI 、MooTools 、Ext2、Prototype… )

  • MasterPage

  • ASP.NET Controls ( Server Control 、User Control )

  • AJAX 相关技术

  • Silverlight

  • Flash

  • Mobile 网页(PDA、手机、iPhone…)

  • WAP 网页

  • iPhone 网页

简言之,所有应该要显示在网页上的逻辑都是View负责的范围。

3 何谓Controller

Controller 可翻译成“控制器”,顾名思义就是“掌控全局的对象”,其负责的工作如下。

  • 决定与“用户”沟通的管道,以ASP.NET MVC 为例就是HTTP 或HTTPS。

  • 决定系统运作的流程。例如,从Controller 接收到数据后要立刻转向(Redirect) 到另一个页面。

  • 负责从Model 取得数据。我们可以在Controller 的类别中利用Model 提供的类别来取得数据。

  • 决定应该显示哪个View 。一个网站里有很多呈现的View,要挑选哪一个View 来呈现给用户,是Controller 的责任。或是当Controller 运行的过程中发生异常时,也可由Controller 挑选适当的View 进行响应。

  • MVC 架构

 

1    Controller 与View 的关联性

在Controller 与View的关联性上,彼此都是双向关系,但Controller 的主动性较高。

当Controller 为“主动”角色时:

  • Controller 可决定要显示哪一个View 。

    当View为“主动”角色时:

  • View 可决定数据要送回到哪一个Controller 的Action 。

  • 当View 需要数据时,可决定数据应该从哪一个Controller 的Action 取得。

2 Model 与Controller 的关联性

在Controller 与Model 的关联性中,Controller 永远居于“主动”的角色。Controller 负责调用或使用Model 所定义的各种类别,而Model 很单纯的仅仅提供“数据服务”或“验证服务”给Controller 使用。

 

1 关注点分离与可维护性

在MVC的世界里,有个非常重要的观念就是“关注点分离(Separation of Concerns, SoC)”。意思是指当你在进行软件开发时,可以只关注在当前的对象上,不会受到相同系统中其他对象的干扰,包括所有对对象的修正也不会影响其他对象的运作,进而专注于完成工作,如此一来,不但容易提升软件质量,还可加快程序代码理解的速度。

MVC设计样式拥有清楚的开发架构与明确的对象分工,使软件更易于维护,若你是对面向对象编程颇有概念的人,就会了解好的对象架构带你上天堂,不好的对象架构带你住套房,老师说的话记得要听。

posted @ 2020-05-08 11:12  renxw2020  阅读(175)  评论(0)    收藏  举报