成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

為何要從Web form過渡到MVC中

開發 后端
在未來幾年中,Web form的使用會逐漸減少,而取而代之的就是MVC。可能你不會同意我的觀點,那么我就試著闡述一下我的觀點,如果你還是不能接受,那么請你反駁我。

 學習一個新語言或者是新架構是需要時間的,我們需要摒棄原來學習的很深入并且用的很熟練的架構來迎合新架構嘛?是的,如果讓我說,我的回答是否,但是我需要看清這個新架構究竟和原來的架構有哪些改進,是否真的需要我們投入大量的時間去學習?Mvc 是一種架構模式,它帶來了全新的和asp時代同樣的開發體驗(注:我不是說這是倒退)。

下面我就來闡述一下對于Web form,MVC是否值得我們去學習。

1.View State

相信大家對于這個視圖狀態都很熟悉,它是用來保存我們在頁面中輸入的數據狀態,以便我們可以在刷新頁面或者回發時使頁面回到我們原來的輸入數據時的狀態,這個效果很好的實現了我們的需求。但是同時,我們要問自己一下,是否我們就真的需要這些,需要頁面刷新時顯示原來的數據,這是否是有意義的?

還有就是View State在web form時代大行其道,在每個頁面都會存在,甚至在復雜的頁面中他的大小甚至很大,在每次 頁面回發時都會傳遞View State狀態,我們不說服務器解析這些View State需要時間,就是每次頁面傳輸都要傳遞這些View State就會使帶寬增加,顯示網頁的時間變長。這在2.0時代,最起碼是我所不允許的。

2.Page Life Cycle  頁面生命周期

在Web form中存在著復雜的生命周期,我甚至清楚的記得在我學習Web form的時候,都是拿著筆在紙上畫著這些周期圖,在每個周期頁面會執行什么動作。這就像我在學習c#連接數據庫的時候寫sql helper,讓我很頭疼。例如在Page_render()中不應該訪問具體的控件,因為這時控件還沒有生成,如果要訪問請在Page_load()中,我們每天都要和Page_Load()事件打交道,至少我很經常。IsPostBack是經常可以見到的方法。

如果你覺得你可以完全掌握這些生命周期,那么至少你是一名大牛。如果你可以很隨意的就控制頁面的生命周期,并且控制控件的生成,那么我會很敬仰你。

3.False sense of concerns  失敗的關注點分離

現在我們做軟件,講究的都是可維護性、可重用性以及關注點分離。何為關注點分離,我的理解就是每層結構只負責他自己的事情,不屬于他的不能控制,也不要試圖控制。例如,我們在code behind中寫了訪問數據庫的代碼,調用了sql helper中的類,但是現在是數據庫服務器的服務沒有開啟,那么這次調用肯定會拋出異常。難道讓我們在code behind中處理這些異常,那么我們程序員會累死的,異常應該是sql helper中處理,而不是code behind。這應該就是所謂的關注點分離。還有就是關注點分離應該是每個類只負責他自己的工作,而不要在一個類Sql Helper中有著返回html的語句出現。

4.Limited control  over HTML  對于html的控制極差

我在頁面生命周期中說了,如果你可以隨意的更改生成的控件,那么我會崇拜你。如果說對于一個服務器端控件可以控制生成html的樣式,或者生成html的ID、name,以便可以讓js使用,這是很困難的。當然在.net 4.0中添加了一個屬性,那就是ClientIDMode,如果把這個屬性值設置為static,就可以生成和定義的ID一樣的html的ID值。默認情況下這是不被啟用的,會生成復雜的、嵌套的ID值。這對于我們在客戶端操作html標簽是很困難的。

當然了,這不是你可以轉向MVC的原因,但是是原因之一,雖然這個原因可能會有點牽強。

5.Leaky abstraction 脆弱的抽象

Web form試圖隱藏所有的http狀態(http的無記憶性或者是無狀態性)。我們在拖入一個服務器控件的時候從來需要考慮他會在什么時候顯示?因為服務器控件已經實現了這些,例如,IsPostBack 方法為什么可以用來判斷頁面是否回發,它的實現原理是什么?我們不會關心,我們只關心這個方法能夠完成什么,這就夠了?真的夠了嗎?

我認為沒有,只是會使用,我想任何一個只要認識英文的人都可以完成,但是會使用就夠了嗎?性能問題達到了嗎?會出現哪些問題?我們都不知道,我們只是用了一個黑盒子,但是里面是什么東西我們不知道?如果是陷阱我們也會毫不猶豫的跳進去?對嗎?

偶爾的熟悉一下源碼,對于提升我們自己的開發水平有幫助之外,我們也可以發現很多我們可以控制的問題,避免他們發生?所以,親愛的朋友們,不要僅僅限于使用,有時候大牛和小牛的根本區別就是小牛不知道為什么要這樣?而大牛指導如何更好的這樣。

6.Low testability   極差的可測試性

