.NET CoreASP.NET MVC点耐特

Asp.net mvc 知多少(一)

2016-12-12  本文已影响7238人  圣杰

本系列主要翻译自《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 知多少(十)

本节主要讲解MVC的基本概念

Q1. 什么是MVC?
Ans. MVC是Model-View-Controller的简称。它是在1970年引入的软件设计模式。MVC 模式强迫关注分离 — 域模型和控制器逻辑与UI是松耦合关系。从而使应用程序的维护和测试更加简单容易。


Q2. 解释一下MVC设计模式?

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)。

MSDN关于DDD的介绍


Q4. 解释一下MVP模式?

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模式的关键点:

  1. 用户与View直接交互.
  2. View与Presenter是1对1关系,一个View对应一个Presenter
  3. View 与 Model 不发生联系,都通过 Presenter 传递。
  4. 各部分之间的通信,都是双向的。
  5. View 非常薄,不部署任何业务逻辑,称为"被动视图"(Passive View),即没有任何主动性,而 Presenter非常厚,所有逻辑都部署在那里。

Q5. 解释一下MVVM 模式?

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模式的关键点:

  1. 用户与View直接交互。
  2. View与ViewModel是1对多关系,一个View可以对应多个ViewModel。
  3. View保存一个对ViewModel的引用,但是ViewModel对于View一无所知。
  4. View和ViewModel之间的数据绑定是双向的。

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可以分解成几个不同的层:

  1. Objects or ViewModel or Presentation Layer - 这一层包含的简单对象或复杂的对象用来进行特定的强类型View的展示。这些对象用来从Controller传递数据到强类型的View,反之亦然。这些对象对应的类通过数据注解指定定的验证规则。通常来说,这些类拥有你想要展示到对应View/Page的属性。
  2. Business Layer - 主要用来实现业务逻辑和数据验证。同时通过数据访问层(DAL)将数据持久化到数据库。这一层被Controller直接调用去处理用户输入并将结果返回到View
  3. Data Access Layer - 提供对象去访问和操作数据库。通常来说,这一层主要使用一些ORM框架比如EF、NHibernate。


    MVC pattern in ASP.NET MVC

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

ASP.NET MVC3

ASP.NET MVC4

ASP.NET MVC5


Q11. 三层架构与MVC架构的区别在哪?

三层架构

Ans. 三层架构是一个线性的架构,主要包括:展现层、业务逻辑层、数据访问层。用户直接与展现层交互。
MVC架构是一个三角形架构,将应用程序分成三个部分,Model、View、Controller。用户在View的帮助下与Controller交互。
MVC不会替换掉三层架构;往往三层架构与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交互应用程序。
非开源 开源
主要区别
上一篇下一篇

猜你喜欢

热点阅读