1. 程式人生 > >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)。

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. 主要有以下幾點優勢:

  • Separation of concern(關注分離) - MVC設計模式將Asp.net MVC 應用程式分成三個部分,View、Controller、Model。更容易的去處理程式的複雜性問題。
  • TDD(測試驅動開發)- 更好的支援測試驅動開發。
  • Extensible and pluggable (擴充套件性好)- MVC支援可插拔、可擴充套件。因此更容易進行替換和自定義。
  • Full control over application behaviour (對應用程式的完全控制)- MVC 不使用View State,且不依賴於Server。促使程式設計師可以更好的控制應用的行為同時減少對Server請求的頻寬。
  • ASP.NET features are supported (強大Asp.net 功能支援)- MVC 框架是基於Asp.net 設計的,因此可以使用Asp.ent包含大部分功能,比如認證、授權,許可權和角色控制、快取、Session等。
  • URL routing mechanism (路由機制)- MVC 框架提供了一個強大的Url路由機制,以便我們構建易理解易搜尋的URLS。這個路由機制提高了應用程式的可訪問性,同時利於搜尋引擎優化。

Q10. 簡要介紹下ASP.NET MVC的版本更新?
Ans. 以下是ASP.NET MVC的主要版本及版本特性:
ASP.NET MVC1

  • 2009-3-13 釋出
  • 基於 .NET 3.5、Visual Studio 2008 、Visual Studio 2008 SP1執行
  • 基於WebForm引擎的MVC模式架構
  • Html Helpers
  • Ajax helpers
  • Routing
  • Unit Testing

ASP.NET MVC2

  • 2010-3-10釋出
  • 基於 .NET 3.5, 4.0,Visual Studio 2008 & 2010執行
  • 基於lambda表示式強型別的HTML幫助器方法
  • Templated Helpers(模板幫助器)
  • UI helpers 支援自動腳手架功能及自定義模板
  • 支援DataAnnotations屬性註解以支援客戶端服務端雙重資料驗證
  • 過載了HTTP謂詞 GET, PUT, POST, and DELETE
  • Areas
  • 非同步控制器

ASP.NET MVC3

  • 2011-1-13釋出
  • 基於 .NET 4.0 、Visual Studio 2010執行
  • Razor view engine
  • 加強了資料驗證
  • Remote Validation(遠端驗證)
  • Compare Attribute(比較屬性)
  • Session less Controller
  • Child Action Output Caching
  • Dependency Resolver(依賴注入)
  • 支援 Entity Framework Code First
  • Partial-page output caching
  • 添加了ViewBag動態屬性以支援Controller與View間的資料傳遞
  • Global Action Filters
  • 更好的Javascript支援: 非侵入式JavaScript, jQuery 驗證, JSON 繫結
  • 使用 NuGet 平臺去交付和管理依賴

ASP.NET MVC4

  • 2012-8-15釋出
  • 基於.NET 4.0, 4.5 、Visual Studio 2010SP1 & Visual Studio 2012執行
  • ASP.NET WEB API
  • 對預設的專案模板進行更新和加強
  • 提供了基於Jquery Mobile的移動專案模板
  • Display Models
  • Task support for Asynchronous Controllers
  • Bundling and minification(捆綁和微小)
  • 支援 Windows Azure SDK

ASP.NET MVC5

  • 2013-10-17釋出
  • 基於 .NET 4.5, 4.5.1& Visual Studio 2012 & Visual Studio 2013執行
  • One ASP.NET
  • ASP.NET Identity
  • ASP.NET Scaffolding
  • Authentication filters(身份驗證過濾器 - ASP.NET MVC管道中的授權過濾器之前執行)
  • 引入了Bootstrap
  • ASP.NET WEB API2

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互動應用程式。
非開源 開源

主要區別

相關推薦

ASP.Net MVC學習

方法 title 系列 字符串類 所有 value 內部 但是 必須 MVC 設計模式將應用程序分解成3個主要部分: Model, View, Controller(模型、視圖、控制器) Model - 模型代表一系列類用來描述業務邏輯,比如業務模型以及數據訪問操作,

ASP.NET MVC 路由--- ASP.NET WebForm路由模擬

      ASP.NET WebForm 應用,使用者請求的是物理檔案,其中包括靜態頁面和動態頁面,在Url中的顯示都是伺服器中一個物理檔案的相對路徑。但是ASP.NET MVC就不同了,使用者請求的是Controller中一個Action方法,這種請求是通過路由將Url對映到相對的Controller

應用程式框架實戰三十:表現層及ASP.NET MVC介紹

  本文將介紹表現層及ASP.NET MVC的一些要點,特別是ASP.NET MVC的一些抽象和封裝技巧,如果你對MVC還不瞭解,可以參考《ASP.NET MVC4 高階程式設計》,作者Jon Galloway等,這本書由ASP.NET MVC團隊成員編寫,相當不錯。 表現層的職責   表現層的職責是展示

ASP.NET MVC入門---MVC的Hello World

簡單的MVC Hello world,著重處理Controller。 Step1 建立一個Asp.Net MVC 5專案 開啟Visual studio 2013 點“檔案”->新建->專案。 Step 1.2 選擇Web 應用,輸入專案名稱,選擇存放路徑

如何做一個基於ASP.NET MVC 網站

       開篇,說一下。本人以前也是經常瀏覽很多部落格去檢視學習網站開發的資料。有時,我會想當初為什麼會選擇這個行業?是因為對這份工作充滿著熱情,希望在以後的未來能在這個領域能有自己的快樂。 首先

