mvc模型和mvc框架的區別

来源:http://www.cnblogs.com/understander/archive/2016/06/02/5552207.html
-Advertisement-
Play Games

Spring中的新名稱也太多了吧!IOC/DI/MVC/AOP/DAO/ORM... 對於剛剛接觸spring的我來說確實暈了頭!可是一但你完全掌握了一個概念,那麼它就會死心塌地的為你服務了。這可比女人忠誠多了。 在這裡我們來說侃下MVC吧!嗯!MVC設計模型和MVC框架之區別。 一組概念需要先理解 ...


Spring中的新名稱也太多了吧!IOC/DI/MVC/AOP/DAO/ORM...

對於剛剛接觸spring的我來說確實暈了頭!可是一但你完全掌握了一個概念,那麼它就會死心塌地的為你服務了。這可比女人忠誠多了。

在這裡我們來說侃下MVC吧!嗯!MVC設計模型和MVC框架之區別。

一組概念需要先理解,因為後面需要用:

  架構:簡單的說架構就是一個藍圖,是一種設計方案,將客戶的不同需求抽象成為抽象組件,並且能夠描述這些抽象組件之間的通信和調用。

  框架:軟體框架是項目軟體開發過程中提取特定領域軟體的共性部分形成的體繫結構,不同領域的軟體項目有著不同的框架類型。框架不是現成可用的應用系     統。而是一個半成品,提供了諸多服務,開發人員進行二次開發,實現具體功能的應用系統。

  設計模式:是一套被反覆使用、多數人知曉的、經過分類編目的、代碼設計經驗的總結,它強調的是一個設計問題的解決方法。

 

首先來說說MVC設計模型

1.定義:MVC 設計模型一種使用 Model View Controller( 模型-視圖-控制器)設計創建 Web 應用程式的模式。

  由上主謂賓可以很容易看出,mvc模型是一種用來寫web應用程式的樣式,也就是說只能寫web不能寫其它?

2.既然使用了 Model View Controller( 模型-視圖-控制器),那麼就很有必要來介紹一下該(模型-視圖-控制器)到底是怎樣的一個東西?

 

Model(模型):是應用程式中用於處理應用程式數據邏輯的部分。

    通常模型對象負責在資料庫中存取數據

 

View(視圖):是應用程式中處理數據顯示的部分。
    通常視圖是依據模型數據創建的。

 

Controller(控制器):是應用程式中處理用戶交互的部分。
    通常控制器負責從視圖讀取數據,控制用戶輸入,並向模型發送數據  

再來說說MVC框架

1.MVC框架,它強制性的使應用程式輸入、處理和輸出分開。使用MVC應用程式被分成三個核心部件:模型、視圖、控制器。它們各自處理自己的任務。   由上可知,要使用MVC框架,則一定要遵守該框架的規則,它有它的強制性所在。聰明的讀者一看就知道,它所使用的三個核心部件其實都是來自MVC模型。   只不過在框架中讓他們彼此更加獨立了去處理各自的任務而已。 2.最典型的MVC就是JSP + servlet + javabean的模式。

3. 視圖:視圖是用戶看到並與之交互的界面。視圖主要有元素HTMLAdobe FlashXHTMLXML/XSL,WML等一些標識語言和Web services。

模型:模型表示企業數據和業務規則

控制器:控制器接受用戶的輸入並調用模型和視圖去完成用戶的需求,所以當單擊Web頁面中的超鏈接和發送HTML表單時,控制器本身不輸出任何東西和做任何處理。它只是接收請求並決定調用哪個模型構件去處理請求,然後再確定用哪個視圖來顯示返回的數據。    

設計模型和框架的區別:(註意這裡首先討論的是總概念!)

先來看看網上給的區別,來自百度百科的:

在軟體生產中有三種級別的重用:內部重用(即在同一應用中能公共使用的抽象塊),代碼重用(即將通用模塊組合成庫或工具集,以便在多個應用和領域都能使用),應用框架的重用(即為專用領域提供通用的或現成的基礎結構,以獲得最高級別的重用性)。

框架通常是代碼重用,而設計模式是設計重用(?設計重用怎麼來的?上下都沒它的定義,百科垃圾就在這裡。),架構則介於兩者之間。

設計模式是對在某種環境中反覆出現的問題以及解決該問題的方案的描述,它比框架更抽象;框架可以用代碼表示,也能直接執行或復用,而對模式而言只有實例才能用代碼表示;設計模式是比框架更小的元素,一個框架中往往含有一個或多個設計模式,框架總是針對某一特定應用領域,但同一模式卻可適用於各種應用。可以 說,框架是軟體,而設計模式是軟體的知識。

