來源:http://www.zhidao91.com/asp-net/
在經過對.Net平台深入的學習以后,我發現很多語言開發動態網站時,它的后台邏輯都差不多是相同的,今天在這里我給大家來聊聊在.Net平台下網站的開發!
目前,ASP.NET中兩種主流的開發方式是:ASP.NET Webform和ASP.NET MVC。從下圖可以看到ASP.NET WebForms和ASP.NET MVC是並行的,也就是說MVC不會取代WebForms(至少目前是這樣)而是多了一個選擇,Webform在短期之內不會消亡,盡管存在許多缺點,但過去許多老項目依舊是使用的WebForms進行開發的,雖然許多公司已經在積極的將WebForms項目遷移或升級到MVC項目,但WebFoms項目依然會存在很長一段時間。
WebForm的開發方式
- 服務器端控件
- 一般處理程序+Html靜態頁+Ajax
- 一般處理程序+Html模板
WebForm模型
MVC請求模型
DomainModel – 領域模型: 不僅僅是一個實體類,而是整個業務才處理流程的一個規則.
WebForm 優點
- 支持事件模型開發。得益於豐富的服務器端組件,webfrom開發可以迅速的搭建web應用
- 使用方便,入門容易
- 控件豐富
WebForm 缺點
- 封裝太強,很多底層東西讓我們初學者不是很明白
- 入門容易,提升很難
- 復雜的生命周期模型學習起來並不容易
- 控制不靈活
- ViewState處理
ASP.Net MVC的開發方式
- 2009年第一個開源項目版本發布
- 更加簡潔,更加接近原始的“請求-處理-響應”
- 不會取代WebForm
- 底層跟WebForm都是一樣的。管道上不同的處理而已
- MVC只是表示層的一種新的方式
- MVC是微軟2009對外公布的第一個開源的表示層框架,這是微軟的第一個開源項目
- MVC目的不是取代WebFrom開發,只是web開發的另外一種選擇
為什么要學習ASP.Net MVC?
MVC架構模式誕生30年后,因為其提供的良好的松耦合、易於擴展、高可維護性等優點,重新在開發社區火起來。作為微軟全新的Web網站開發框架,ASP.NET MVC提供了全新的開發模式,完美支持經典的MVC架構模式。為.NET工程師提供了完全不同的開發體驗。
越來越多的公司和開發者開始加入到MVC開發模式中來,使他進入了一個高速發展的狀態,而現在MVC已經變成了ASP.NET下的一種常見的開發模式,它能讓你學習一種完全不同的架構,所以這是我們有理由也有必要掌握的一項開發技能。
ASP.Net MVC學習路線
要有C#、ADO.Net、html、javascript、ASP.Net WebForm的基礎
MVC簡介
MVC 模式兩種理解:一種是表現模式,另外一種是架構模式。這里我主要將其理解為表現模式。
它將應用程序分成三個主要組件即:視圖(View)控制器(Controller)模型(Model)
M:Model 主要是存儲或者是處理數據的組件Model其實是實現業務邏輯層對實體類相應 數據庫操作,如:
CRUD(C:Create/R:Read/U:Update/D:Delete)。它包括數據、驗證規則、數據訪問和業務邏輯等應用程序信息。ViewModel:視圖模型
V:View 是用戶接口層組件。主要是將Model中的數據展示給用戶。ASPX和ASCX文件被用來處理視圖的職責。
C:Controller 處理用戶交互,從model中獲取數據並將數據傳給指定的view
表現模式(UI/Presentation Pattern)三個角色
Model:用於存儲數據的組件
View:根據Model數據進行,內容展示的組件
Controller:接受並處理用戶指令(操作Model),選擇一個View並輸出內容
MVC是 模型(Model),視圖(View)和控制(Controller)的縮寫,其目的實現Web系統的職能分工。其中Model層實現系統中的業務邏輯,通常可以用JavaBean或EJB來實現; View層用於與用戶的交互,通常用JSP來實現; Controller層是Model與View之間溝通的橋梁,它可以分派用戶的請求並選擇恰當的視圖以用於顯示,同時它也可以解釋用戶的輸入並將它們映射為模型層可執行的操作。
MVC請求模型
控制器(Controller)- 負責轉發請求,對請求進行處理。
視圖 (View) – 界面設計人員進行圖形界面設計。
模型 (Model)-業務邏輯、數據、驗證規則、數據訪問等等
模型是一個概念,不要對應到多架構的某個層
View 和 Controller都可以直接請求Model,但是Model不依賴View和controller
Controller可以直接請求View來顯示具體頁面,View不依賴Controller
真正和用戶打交道的是 控制器,視圖/模型 只是被控制器調用並產生html代碼而已。
MVC優點
- 很容易將復雜的應用分成M、V、C三個組件模型。通過model、view和controller有效的簡化了復雜的架構,體現了很好的隔離原則
- 因為沒有使用server-based forms 。所以我們程序員控 制的更加靈活,頁面加干凈
- 可以控制生成自定義的url。對於seo友好的url更是不在話下
- 強類型View實現,更安全、更可靠、更高效。
- 讓web開發可以專注於某一層,有利於開發中的分工,更利於分工配合適用於大型架構開發
- 很多企業已經使用MVC作為項目開發框架,招聘明確要求熟悉MVC開發模式,我現在做的項目架構就是mvc+ef+wcf+
- 松耦合、易於擴展和維護
- 有利於組件的重用
- ASP.NET MVC更好的支持單元測試(Unit Test)
- 在團隊開發模式下表現更出眾
MVC 代碼和頁面徹底分離,WebForm:codebehind技術沒有完全對代碼和前台頁面進行分離
控制器的約定大於配置
- Controller放到controllers文件夾中,並且命名方式以Controller結尾
- 每個Controller都對應View中的一個文件夾,文件夾的名稱跟Controller名相同Controller中的方法名都對應一個View視圖(非必須,但是建議這么做)而且View的名字跟Action的名字相同
- 控制器必須是非靜態類,並且要實現IController接口
- Controller類型可以放到其他項目中。
視圖的相關約定
- 所有的視圖必須放到Views目錄下
- 不同控制器的視圖用文件夾進行分割,每個控制器都對應一個視圖目錄
- 一般視圖名字跟控制器的Action相對應(非必須)
- 多個控制器公共的視圖放到Shared
總體來說,MVC是一個很強大的東西,你對他有多了解,你就能做出來多好的網站!