不使用Visual Studio開發ASP.NET MVC應用下篇

構建 onf log rdquo 你們 err ica ide lan 書接上回! 前文“純手工”、徹底拋棄Visual Studio,制作了一個ASP.NET MVC應用,運行起來還不錯,項目目錄、源代碼、web.config等所有東西都已經做到

ASP.NET MVC PatternC#

搬磚。   正文: MVC(Model-View-Controller)的設計模式已經存在了幾十年了,並且已經跨許多不同的技術使用。 從Smalltalk到C++ ,到Java,現在的C# 和 .NET 都是用這個設計模式來構建使用者介面。   以下是一些MV

ASP.NET MVC 概覽C#

摸索學習筆記。   正文: ASP.NET MVC是微軟的一個開源的軟體。 它的Web開發框架結合了MVC(model-view-controller)體系結構的特點,敏捷開發的最新思想和技術以及現有的ASP.NET平臺的最佳部分。 ASP.NET MVC不是從0開始建立的,它

ASP.Net學習筆記網頁GIf影象亂碼問題

FileStream stream = new FileStream(Server.MapPath("picture.gif"),FileMode.Open); long FileSize = stream.Length; byte[] Buffer = new byte

ASP.NET MVC 學習-- MVC中的資料夾

MVC 程式設計模型 MVC 是用於構建 web 應用程式的一種框架,使用 MVC (Model View Controller) 設計: Model(模型)表示應用程式核心(比如資料庫記錄列表) View(檢視)對資料(資料庫記錄)進行顯示 Controller(控

.Net MVC學習

第一個MVC程式,先從建立專案開始 筆者用的是VS2017,沒有aspx檢視 建好後,我們會得到這樣一個目錄,Models(模型),Views(檢視),Controllers(控制器)

應用程式框架實戰三十三:表現層及ASP.NET MVC介紹

  最近的更新速度越來越慢,主要是專案上比較忙,封裝EasyUi也要花很多時間。不過大家請放心,本系列不會半途夭折,並且程式碼乾貨也會持續更新。本文繼續介紹表現層和Asp.net Mvc,我將在本篇討論一些重要的設計問題和封裝技巧。 是否需要將控制器分離為獨立專案   經常有人問我,是否有必要將控制器從W

ASP.NET Core入門

    大家好,很榮幸您點了開此篇文章,和我一起來學習ASP.NET Core,此篇文字為《ASP.NET Core入門》系列中的第一篇,本系列將以一個部落格系統為例,從第一行程式碼,到系統釋出上線(linux)。如有錯誤,請聯絡我,讓我們共同成長,進步,謝謝。下面進入正題:   首先,看到這篇

ASP.NET 安全認證—— 如何運用 Form 表單認證 摘自 http://blog.csdn.net/cityhunter172

ASP.NET 安全認證(一)——如何運用 Form 表單認證作者:寒羽楓(cityhunter172)序程式碼寫 N 久了,總想寫得別的。這不,上頭說在整合兩個專案,做成單一登入(Single Sign On),也有人稱之為“單點登入”。查閱相關文件後,終於實現了,現在把它

ASP.NET MVC學習---許可權過濾機制完結篇

相信對許可權過濾大傢伙都不陌生 使用者要訪問一個頁面時 先對其許可權進行判斷並進行相應的處理動作 在webform中 最直接也是最原始的辦法就是 在page_load事件中所有程式碼之前 先執行一個許可權判斷的方法 至於其專業的許可權機制這裡不做討論 想要了解的同學可以自行

ASP.NET 安全認證:如何運用 Form 表單認證

程式碼寫 N 久了,總想寫得別的。這不,上頭說在整合兩個專案,做成單一登入(Single Sign On),也有人稱之為“單點登入”。查閱相關文件後,終於實現了,現在把它拿出來與大家一起分享。或許大家會問:“這與標題不符呀?”別急,在下筆之前,我腦子裡想到了我剛使用 Form

ASP.NET之旅--淺談Asp.net執行機制

       很多Asp.net開發人員都有過Asp的背景,以至於我們開發程式的時候總是停留在“頁面”層次思考,也就是說我們常常會只考慮我們現在所做的系統是要完成什麼功能,是要做問卷調查網站還是個人網站,而很少在“請求級”思考,思考能不能通過編碼的方式來操作一個Http請

網站釋出—圖解Win7旗艦版中的IIS配置asp.net執行環境

         牛腩算是接近尾聲了,最後一項也就是將敲了這麼多天的網站成功釋出,將近花了一下午的時間,總算是將它成功釋出啦,下面給大傢俱體分享下發布的相關步驟,算是分享一下一下午的成果! 一、首先將自己的原始碼打包釋出 二、釋出成功之後就,接下來就是安裝iis,

Asp.net mvc 多少

本節主要講解MVC的基本概念 Q1. 什麼是MVC? Ans. MVC是Model-View-Controller的簡稱。它是在1970年引入的軟體設計模式。MVC 模式強迫關注分離 — 域模型和控制器邏輯與UI是鬆耦合關係。從而使應用程式的維護和測試更加簡單容易。 Q2. 解釋一下MVC設計模式? A

Asp.Net MVC 以小見大】步改寫簡單的登入註冊

寫這篇文章其實心裡是比較忐忑的,確實Asp.Net MVC框架出來了很長時間了,我這篇文章稍有過時之嫌。不過本著分享學習的態度,還是寫一寫吧。MVC框架的文章園子裡已經很多了,想專題中的重典、老趙、子秋、老代等人都寫過,我一直想找一個不同的切入點,於是就產生了從一個小例子