目前,ASP.NET中兩種主流的開發方式是:ASP.NET Webform和ASP.NET MVC。從下圖能夠看到ASP.NET WebForms和ASP.NET MVC是並行的,也就是說MVC不會取代WebForms(至少目前是這樣)而是多了一個選擇,Webform在短時間以內不會消亡,儘管存在許多缺點,但過去許多老項目依舊是使用的WebForms進行開發的,雖然許多公司已經在積極的將WebForms項目遷移或升級到MVC項目,但WebFoms項目依然會存在很長一段時間。javascript
• 服務器端控件html
• 通常處理程序+Html靜態頁+Ajaxjava
• 通常處理程序+Html模板程序員
DomainModel – 領域模型: 不只僅是一個實體類,而是整個業務才處理流程的一個規則.web
WebForm 優勢數據庫
一、支持事件模型開發。得益於豐富的服務器端組件,webfrom開發能夠迅速的搭建web應用安全
二、使用方便,入門容易服務器
三、控件豐富架構
WebFrom 缺點mvc
一、封裝太強,不少底層東西讓咱們初學者不是很明白
二、入門容易,提高很難
三、複雜的生命週期模型學習起來並不容易
四、控制不靈活
五、ViewState處理
• 2009年第一個開源項目版本發佈
• 更加簡潔,更加接近原始的「請求-處理-響應」
• 更加開發、更多的新的特色、社區活躍
• 不會取代WebForm
• 底層跟WebForm都是同樣的。管道上不一樣的處理而已
• MVC只是表示層的一種新的方式
MVC是微軟2009對外公佈的第一個開源的表示層框架,這是微軟的第一個開源項目
MVC目的不是取代WebFrom開發,只是web開發的另一種選擇
MVC架構模式誕生30年後,由於其提供的良好的鬆耦合、易於擴展、高可維護性等優勢,從新在開發社區火起來。做爲微軟全新的Web網站開發框架,ASP.NET MVC提供了全新的開發模式,完美支持經典的MVC架構模式。爲.NET工程師提供了徹底不一樣的開發體驗。
愈來愈多的公司和開發者開始加入到MVC開發模式中來,使他進入了一個高速發展的狀態,而如今MVC已經變成了ASP.NET下的一種常見的開發模式,它能讓你學習一種徹底不一樣的架構,因此這是咱們有理由也有必要掌握的一項開發技能。
要有C#、ADO.Net、html、javascript、ASP.Net WebForm的基礎
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之間溝通的橋樑,它能夠分派用戶的請求並選擇恰當的視圖以用於顯示,同時它也能夠解釋用戶的輸入並將它們映射爲模型層可執行的操做。
控制器(Controller)- 負責轉發請求,對請求進行處理。
視圖 (View) - 界面設計人員進行圖形界面設計。
模型 (Model)-業務邏輯、數據、驗證規則、數據訪問等等
模型是一個概念,不要對應到多架構的某個層
View 和 Controller均可以直接請求Model,可是Model不依賴View和controller
Controller能夠直接請求View來顯示具體頁面,View不依賴Controller
真正和用戶打交道的是 控制器,視圖/模型 只是被控制器調用併產生html代碼而已。
一、很容易將複雜的應用分紅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,就不再想拖控件了...