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设计样式拥有清楚的开发架构与明确的对象分工,使软件更易于维护,若你是对面向对象编程颇有概念的人,就会了解好的对象架构带你上天堂,不好的对象架构带你住套房,老师说的话记得要听。
原文:https://www.cnblogs.com/renwen123/p/5604767.html