百科的回答往往缺乏嚴謹,我在MBR lib網站中看到它們將軟體重用分類為:產品重用/知識重用/環境重用

框架是代碼重用,所以我們在使用框架的時候總是引入很多包。

框架是軟體,而設計模式是軟體的“知識”。所以模式是框架的基礎。

 

再回到MVC這個小概念上來:

根據框架和設計模式的大概念,我們應該可以知道MVC框架和MVC設計模式區別的一二了。

以我的理解,覺得MVC設計模式更像設計師手中的圖紙(圖紙上的東西往往更抽象),而MVC框架則更像是工程師以設計師的圖紙而建造的產品!

最終的產品也許比設計師原來的圖紙有所出入,有些功能有所增強,有些又會適當的減弱,以此來更加適應大眾的需求和體驗!但是在整體上和本質上都是遵循設計師的構造的。

MVC設計模式就像建設房子的基礎(地基設計+結構設計+強弱電設計+消防設計+etc),而MVC框架則可在此基礎上根據需求構建的漂亮的成品房。

 

常見的框架和設計模型(註意這是大概念)

 

設計模式有哪些?

 MVC、MTV、MVP、CBD、ORM等等;

 

框架有哪些?

 C++語言的QT、MFC、gtk

Java語言的SSHSSI php語言的 smarty(MVC模式) python語言的django(MTV模式)等等;

 

引用: 框架+架構+設計模式;

 

 

   

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 同Winsock1相比,Winsock2最明顯的就是支持了Raw Socket套接字類型,使用Raw Socket,可把網卡設置成混雜模式,在這種模式下,我們可以收到網路上的IP包,當然包括目的不是本機的IP包,通過原始套接字,我們也可以更加自如地控制Windows下的多種協議,而且能夠對網路底層的 ...
  • 在上一篇文章中我們主要分析了ASP.NET Core預設依賴註入容器的存儲和解析,這一篇文章主要補充一下上一篇文章忽略的一些細節:有關服務回收的問題,即服務的生命周期問題。有關源碼可以去GitHub上找到。 這次的主角就是ServiceProvider一人,所有有關生命周期的源碼幾乎都集中在Serv ...
  • 相信很多人用過MessageBox.show(),是不是覺得這個消息框有點醜呢,反正我是覺得有點醜的,所以我自己重寫了一個。先不說,上兩幅圖對比先: 當然,也不是很好看,不過比原有的好多了。 不多說了,先上xmal代碼: 1 <Window x:Class="MESBox.MEGBox" 2 xml ...
  • 在Web Form 情況下,每一個 ASPX頁面既是一個文件,又是一個隊請求自包含的響應。而在 MVC 情況下,請求是由控制器類中的動作方法處理的,而且與硬碟上的文件沒有一對一的相互關係。 ASP.NET 平臺為了處理 MVC 的 URL,採用了路由系統,它主要有兩個功能: 考查一個輸入 URL(I ...
  • 從3月開始研究Openfire,其實就是要做一套IM系統,也正是這個原因才瞭解到Openfire。之前還真沒想過有這麼多的開源產品可以做IM,而且也沒想到XMPP這個協議竟然如何強大。看來還是標準為先,好的標準可以推動產業發展啊。 Openfire的搭建與簡單的demo之前寫過篇《技術筆記:XMPP ...
  • for 迴圈用於您預先知道腳本需要運行的次數的情況。 語法 參數: 初始值:主要是初始化一個變數值,用於設置一個計數器(但可以是任何在迴圈的開始被執行一次的代碼)。 條件:迴圈執行的限制條件。如果為 TRUE,則迴圈繼續。如果為 FALSE,則迴圈結束。 增量:主要用於遞增計數器(但可以是任何在迴圈 ...
  • Modal也即是模態窗,通俗的說就是彈窗。是一款bootstrap的js插件,使用效果也是非常好。 為什麼要使用modal就不必多說了,一個網站,在開發過程中你說你沒用過js彈窗我都不信!好的彈窗不僅僅給人以美感,也會讓我們開發效率提高,甚至心情也會舒暢! 我們看看在yii2中如何使用modal。 ...
  • SSH項目出現了 錯誤,仔細檢查後發現,是兩個不同的屬性映射了表中的同一個欄位造成的錯誤。 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...