ASP.NET MVC 原理
我出了份卷子做面试题,其中之一就是要求说说ASP.NET MVC的原理。感觉太空泛了,谁能说得准呢?
但是,如果站在我这个面试官立场,面试题好多时并不要求有标准答案,可能也没有什么标准答案,主要是通过问答,了解一下面试者的理解程度,相关知识程度什么的。其实,我自己水平也不行,但因为年纪大,好像不带点人大家会觉得有点怪怪的,所以过去一段时间也参与点招聘工作。
对于ASP.NET MVC,我自己的理解是酱紫的:
MVC是一种思想。ASP.NET MVC只不过是实现了这种思想的一种开发框架。利用Web Form项目,其实也可以实现MVC。以前搞WEB FORM,我就试过MVP模式。
MVC的思想要点的在于将UI和业务逻辑、数据分离。好处一是逻辑清晰,二是有利于逻辑重用和测试。因为UI很难自动化测试,但逻辑却可以。所以说,ASP.NET MVC有利于进行单元测试。并且UI与逻辑、数据分离以后,也容易重用。比如说,在ASP.NET MVC中,不同的action可以指向同一个view。
经典的MVC中,Model是个巨无霸,包含业务逻辑和数据。controller只是一个中间人,在View和Model之间传递点什么,打打酱油。有时候,Model和View甚至直接联系,绕开了controller。
而在ASP.NET MVC中,虽然有一个Model,但此Model并非彼巨无霸Model。ASP.NET MVC中的Model,是一个跟视图有关的Model,也就是传说中的那个VM,ViewModel,它只是经典巨无霸Model的一部分。ViewModel,顾名思义,主要用于View。经典巨无霸Model,被拆分成了数据(ViewModel、领域对象、数据库实体类 )+ 业务逻辑(BLL ,各种Service)。因此,Model只不过是一群概念的集合,并不是一个实实在在的对象。
值得一提的是,ViewModel、领域对象、数据库实体类很有可能是同一个对象。比如说,我们在View里直接操作的VM,其实常常就是将数据持久层的实体类直接拿过来用的。即便如此,但在软件设计阶段,还是要将它们的概念区分开。
ASP.NET MVC的原理,其实就是使用HttpModule和HttpHandler将用户的请求拦截,按照设定的路由规则解释到相应的控制器和Action,加以执行。Module是一个比较宏观一点的概念,像Session、Cache都由相应的Module负责;而Handler就是负责处理具体请求的。先有Module,再有Handler。它们的关系,有点像进程和线程。
ASP.NET MVC 原理的更多相关文章
- ASP.NET MVC原理
仅此一文让你明白ASP.NET MVC原理 ASP.NET MVC由以下两个核心组成部分构成: 一个名为UrlRoutingModule的自定义HttpModule,用来解析Controller与 ...
- 仅此一文让你明白ASP.NET MVC原理
ASP.NET MVC由以下两个核心组成部分构成: 一个名为UrlRoutingModule的自定义HttpModule,用来解析Controller与Action名称: 一个名为MvcHandler ...
- 【转】仅此一文让你明白ASP.NET MVC原理
原文地址:http://www.cnblogs.com/DotCpp/p/3269043.html ASP.NET MVC由以下两个核心组成部分构成: 一个名为UrlRoutingModule的自定义 ...
- 简述ASP.NET MVC原理
1.为什么ASP.NET需要MVC? 因为随着网站的的数量级越来越大,原始的网站方式,这里指的是WebForm,在运行速度和维护性方面,以及代码量上面,越来越难以满足日益庞大的网站维护成本.代码的重构 ...
- 仅此一文让你明白ASP.NET MVC 之View的显示(仅此一文系列二)
题外话 一周之前写的<仅此一文让你明白ASP.NET MVC原理>受到了广大学习ASP.NET MVC同学的欢迎,于是下定决心准备把它写成一个系列,以满足更多求知若渴的同学们.蒋金楠老师已 ...
- ASP.NET MVC 之View
仅此一文让你明白ASP.NET MVC 之View的显示(仅此一文系列二) 题外话 一周之前写的<仅此一文让你明白ASP.NET MVC原理>受到了广大学习ASP.NET MVC同学的 ...
- Asp.Net MVC学习总结(一)——Asp.Net MVC简单入门
一.MVC简单入门 1.1.MVC概念 视图(View) 代表用户交互界面,对于Web应用来说,可以概括为HTML界面,但有可能为XHTML.XML和Applet. 模型(Model) 表示用户对其数 ...
- ASP.NET MVC学习目录
一.ASP.NET MVC原理详解 1.了解MVC架构模式 3.学习ASP.NET MVC的必备语言知识 4.MVC中的razor语法详解 5.ASP.NET MVC路由系统机制详细讲解 6.ASP. ...
- ASP.NET MVC 5 Web编程2 -- URL映射(路由原理)
本章将讲述ASP.NET MVC5 的路由原理,即URL映射机制. 简单点就是解释:为什么MVC在浏览器输入地址就能访问到类(或类中的方法)?这是怎么做到的?我自己可以通过.NET写出一个自己的MVC ...
随机推荐
- Canal使用报错解决办法
1. [destination = test_cancal , address = /127.0.0.1:3306 , EventParser] WARN c.a.o.s.a.i.setl.zooke ...
- AnjularJs-Select添加数据并设置默认值
html中 <select name="book_classify" class="all_list_btn" ng-model="select ...
- POJ 1161 Walls(Floyd , 建图)
题意: 给定n个城市, 然后城市之间会有长城相连, 长城之间会围成M个区域, 有L个vip(每个vip会处于一个城市里)要找一个区域聚会, 问一共最少跨越多少个长城. 分析: 其实这题难就难在建图, ...
- 洛谷 P1938 [USACO09NOV] 找工就业Job Hunt
这道题可以说是一个复活SPFA的题 因为数据比较小,SPFA也比较简单 那就复习(复读)一次SPFA吧 #include<iostream> #include<cstdio> ...
- 一个jboss启动shell脚本
脚本1: #!/bin/sh # paulo@evencom.com.br #JBOSS_HOME JBOSS_HOME="/opt/app/jboss-eap-6.3" JAVA ...
- SSH常见问题集锦
/WEB-INF/web.xml Web应用程序配置文件,描述了 servlet 和其他的应用组件配置及命名规则. /WEB-INF/classes/包含了站点所有用的 class 文件,包括 ser ...
- 73. Spring Boot注解(annotation)列表【从零开始学Spring Boot】
[从零开始学习Spirng Boot-常见异常汇总] 针对于Spring Boot提供的注解,如果没有好好研究一下的话,那么想应用自如Spring Boot的话,还是有点困难的,所以我们这小节,说说S ...
- ERP类系统设计学习
文章:分布式.服务化的ERP系统架构设计 文章的方法是对系统进行拆分,拆分成多个子系统.
- BC#76.2DZY Loves Balls
DZY Loves Balls Accepts: 659 Submissions: 1393 Time Limit: 4000/2000 MS (Java/Others) Memory Lim ...
- [luoguP2216] [HAOI2007]理想的正方形(二维单调队列)
传送门 1.先弄个单调队列求出每一行的区间为n的最大值最小值. 2.然后再搞个单调队列求1所求出的结果的区间为n的最大值最小值 3.最后扫一遍就行 懒得画图,自己体会吧. ——代码 #include ...