本系列主要翻译自《ASP.NET MVC Interview Questions and Answers 》- By Shailendra Chauhan,想看英文原版的可访问http://www.dotnettricks.com/free-ebooks自行下载。该书主要分为两部分,ASP.NET MVC 5、ASP.NET WEB API2。本书最大的特点是以面试问答的形式进行展开。通读此书,会帮助你对ASP.NET MVC有更深层次的理解。 由于个人技术水平和英文水平也是有限的,因此错误在所难免,希望大家多多留言指正。 系列导航 Asp.net mvc 知多少(一) Asp.net mvc 知多少(二) Asp.net mvc 知多少(三) Asp.net mvc 知多少(四) Asp.net mvc 知多少(五) Asp.net mvc 知多少(六) Asp.net mvc 知多少(七) Asp.net mvc 知多少(八) Asp.net mvc 知多少(九) Asp.net mvc 知多少(十)
Q1. 什么是MVC? Ans. MVC是Model-View-Controller的简称。它是在1970年引入的软件设计模式。MVC 模式强迫关注分离 — 域模型和控制器逻辑与UI是松耦合关系。从而使应用程序的维护和测试更加简单容易。
Q2. 解释一下MVC设计模式?
Ans. MVC 设计模式将应用程序分解成3个主要部分: Model, View, Controller(模型、视图、控制器)
Model - 模型代表一系列类用来描述业务逻辑,比如业务模型以及数据访问操作,再比如数据模型。同时也定义了对数据如何进行处理的业务规则。
View - 视图代表的是UI部分,像CSS、jquery、html等。它主要的职责是展现从controller接受到数据或模型。
Controller - 控制器职责在于处理传入的请求。它接受用户通过视图的输入,然后对用户输入的数据模型进行处理,最终通过视图将结果渲染给用户。通常来讲,控制器在视图和模型之间扮演着桥梁(协调者)的角色。
Q3. 什么是领域驱动设计开发? Ans. Domain-Driven Design (DDD)定义了一系列的准则和模式从而时开发者针对不同的领域采取合适的设计方案以开发出优美的系统。DDD既不是一项技术也不是一套方法论。DDD主要由Entity, Value Object, Aggregate, Service, Repository五大部分组成。 Entity(实体):具有唯一标志的对象,比如用户。 Value Object(值对象):不具有唯一标志的对象,比如枚举。一个值对象也可以是一个实体视情况而定。 Aggregate(聚合): 它通过定义对象之间清晰的所属关系和边界来实现领域模型的内聚,并避免了错综复杂的难以维护的对象关系网的形成。聚合定义了一组具有内聚关系的相关对象的集合,我们把聚合看作是一个修改数据的单元。领域模型:聚合、聚合根详解。 Service(服务):服务是在应用程序中用来处理业务逻辑的。 Repository(仓储):仓储的作用是数据的存储读取,即封装数据持久化框架。它不关心使用何种数据库。仓储也不是我们常说的Data Access Layer(数据操作层),但是为了安全因素,仓储会引用一个位置进行存储。仓储的主要职责是处理聚合的和持久化相关的任务(ADD、UPDATE、DELETE、GET)。
Q4. 解释一下MVP模式?
Ans. MVP与MVC相似,只是将MVC的Controller替换成Presenter。MVP模式将应用程序分解成3个主要部分: Model, View, Presenter。
Model - 模型代表一系列类用来描述业务逻辑,比如业务模型以及数据访问操作,再比如数据模型。同时也定义了对数据如何进行处理的业务规则。
View - 视图代表的是UI部分,像CSS、jquery、html等。它主要的职责是展现从controller接受到数据或模型。
Presenter - 职责在于处理视图上的UI行为事件。通过View接收用户输入,然后通过Model处理用户数据,然后将结果传回view。不想View和Controller,View和Presenter之间完全解耦,是通过接口进行交互。同时它也不处理和接收传入的请求。
MVP模式通常用在Asp.net Web Form、Windows Form 应用程序 MVP模式的关键点:
Q5. 解释一下MVVM 模式?
Ans. MVVM 是指 Model-View-View Model. MVVM支持在View与ViewModel之间进行双向数据绑定。通过视图模型的状态就能够自动的传播改动到View。通常来说,ViewModel是通过观察者模式将ViewModel的改动通知到View。 Model - 模型代表一系列类用来描述业务逻辑,比如业务模型以及数据访问操作,再比如数据模型。同时也定义了对数据如何进行处理的业务规则。
View - 视图代表的是UI部分,像CSS、jquery、html等。它主要的职责是展现从controller接受到数据或模型。
View Model - ViewModel 的职责是暴露方法、命令以及属性去维护View的状态,操纵Model 作为View执行的结果,以及触发View上自身的事件。
MVVM模式的关键点:
Angular就是使用这种模式。
Q6. 什么是 ASP.NET MVC? Ans. ASP.NET MVC 是一套基于Microsoft .NET Framework的用来开发web应用程序的开源框架。它确保了代码的干净整洁且关注分离. ASP.NET MVC framework 具有很好的扩展性以及支持自定义。
Q7. MVC模式在ASP.NET下是如何工作的? Ans. 我们按照Model、View、Controller的顺序来一一解释: The Model in ASP.NET MVC ASP.NET MVC 中的Model可以分解成几个不同的层:
The View in ASP.NET MVC View就是展示从Controller传递的数据。同时肩负着将Model进行转换以在View的UI上进行展示。 The Controller in ASP.NET MVC 响应Http请求并根据传入的请求内容决定由哪个具体的Action去处理。它通过View接收用户输入,然后通过Model的帮助去处理用户数据并将结果返回给View.
Q9. ASP.NET MVC相对于Web Forms的优势有哪些? Ans. 主要有以下几点优势:
Q10. 简要介绍下ASP.NET MVC的版本更新? Ans. 以下是ASP.NET MVC的主要版本及版本特性: ASP.NET MVC1
ASP.NET MVC2
DataAnnotations
属性注解以支持客户端服务端双重数据验证ASP.NET MVC3
ASP.NET MVC4
ASP.NET MVC5
Q11. 三层架构与MVC架构的区别在哪?
Ans. 三层架构是一个线性的架构,主要包括:展现层、业务逻辑层、数据访问层。用户直接与展现层交互。 MVC架构是一个三角形架构,将应用程序分成三个部分,Model、View、Controller。用户在View的帮助下与Controller交互。 MVC不会替换掉三层架构;往往三层架构与MVC是一起使用的,MVC扮演三层架构中的展现层。
Q12. ASP.NET WebForm 与 ASP.NET MVC的区别是什么? Ans. 主要的区别详细见下表:
Web Forms | MVC |
---|---|
事件驱动开发模型 | 轻量级的基于MVC模型的开发模型 |
服务端控件 | Html Helper |
状态管理技术(View State、Session) | 没有自动的状态管理 |
基于文件路径的路由 | 基于路由的Urls |
遵循WebFrom语义 | 遵循Razor引擎语义 |
View与业务逻辑紧耦合(.aspx,.aspx.cs) | View与业务逻辑分离 |
通过Master Page(母板页)进行统一布局 | 使用Layout 统一布局 |
通过User Controls 进行重用 | 通过Partial View进行重用 |
有内置的数据控件,操作数据比较方便 | 轻量级的,提供全面的控制标记和支持许多功能,允许快速和敏捷发展。因此,它是最好的用最新的Web标准开发Web交互应用程序。 |
非开源 | 开源 |