[.net 面向對象程序設計深入](4)MVC 6 —— 談談MVC的版本變遷及新版本6.0發展方向...

[.net 面向對象程序設計深入](4MVC 6 ——談談MVC的版本變遷及新版本6.0發展方向

?

?1.關于MVC

在本篇中不再詳細介紹MVC的基礎概念,這些東西百度要比我寫的全面多了,MVC從1.0到5.0的時間也不短了,很多人只是按照范例去使用MVC的一些基礎功能,并沒有更加深入的了解MVC。在這一系列中,我主要介紹MVC的一些原理和使用技巧,以及MVC的發展方向。

先說說MVC,首先他是一種設計模式,如果你百度為什么GOF23種設計模式中沒有MVC,答案很有意思,如下:

“在他們看來,它其實是其它三個經典的設計模式的演變:觀察者模式(Observer)(Pub/Sub), 策略模式(Strategy)和組合模式(Composite)。根據MVC在框架中的實現不同可能還會用到工廠模式(Factory)和裝飾器(Decorator)模式。”

.NET MVC 是一種使用 MVC(Model View Controller 模型-視圖-控制器)設計創建 Web 應用程序的模式。
  • Model(模型)是應用程序中用于處理應用程序數據邏輯的部分。通常模型對象負責在數據庫中存取數據。
  • View(視圖)是應用程序中處理數據顯示的部分。
  • Controller(控制器)是應用程序中處理用戶交互的部分。

2.MVC發展史

(1)MVC 1.0

發布時間:(2009年3月13日) 2007年.NET 1.0開始研發,2009年3月13日.NET MVC 1.0正式發布

簡介:隨著.NET WebFrom的使用人數較多,1.0版本發布后很大一部分開發者仍然使用WebFrom這種拖控件的方式開發Web應用程序,MVC 1.0使用人數并不是很多,只能算是一個嬰兒。

(2)MVC 2.0

發布時間:(2010年3月)

簡介:核心框架還是延續了1.0,但在Visual Studio工具上進行了改善、使用Html.RenderAction支持渲染網頁或網站的某一部分等。這段時間很多開發者都在使用三層架構開發了對MVC的表現、邏輯分離的思想也進一步認識,很多開發者已經慢慢從WebForm向MVC轉化。

(3)MVC 3.0

發布時間:(2011年1月)

簡介:最大的變化就是,支持Razor視圖引擎、有豐富的JS支持(比如Jquery)等,靈活性更高了,大量開發者基本拋棄了WebForm轉向MVC。

(4)MVC 4.0

發布時間:(2012年)(隨VS 2012一起發布)

簡介:MVC 4.0經過幾個版本變遷,已經變得非常成熟。增加了手機、Web Api等模板,增加腳本壓縮合并,支持HTML5,增加JS庫,對EF的支持等。幾乎基于.NET Web項目都進入MVC時代。并進入完全開源時代(MVC之前開放源碼,但不支持修改和貢獻,4.0是真正意義上的開源)

(5)MVC 5.0?

發布日期:(2013年)

簡介:相對于MVC 4.0 MVC進一步優化,WebApi 2.0、增強路由(Attribute Routing)、進一步增強對JS庫的支持,包括新增流行的bootstrap等,.NET Web項目上MVC使用者持續增長。

(6)MVC 6.0?

發布日期:(2016年?月)(正式版發布日期待定)

簡介:

a.跨平臺部署開發:這將是一個跨時代的作品,包括.NET 5.0將命名為 Core 1.0,微軟為了徹底解耦,拆分了所有功能,把.NET Framework幾乎重寫了一遍, 兼容老版本同時,支持跨平臺部署。

在設計中很多地方借鑒了nodejs。而且將ASP.NET 下子項目開源,(開源地址:https://github.com/aspnet/)。并提供了跨平臺開發工具Visual Studio Code,可運行于 Mac OS X、Windows和 Linux 之上。

b.框架整合:MVC 6整合了MVC、WebAPI、WebPage,徹底移除了WebForm。在View上提供Tag Helpers和View Components,真正意義上的前端DOM和JS分離,終于可以看到正常的HTML頁面了。

c.進一步增強前端:內置了Nodejs、NPM、Grunt、Bower技術,支持AngularJS。

d.支持依賴注入技術,提供原生的DI框架,同時支持第三方容器。

e.支持xUnit.net,拋棄Visual Studio Unit Testing框架。

f.IDE依然強大:除了延續VS2013的強大功能之外,還支持Nodejs、Python開發,支持Android和iOS開發等。

3.MVC 優缺點

優點:

a.分層設計,職責分離,易維護

b.強大的路由,URL路由模塊是負責映射從瀏覽器請求到特定的控制器動作,提供了豐富重寫。

c.出色的單元測試支持。

d.團隊開發中的優秀表現。

e.開源(我想這個絕對是優點)

缺點:

a.框架的普遍缺點,開發過程中需要遵循模型、視圖、控制器分離等規則,增加了結構復雜性。同時結構的復雜性,降低了運行效率。

b.視圖模型頻繁訪問,一定程度上也損害了操作性能。

4.總結:

隨著MVC的版本更迭,其性能也一直在提升,特別是進入完全開源之后,相信發展會越來越好,畢竟有全世界的大牛添磚加瓦。

==============================================================================================

返回目錄

<如果對你有幫助,記得點一下推薦哦,如有有不明白或錯誤之處,請多交流>

<對本系列文章閱讀有困難的朋友,請先看?《.net 面向對象編程基礎》?和?《.net 面向對象程序設計進階》?>

<轉載聲明:技術需要共享精神,歡迎轉載本博客中的文章,但請注明版權及URL>

.NET 技術交流群:467189533 .NET 程序設計

==============================================================================================

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/285578.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/285578.shtml
英文地址,請注明出處:http://en.pswp.cn/news/285578.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C語言試題101之輸入三個整數 x,y,z,請把這三個數由小到大輸出

?作者簡介:大家好我是碼莎拉蒂,CSDN博客專家?????? ??個人主頁:個人主頁 ??系列專欄:C語言試題200例 ??推薦一款模擬面試、刷題神器?? 點擊跳轉進入網站 1、題目 題目:輸入三個整數 x,y,z,請把這三個數由小到大輸出 分析:想辦法把最小的數放到 x 上,先…

[轉]史上最全的后端技術大全,你都了解哪些技術呢?

導語&#xff1a;工欲善其事&#xff0c;必先利其器&#xff1b;士欲宣其義&#xff0c;必先讀其書。后臺開發作為互聯網技術領域的掌上明珠&#xff0c;一直都是開發者們的追逐的高峰。本文將從后臺開發所涉及到的技術術語出發&#xff0c;基于系統開發、架構設計、網絡通信等…

【專升本計算機】2021年甘肅省專升本計算機全真模擬試題(二)

【專升本計算機】2021年甘肅省專升本計算機全真模擬試題(一) 【專升本計算機】2021年甘肅省專升本計算機全真模擬試題(二) 【專升本計算機】2021年甘肅省專升本計算機全真模擬試題(三) 【專升本計算機】2021年甘肅省專升本計算機全真模擬試題(四) 【專升本計算機】2021…

DB2錯誤碼信息

00 完全成功完成 表 3 01 警告 表 4 02 無數據 表 5 07 動態 SQL 錯誤 表 6 08 連接異常 表 7 09 觸發操作異常 表 8 0A 功能部件不受支持 表 9 0D 目標類型規范無效 表 10 0F 無效標記 表 11 0K RESIGNAL 語句無效 表 12 0N SQL/XML 映射錯誤 表 13 20 找不到 CASE…

WPF 開源控件庫Extended WPF Toolkit介紹(經典)

01—Extended WPF Toolkit介紹Extended WPF Toolkit 可以說是WPF Toolkit 的一個補充&#xff0c;Extended WPF Toolkit包含了標準的WPF Toolkit里沒有的Windows Presentation Foundation&#xff08;WPF&#xff09;控件、工具和組件。Extended WPF Toolkit是創建下一代Window…

vi和vim 的常用操作

&#xff1a;q! 強制退出 到文件末尾: ESC shift G : 到文件頭: G G&#xff1a; 整塊模式 快捷鍵 【不使用鼠標&#xff0c;來選擇塊】 v 字符選擇&#xff0c;會將光標經過的地方反白選擇&#xff01;V(大寫) 行選擇&#xff0c;會將光標經過…

C語言試題102之用*號輸出字母 C 的圖案

?作者簡介:大家好我是碼莎拉蒂,CSDN博客專家?????? ??個人主頁:個人主頁 ??系列專欄:C語言試題200例 ??推薦一款模擬面試、刷題神器?? 點擊跳轉進入網站 1、題目 題目:用號輸出字母 C 的圖案 分析:可先用’號在紙上寫出字母 C,再分行輸出。 2 、溫馨提…

【專升本計算機】2021年甘肅省專升本計算機全真模擬試題(三)

【專升本計算機】2021年甘肅省專升本計算機全真模擬試題(一) 【專升本計算機】2021年甘肅省專升本計算機全真模擬試題(二) 【專升本計算機】2021年甘肅省專升本計算機全真模擬試題(三) 【專升本計算機】2021年甘肅省專升本計算機全真模擬試題(四) 【專升本計算機】2021…

WPF 用代碼實現WrapPanel右側自動對齊(解決多余空白問題)

未處理前效果&#xff1a; 處理后效果&#xff1a; <Border Background"{StaticResource BorderBg}" BorderThickness"2" BorderBrush"{StaticResource BorderBrush}" CornerRadius"5" Padding"5" x:Name"SvK…

.NET 中的引用程序集

.NET 中的引用程序集Intro在 .NET 里有一種特殊的程序集叫做 ReferenceAssembly(引用程序集)&#xff0c;引用程序集&#xff08;Reference Assemblies&#xff09; 是一種特殊類型的程序集&#xff0c;它只包含表示庫的公共 API 所需的最少元數據量。它們包括在生成工具中引用…

【專升本計算機】2021年甘肅省專升本計算機全真模擬試題(四)

【專升本計算機】2021年甘肅省專升本計算機全真模擬試題(一) 【專升本計算機】2021年甘肅省專升本計算機全真模擬試題(二) 【專升本計算機】2021年甘肅省專升本計算機全真模擬試題(三) 【專升本計算機】2021年甘肅省專升本計算機全真模擬試題(四) 【專升本計算機】2021…

14.6.3.1 The InnoDB Buffer Pool

14.6.3.1 The InnoDB Buffer PoolInnoDB 保持一個存儲區域被稱為buffer pool 用于cache數據和索引在內存里,知道InnoDB buffer pool 如何工作,利用它來保持頻繁訪問的數據在內存里,是MYSQL 調優的一個重要方面。你可以配置InnoDB buffer pool的各個方面來改善性能:理想情況下,你…

C語言試題105之要求輸出國際象棋棋盤

?作者簡介:大家好我是碼莎拉蒂,CSDN博客專家?????? ??個人主頁:個人主頁 ??系列專欄:C語言試題200例 ??推薦一款模擬面試、刷題神器?? 點擊跳轉進入網站 1、題目 題目:要求輸出國際象棋棋盤。 分析:用 i 控制行,j 來控制列,根據 i+j 的和的變化來控制…

一個js的動畫,以前以為只有flash可以實現

11年剛干這行的時候&#xff0c;看到這種什么百葉窗的動畫&#xff0c;以為都是flash實現的&#xff0c;最近突然靈光一閃&#xff0c;想到了用js實現&#xff08;雖然我不是做前端的&#xff0c;本人做.net&#xff09;。代碼雖然實現了&#xff0c;但是比較亂&#xff0c;先上…

[轉]docker入門(利用docker部署web應用)

前言:本課程是在慕課網上學習 第一個docker化的java應用 課程時所做的筆記,供本人復習之用 目錄 第一章 什么是docker 1.1 docker的發展史 1.2 docker國內應用史 1.3 什么是Docker 第二章 了解docker 2.1 docker思想 2.1.1 集裝箱 2.1.2 標準化 2.1.3 隔離 2.2 dock…

【專升本計算機】2021年甘肅省專升本計算機全真模擬試題(五)

【專升本計算機】2021年甘肅省專升本計算機全真模擬試題(一) 【專升本計算機】2021年甘肅省專升本計算機全真模擬試題(二) 【專升本計算機】2021年甘肅省專升本計算機全真模擬試題(三) 【專升本計算機】2021年甘肅省專升本計算機全真模擬試題(四) 【專升本計算機】2021…

如何讓 EF Core 6 支持 DateOnly 類型

前言上次&#xff0c;我們發現《DateOnly 和 TimeOnly 類型居然不能序列化》。但問題還不僅僅如此。問題重現假設有下列實體類&#xff1a;public class User {public int Id { get; set; }public string Name { get; set; } public DateOnly Birthday { get; set; } }由…

yii2筆記: 單元測試

使用composer方式安裝yii2-app-basic (https://github.com/yiisoft/yii2-app-basic/blob/master/README.md) 裝好后既可以使用 建一個Model文件EntryForm.php在models目錄下 <?phpnamespace app\models;use Yii; use yii\base\Model;class EntryForm extends Model {public…

[轉]Python 列表(List) 的三種遍歷(序號和值)方法

if __name__ __main__:list [html, js, css, python]for i in list:print(list.index(i), i)# 方法1print( 遍歷列表方法1&#xff1a;)for i in list:print ("序號&#xff1a;%s 值&#xff1a;%s" % (list.index(i) 1, i))print (\n遍歷列表方法2&#xff1a;)…

C語言試題103之輸出特殊圖案,請在 c 環境中運行,看一看

?作者簡介:大家好我是碼莎拉蒂,CSDN博客專家?????? ??個人主頁:個人主頁 ??系列專欄:C語言試題200例 ??推薦一款模擬面試、刷題神器?? 點擊跳轉進入網站 1、題目 題目:輸出特殊圖案,請在 c 環境中運行,看一看 2 、溫馨提示 想獲取更多C語言題目請猛搓這…