我在以前開發web form的時候,采用服務器控件可以大大的提高開發速度。但是,我從來不知道如何去測試我開發的代碼是否運行正常。唯一的方式就是自己一個人沒事的時候點擊、點擊、再點擊。還有就是設置斷點,按住F11,不斷的點擊鍵盤,直到看到這些代碼都想吐的地步?

但是在MVC中,這些問題都不再存在,因為我們可以使用Nunit等可以進行單元測試的工具,我們可以把測試精確到每一行代碼,我們可以實現測試的自動化,避免了手動點擊浪費的大量時間。這是一件好事,不是嗎?

還有我個人認為最重要的一個原因就是,你如果有web form的開發基礎,那么學習MVC可以說就是很簡單的事情,因為MVC中沒有了服務器控件,有的只是html標簽以及一些可以生成html標簽的helper類。我個人感覺做美工的如果想轉開發,這倒是不錯的時機,因為html對于美工來說筆程序員更熟悉。

在MVC中沒有View State,可以對html進行完全的控制,可以不再使用原來的Url rewriter,而是采用MVC中自帶的Route(Url路由系統),良好的關注點分離框架(Model、View、Controller),每一層都是負責自己的任務。

在MVC中不是每一個地址都會對一個一個具體的頁面,你可以定義多個Action,返回同一個頁面。在MVC中因為有了強大的路由系統,所以我們不會再見到www.cnblogs.com/default.aspx,這樣的地址了,而是取而代之的www.cnblogs.com/home/index ,這是一個巨大的突破。可以讓特定的頁面具有具體的含義。這是URl友好,你認為呢?

我并不是說MVC會取代Web form,而是他們之間的對比性,當然如果可以避免一些問題的存在,那么讓MVC和Web from共存在同一個項目中,或許是不一個不錯的選擇。但是前提還是需要你學習MVC,我個人認為在未來幾年中,Web form和MVC會共存。

好了,說了這么多,我只是有一句話,就是如果你想在未來的Web開發中不落后,那么就在業余時間學習一下MVC吧。

如果你想你的網站具有更好的可維護性,那么采用MVC是你的明智之舉。

以上只是我的個人所言,請各位參考!!

原文鏈接:http://www.cnblogs.com/jiagoushi/archive/2012/12/09/2810552.html

【編輯推薦】

  1. 全面展示VB.NET服務器端
  2. 淺談VB.NET數組聲明和初始化
  3. 描述VB.NET fnSimpleObjectToXML
  4. 討論VB.NET使用Sorted Lists
  5. 講解VB.NET COMBOBOX控件

責任編輯:彭凡 來源: 博客園
相關推薦

2012-12-10 09:54:26

Web formMVCWeb

2020-06-12 10:10:26

云計算IT技術

2020-09-15 16:27:31

邊緣計算

2020-11-20 10:29:37

云計算邊緣計算物聯網

2011-03-30 09:58:54

IPv6過度IPv4

2012-06-08 09:25:57

私有云公有云

2019-10-29 10:52:40

nftables防火墻開源

2016-04-14 09:12:20

惠普

2021-05-31 19:04:50

低代碼平臺低代碼開發

2023-06-01 11:35:42

Ubuntu操作系統

2020-12-17 13:12:06

數據中心DCIMDMAAS

2018-04-04 13:42:54

2021-01-07 10:15:24

數據中心邊緣數據中心網絡

2013-12-08 20:13:45

可穿戴可穿戴設備

2020-11-19 10:22:39

云計算

2012-08-22 09:57:44

IPv6IPv6 過渡

2021-01-15 10:28:19

數據中心邊緣數據中心

2013-11-20 09:22:44

IPv4過渡IPv6

2021-10-11 08:37:14

鴻蒙HarmonyOS應用

2019-06-17 13:26:48

PythonWeb編程語言
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久亚洲一区二区三 | 波多野结衣二区 | 北条麻妃国产九九九精品小说 | 99久久久国产精品免费消防器 | 337p日本欧洲亚洲大胆鲁鲁 | 国产一区二区三区在线看 | 九九久久99| 一级做a爰片性色毛片16 | 国产精品一区二区久久精品爱微奶 | 三级视频网站 | 日韩黄色免费 | 久久久精品视频一区二区三区 | 日韩精品一区二区三区视频播放 | 一区二区三区免费 | 亚洲视频国产 | 黄色国产在线视频 | 色综合久久天天综合网 | 日本在线网站 | 久久久不卡网国产精品一区 | 国产日韩欧美精品一区二区 | 欧美日韩高清一区二区三区 | 亚洲视频在线观看 | 亚洲免费在线观看av | 亚洲国产精品成人综合久久久 | 日日操夜夜操视频 | 黄色电影在线免费观看 | 一区在线视频 | 日韩精品久久久久 | 在线不卡一区 | 国产一区二区三区免费 | 伊人久麻豆社区 | 欧美精品一区二区三区在线 | 精品国产乱码久久久久久蜜柚 | 免费毛片网站 | 亚洲国产一区二区视频 | 亚洲逼院 | 欧美精品一区二区三区一线天视频 | 99综合| 中文字幕精品一区二区三区精品 | 一区二区精品 | 偷拍亚洲色图 |