本系列主要翻譯自《ASP.NET MVC Interview Questions and Answers 》- By Shailendra Chauhan,想看英文原版的可訪問http://www.dotnettricks.com/free-ebooks自行下載。該書主要分爲兩部分,ASP.NET MVC 五、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 知多少(十)html
Q1. 什麼是MVC?
Ans. MVC是Model-View-Controller的簡稱。它是在1970年引入的軟件設計模式。MVC 模式強迫關注分離 — 域模型和控制器邏輯與UI是鬆耦合關係。從而使應用程序的維護和測試更加簡單容易。jquery
Q2. 解釋一下MVC設計模式?程序員
Ans. MVC 設計模式將應用程序分解成3個主要部分: Model, View, Controller(模型、視圖、控制器)web
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交互應用程序。 |
非開源 | 開源 |