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
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...