MVC簡介與三層架構


感謝博客園團隊日夜辛苦的付出

感謝閱讀我文章的每位讀者 

1.MVC簡介

  MVC最早於1978年提出,是軟件工程中的一種軟件架構模式,這時距離微軟在1985年推出Window1.0還有7年之久,當時的MVC即所有的輸入、輸出、邏輯控制,這些都要由軟件開發者完全實現。

  MVC模式可以有兩種理解:一種是表現模式,另外一種是架構模式。這里先將其理解為表現模式。

  MVC是模型(Model),視圖(View)和控制(Controller)的縮寫,其目的是實現Web系統的職能分工。其中,Model層實現系統中的業務邏輯(可以先理解為Model層存放的數據是和數據庫有關的,后面會講);View層用於與用戶交互(可以先理解為我們所說的網頁,后面會講),通常用Razor和APSX來實現;Controller層是Model與View之前溝通的橋梁,可以分派用戶的請求並選擇恰當的視圖來用於顯示,同時還可以解釋用戶的輸入並將它們映射為模型層可執行的操作(可以這樣理解:當你View層的網頁和用戶交互的時候需要對數據進行增刪改查、需要響應用戶的時候View層的網頁把這些需要處理的信息發送到Controller層來進行處理,而處理方式需要你在Controller層里面寫處理類了,后面會講),如圖1-1所示。


圖1-1

  (1)控制器(Controller)

  接收用戶輸入,並完成模型、視圖的調用。Controller 處理用戶交互,從Model中獲取數據並將數據傳給指定的View。

  (2)視圖(View)

  View是用戶接口層組件,主要是將Model中的數據暫時給用戶。cshtml、ASPX和ASCX文件提供處理視圖的職責。

  (3)模型(Model)

  Model主要是存儲或者是處理數據的組件,實現業務邏輯層對實體類相應數據庫的操作(增刪改查),包括數據、驗證規則、數據訪問和業務邏輯等應用程序信息。Model具有兩方面的含義:DomainModel和ViewModel。

  •領域模型 DomainModel:不僅僅是一個實體類,而是整個業務處理流程的一個規則,是實現業務邏輯層對實體類的相應操作,包括邏輯操作與數據庫操作,如驗證規則、數據訪問和業務邏輯等應用程序信息。

  •視圖模型 ViewModel:是與顯示頁面強關聯的模型對象,用於實現頁面強類型,如做了連接查詢得到的結果要顯示到前台,就沒有相應的對象存在,這時就可以新建一個類來包括結果集中的行。

  此外需要注意的是,Model是獨立的組件,並不知道View的存在,也不知道Controller的存在

  過去MVC模式並不適合小型甚至中等規模的應用程序,因為這樣會帶來額外的工作量,增加應用的復雜性。現在多數軟件設計框架(如ASP.NET MVC)都能直接快速提供MVC骨架(例如:visual studio),供中小型應用程序開發,此問題不再存在。在VS下點擊文件 =>新建=>項目=>選擇ASP.NET Web應用程序(.NET Framework)=>選擇MVC,請看圖1-2。

 

圖1-2

  這個時候visual studio 會自動給我們生成MVC的基架,如圖1-3所示。

圖1-3

  對於存在大量用戶界面並且邏輯復雜的大型應用程序,MVC將會使軟件在健壯性、代碼重用和結構方面上一個新的台階。盡管在最初構建MVC框架時會花費一定的工作量,但是從長遠的角度來看它會大大提高后期軟件開發的效率。

2.三層架構

  當把MVC當成一種架構模式來理解,就是所謂的三層架構。如圖2-1所示。

圖2-1

  三層模式是軟件工程中的程序設計模式,是MVC設計思想的一種實現。隨着技術的發展,現在基本上已經將MVC模式等同於三層模式,包括數據訪問層、業務邏輯層、表示層。再細一點可以分為UI層、業務邏輯層、數據訪問層、模型層。如果要嚴格區分,那么UI層是指View與Controller,業務邏輯層、數據訪問層、模型層都被包括在Model中。三層之前有着非常強的依賴關系:表示層 <- 業務邏輯層 <- 數據訪問層。而且它們之間的數據傳遞是雙向的,並且通常借助實體類傳遞數據。

1.各層的作用

  (1)數據訪問層:主要是對原始數據(數據庫或者文本文件等存放數據的形式)的操作層,而不是指原始數據,也就是說,是對數據的操作,而不是數據庫,具體為業務邏輯層或表示層提供數據訪問。

  (2)業務邏輯層:主要是針對具體問題的操作,也可以理解成對數據層的操作,對數據業務邏輯處理,如果說數據層是積木,那么邏輯層就是對這些積木的搭建。

  (3)表示層:主要是表示Web方式,也可以表示成WinForms方式。Web方式也可以表示成aspx,如果邏輯層相當強大和完善,那么無論表示層如何定義和更改,邏輯層都能完善地提供服務。

2.具體的區分方式

  (1)數據訪問層:主要看數據層里面有沒有包含邏輯處理,實際上它的各個函數主要完成對數據文件的操作,而不必管其他操作。

  (2)業務邏輯層:主要負責對數據層的操作,也就是說把一些數據層的操作進行組合。

  (3)表示層:主要接收用戶的請求以及數據的返回,為客戶端提供應用程序的訪問。

  使用三層架構的好處是:項目結構更清楚,分工更明確,有利於后期的維護和升級。雖然它會帶來一定的性能損失(因為當子程序模塊未執行結束時主程序模塊只能處於等待狀態,說明將應用程序划分層次會帶來執行速度上的一些損失),但是從團隊開發效率角度上來講卻可以感受到大不相同的效果。

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM