今天我們來瞭解一下ASP.NET MCV的基礎知識,ASP.NET是一種構建Web應用程式的框架,它將通常的MVC(Model-View-Controller)模式應用於ASP.NET框架。 ...
1.1 ASP.NET MVC 簡介
今天我們來瞭解一下ASP.NET MCV的基礎知識,ASP.NET是一種構建Web應用程式的框架,它將通常的MVC(Model-View-Controller)模式應用於ASP.NET框架。html
1.1.1 MVC模式簡介
MVC將應用程式的用戶界面(User Interface, UI)分為三個主要部分:web
- 模型:一組類,描述了要處理的數據以及修改和操做數據的業務規則。
- 視圖:定義應用程式用戶界面的顯示方式。
- 控制器:一組類,用於處理來自用戶、整個應用程式流以及特定應用程式邏輯的通訊。
MVC做為用戶界面模式資料庫
註意這裡的MVC指的是一種用戶界面模式。MVC模式是處理用戶交互的一種解決方案,它並不處理應用程式關註的其餘問題,如數據訪問、服務交互等。瀏覽器
1.1.2 MVC在Web框架中的應用
MVC模式常常應用於Web程式設計中。在ASP.NET MVC中,MVC三個主要部分的定義大體以下:伺服器
- 模型:模型是描述程式設計人員感興趣問題域的一些類,這些類一般封裝存儲在資料庫中的數據,以及操做這些數據和執行特定域業務邏輯的代碼。在ASP.NET MVC中,模型就像使用了某種工具的數據訪問層(Data Access Layer),這種工具包括實體框架(Entity Framework)或者與包含特定域邏輯的自定義代碼組合在一塊兒的NHibernate。
- 視圖:一個動態生成HTML頁面的模板。
- 控制器:一個協助視圖和模型之間關係的特殊類。它響應用戶輸入,與模型進行對話,並決定呈現哪一個視圖(若是有的話)。在ASP.NET MVC中,這個類文件一般之尾碼名Controller表示。
註意 MVC是一種高級架構模式,它的使用取決於具體應用環境。ASP.NET MVC的上下文是問題域(一個無狀態的Web環境)和宿主系統(ASP.NET)。架構
ASP.NET MVC註重應用MVC模式來提供一個運行在.NET平臺上的強大Web開發框架,上下文則是其強大緣由的一部分。框架
ASP.NET採用了大部分覬覦MVC的Web框架所使用的一些基本原則:工具
- 約定優於配置(convention over configuration)
- 不重覆(又名DRY原則)
- 儘可能保持可插拔性(pluggability)
- 儘可能為開發人員提供幫助,單必要時容許開發人員自由發揮。
1.2 ASP.NET MVC5概述
ASP.NET MVC5主要特性:佈局
- One ASP.NET
- 新的Web項目體驗
- ASP.NET Identity
- Bootstrap模板
- 特性路由
- ASP.NET基架
- 身份驗證過濾器
- 過濾器重寫
- 進口氣動球閥
1.2.1 One ASP.NET
在MVC5中,只有一種ASP.NET項目類型。在Visual Studio2013中建立新的Web應用程式時,沒有複雜的選項,只有Web應用程式。不僅是在一開始建立ASP.NET項目時才支持這麼作:在不斷開發的過程當中,能夠添加對其餘框架的支持,由於工具和特性都是做為NuGet包提供的。例如,若是開發過程當中改變了想法,就可使用ASP.NET基架向任何現有的ASP.NET應用程式添加MVC。單元測試
1.2.2 ASP.NET Identity
ASP.NET Identity的一些主要的新特性:
- One ASP.NET Identity系統:為了支持前面介紹的One ASP.NET這個關註點,新的ASP.NET Identity被設計為可在整個ASP.NET家族中使用。
- 控制用戶資料數據:ASP.NET Identity使得存儲額外的用戶信息很容易,只須要在表明用戶的模型類中添加屬性便可
- 控制優於持久化:預設狀況下,全部用戶信息都使用Entity Framework Code First存儲,因此能夠得到咱們在使用Entity Framework Code First時已經習慣了的簡單性和控制。可是,也能夠插入其餘任何咱們但願使用的持久化機制,包括其餘ORM、資料庫、自定義的Web服務等。
- 可測試性:ASP.NET Identity API是使用介面設計的,因此容許為用戶相關的應用程式代碼編寫單元測試。
- 基於聲明:雖然ASP.NET Identity仍然支持用戶角色,可是也支持基於聲明的身份驗證。
- 登陸提供器:ASP.NET Identity並非只關註用戶名/密碼身份驗證,而是也理解用戶常常經過社交服務-提供器和Windows Azure Active Directory進行身份驗證。
- NuGet分發:AP.NET Identity 做為NuGet包安裝到應用程式中。這意味著能夠單獨安裝ASP.NET Identity,而且經過更新一個NuGet包,就能夠把它升級到新版本。
1.3 安裝MVC5和建立應用程式
1.3.1 建立ASP.NET MVC5應用程式
建立一個新的MVC項目的步驟以下:
(1).選擇File|New Project選項。
(2).在New Project對話框左欄的Installed Templates部分,選擇Visual C#|Web模板列表,這件在中間欄顯示Web應用長須類型列表。
(3).選擇ASP.NET Web Application,將應用程式命名為MvcMusicStore,而後單擊OK按鈕。
1.3.2 New ASP.NET Project對話框
建立一個新的MVC5應用程式後,將會出現New ASP.NET Project對話框。該對話框列出了全部ASP.NET應用程式共有的一些選項:
- 選擇模板
- 添加框架文件夾和核心引用
- 添加單元測試
- 更改身份驗證
- Microsoft Azure
前兩個選項(Select a template和Add folders and core references for)共同起做用。模板選擇了一個起點,而後使用框架覆選框來添加對Web Forms、MVC和Web API的支持。這意味著咱們能夠選擇一個MVC模板,而後添加Web Forms支持,或者能夠選擇空模板,添加對框架的支持。這種功能不止在建立新項目時可使用:任什麼時候候均可以添加對任意框架的支持,由於框架文件夾和核心引用是經過NutGet包添加的。
1.選擇一種應用程式模板
- MVC:MVC模板設置一個標準的、帶幾個視圖的Home Controller,配置站點佈局,並包含一個MVC特定的Project_Readme.html頁面。
- Empty:空模板會創建一個空的項目骨架。獲得的文件包括一個web.config(包含一些預設的網站配置設置)和建立項目所需的幾個程式集引用,可是僅此而已。這個模板不會提供代碼,不包含JavaScript或CSS腳本,甚至不會提供一個動態地HTML文件。
- Web Forms:Web Forms模板為ASP.NET Web Forms開發發下基礎。
- Single Page Application:Single Page Application模板建立的應用程式主要經過JavaScript請求Web API服務驅動,而不是採用傳統的Web頁面請求/相應周期。最初的HTML由一個MVC Home Controller提供,其他的伺服器端交互則有一個Web API控制器處理。次模板使用Knockout.js庫來幫助管理瀏覽器中的交互。
- Facebook:這個模板方便了構建一個Facebook“畫布”應用程式,也就是看上去托管在Facebook網站上的一個Web應用程式。
- Azure Mobile Service:Azure Mobile Service如今支持Web API服務,因此使用這個模板可以比較容易地建立針對Azure Mobile Service的Web API。
2.測試
全部的內置項目模板都有一個選項,用來使用樣本單元測試建立單元測試項目。
3.配置身份驗證
可選擇身份驗證方法:
- No Authentication:用戶不須要身份驗證的應用程式,例如沒有管理單元的公共網站。
- Individual User Accounts:用於在本地存儲用戶配置文件的應用程式。支持用戶名/密碼帳號,以及社交認證提供程式。
- Organizational Accounts:用於經過某種形式的活動目錄進行身份驗證的帳戶。
- Windows Authentication:用於內部網應用程式
新MVC項目在應用程式的根目錄下包含Project_Readme.html文件。建立項目時間自動顯示這個文件。這是一個徹底自包含的文件----全部的樣式都經過HTML樣式標簽包含進來,因此使用完該文件後能夠刪除它。
1.4 ASP.NET MVC應用程式的結構
用VS建立了一個新的ASP.NET MVC應用程式後,將自動向這個項目中添加一些文件和目錄。
這些由VS添加的預設文件提供了一個能夠運行的應用程式的基本結構,完整地包括了首頁、關於首頁、帳戶登陸/退出/註冊頁面以及一個未經處理的錯誤頁面(全部頁面彼此聯繫起來,能夠直接使用)。
1.4.1 ASP.NET MVC和約定
預設狀況下,ASP.NET MVC應用程式對約定的依賴性很強。這樣就避免了開發人員配置和指定一些項。
ASP.NET MVC的約定很是容易理解,下麵是預期的程式結構:
- 每一個Controller類的名字以Controller結尾。
- 應用程式的全部視圖放在單獨的Views目錄下。
- 控制器使用的視圖實在Views主目錄的一個子目錄中,這個子目錄是根據控制器名稱來命名的。