【原創】關于ASP.NET WebForm與ASP.NET MVC的比較

4418040-001d0dc75c3d2851.png

WebForm的理解

1、?WebForm概念

ASP.NETWebform提供了一個類似于Winform的事件響應GUI模型(event-drivenGUI),隱藏了HTTP、HTML、JavaScript等細節,將用戶界面構建成一個服務器端的樹結構控件(Control),每個控件通過ViewState保持自己的狀態,并自動把客戶端的js事件和服務器端的事件聯系起來。這種做法使得開發WinForm和WebForm程序具有相近的開發體驗,填平WinForm開發(有狀態、面向對象的)和WebForm開發(無狀態、面向HTML的)之間的鴻溝。

2、WebForm 請求流程

比如訪問 http://www.qidian.com/Default.aspx

1、Http請求(物理地址:Default.aspx)

①發送請求: 瀏覽器向服務器發送請求報文,此時由IIS虛擬目錄接收。(通過配置過IIS,把網站掛載在服務器上,通過訪問虛擬目錄的方式訪問網站的。)

②轉交請求: 服務器端的IIS軟件接收到請求后,把請求交給.NET FrameWork進行處理。

③創建頁面類對象:.NET FrameWork根據請求的地址index.aspx,會創建對應的index_aspx類的對象(頁面對象)。

IIS的內部機制:

實現一個IHttphandler的接口

該接口實現一個ProcessRequest方法

該方法會調用對應頁面的Page_load方法

處理的業務邏輯或者是訪問數據庫的代碼

要輸出的Html或者其它內容

2、返回給瀏覽器

①轉交回復: 通過IIS傳輸出給瀏覽器,要輸出的html元素或其他內容(html+js+css等)

②解析為圖形界面:瀏覽器解析html代碼,并翻譯為圖形化界面

如圖:

4418040-aa9aaea908688230

2、?WebForm的優點:

1.???有大量的服務器控件支持,比如:GridView、Repeater等控件可以方便的進行數據綁定,從而減少的大量代碼的編寫。

2.???學習成本低,由于微軟封裝的比較深,造成深入學習的難度加大。

3.???基于事件驅動編程,如:click事件等,aspx和cs文件分離,即顯示邏輯和處理邏輯分離。

4.???支持視圖狀態,每個控件以“隱藏域”的形式存在當前表單頁面未達到“有狀態”,即ViewState。

3、?WebForm的缺點

1.???由于使用的ViewState會增加頁面的負擔,造成性能不是很高。

2.???代碼重用性不高,缺少對并行開發的支持,

3.???因為采用code-behind 代碼后植技術,使aspx頁面與cs緊密耦合度太高。

4.???對Seo不友好,因為URL指定具體的aspx頁面。

5.???因為緊密耦合度太高、使用大量的事件處理函數,不利于單元測試。

二、???????MVC的理解

1、?MVC的概念

Asp.netMvc架構模式是一種 低耦合、可測試的web應用程序框架,它是基于CLR和成熟的MVC架構構建的。ASP.NET MVC不支持ViewState和服務器控件。

2、?MVC的請求流程

比如訪問:http://www.google.com.hk/FirstPage/Default

1、Http請求(邏輯地址:FirstPage/Default)

①發送請求(FirstPage/Default)

②轉交請求(同上)

③創建類對象+方法

.NET FrameWork根據路由配置,解析URL,并創建news類的對象,并調用對象的index方法。通過View方法加載視圖,然后訪問視圖文件夾下的index.cshtml

2、返回給瀏覽器

如圖:

4418040-498ab955a12cdd12

3、?MVC的優點

1.???架構降低了程序間的耦合性。

2.???不支持ViewState,頁面更加干凈,可以提升程序的性能。

3.???支持并行開發,可擴展性好,繼承了asp.net的特性,表單驗證、緩存、會話等。

4.???由于程序耦合度低,可以比較順利的進行單元測試。

5.???通過修改路由規則,可以控制生成自定義的url,因此控制生成seo友好的url將更加容易。

6.???強類型view實現,更安全,更高效。

4、?MVC的缺點

需要有一定的html、css、js、jquery前端技術,也就增加了一些學習的成本。

MVC和WebForm的選擇場景

新開發的項目建議采用MVC。

想要快速開發的中小型項目可以選擇WebForm。

比較關注單元測試、性能、SEO、代碼重用性的話建議采用MVC。

最后結語

MVC和WebForm都有自己的優缺點,目前兩種技術都存在,證明都有自己的價值,雖然現在MVC應用越來越廣發,我們不能一味的否定WebForm。一個高級程序員用WebForm實現的網站性能并不一定比初級程序員用MVC實現的網站性能差,最重要的還是努力提升自己的技術能力才是王道!

歡迎關注我的公眾號:DoNet技術分享平臺?

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

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

相關文章

對象的接口

Simula(模擬) 是一個很好的列子。正如這個名字鎖暗示的,它的作用是"模擬"像"銀行出納員"我們有一系列出納員,客戶,賬戶以及交易等 每類成員(元素)都有具有一些通用的特征,每個賬號都有一定的余額;每個出納都能接收客戶的存款,等等。…

java color類 藍色_java中Color類的簡單總結

標簽:java中Color類的簡單總結1.顏色的常識任何顏色都是由三原色組成(RGB),JAVA中支持224為彩色,即紅綠藍分量取值介于0-255之間(8位表示)2.Color類中的常量public final static Color black new Color(0,0,0);public final static Color bule new Col…

C#中幾種循環語法的比較

循環操作在程序開發當中使用非常的廣泛,當然循環也很容易成為整個程序運行的性能瓶頸,所以理解C#中幾種循環的用法,還是非常重要的。C#支持一下四種循環方式1、while循環2、do...while循環3、for 循環4、foreach循環前三種循環在C、Java中也是…

Eclipse基金會

昨天Eclipse基金會慶祝其成立十周年。2004年2月的新聞稿宣布該非盈利組織的正式成立,由包括開發者、消費者和插件提供商在內的各獨立團體組成的董事會,為Eclipse的長期發展負責。 基金會成立時,有19個項目和50個董事會成員,其開源…

.Net架構必備工具列表

原文N多年前微軟官網曾發了.Net下必備的十種工具,N多年過去了,世異時移,很多東西都已經變化了,那個列表也似乎陳舊了。而且,該文也只是對十種工具獨立的介紹,顯得有些羅列的感覺,是不是每個工具…

java scanner接收數組_java – 使用scanner將文件中的整數讀入數組

我正在為學校做一份復習工作.賦值是編寫一個類,它從標準輸入讀取一個包含幾個整數的文件,這些整數將被放入一個數組中.從這里開始,需要編寫方法來找出平均值,中位數,最大值,最小值和標準差.它讀起來像這樣:4556677889等等…所以,我假設我需要創建一個數組列表(因為長…

Asp.Net頁面傳值的方法簡單總結【原創】

1、QueryString當頁面上form按照get的方式向頁面發送請求數據的時候,web server會將請求數據放入一個QEURY_STRING的環境變量中,然后通過QeueryString方法從這個變量中獲取相應的參數。例如:發送參數頁面Test1.aspx 按鈕單擊代碼:…

關于archlinux下的ralink5370網卡

驅動此網卡要使用 rt2800usb,rt2800lib 這兩個模塊 順便說一下對模塊進行操作的命令: rmmod 模塊名 //為移除模塊 insmod 模塊所在路徑 //為添加模塊 查看網卡是否能被驅動,可以使用命令:ifconfig -a 轉載于:https://www.cnblogs.…

java xml 遞歸_Java遞歸遍歷XML所有元素

import org.dom4j.Document;import org.dom4j.DocumentHelper;import org.dom4j.DocumentException;import org.dom4j.Element;import java.util.*;/*** Created by IntelliJ IDEA.* User: leizhimin* Date: 2008-4-14 14:02:12* Note: Java遞歸遍歷XML所有元素*/public class …

【基礎】C#異常處理的總結

一、異常處理的理解?異常處理是指程序在運行過程中,發生錯誤會導致程序退出,這種錯誤,就叫做異常。因此處理這種錯誤,就稱為異常處理。二、異常處理如何操作?C# 異常處理時建立在四個關鍵詞之上的&#xff…

Java Web 路徑問題

可能在做文件上傳或者 圖片加載,資源加載 時候用到文件相對服務器地址 System.out.println(request.getRemoteUser()); //客戶端用戶System.out.println(request.getRemoteAddr()); //客戶端IPSystem.out.println(request.getRemoteHost()); //客戶端主機名Syst…

mysql 多字節編碼漏洞_phpmyadmin 4.8.1 遠程文件包含漏洞(CVE-2018-12613)

漏洞詳情范圍 phpMyAdmin 4.8.0和4.8.1原理 首先在index.php 50-63行代碼$target_blacklist array (import.php, export.php);// If we have a valid target, lets load that script insteadif (! empty($_REQUEST[target])&& is_string($_REQUEST[target])&&…

.Net開發的兩個小技巧

一、符號的妙用1、可以作為保留關鍵字的標識符C#規范當中,不允許使用保留關鍵字(class、bool等)當作普通的標識符來命名,這時候符號作用就體現出來了,可以通過符號前綴把這些保留關鍵字可以當作普通的字符使用。比如&a…

Codeforces Round #FF (Div. 1) A. DZY Loves Sequences

原題鏈接:http://codeforces.com/problemset/problem/446/A 題意:給一個長度為n的序列,最多可以修改一個位置的數,求最長連續上升子序列。 題解:當a[i1] > a[i-1]2的時候,可以通過改變a[i]的值來使前后兩…

25句張小嫻經典愛情語錄,句句穿心!

1、女人在床上流的眼淚,比在任何一個地方多。男人在床上說的謊話,也比在任何一個地方多。2、承諾本來就是男人與女人的一場角力,有時皆大歡喜,大部份的情況卻兩敗俱傷。3、愛情正是一個將一對陌生人變成情侶,又將一對情…

mysql 數據庫事務處理_Mysql事務處理問題 - mysql數據庫欄目 - 自學php

今天和同學討論起數據庫事務處理的問題,感覺討論中明白了一些,有些知識看過了,但是沒有實際使用還是不理解。事務處理就是將一系列操作當做一個原子操作,要么全部執行成功,如果執行失敗則保留執行期的狀態。通過提交和…

[LeetCode] Palindrome Linked List

Given a singly linked list, determine if it is a palindrome. 一開始想用棧,但是試來試去發現寫不出來遂放棄,后來想想再不濟可以轉換成數組然后分別兩頭掃,但是這樣就用了O(n) 的空間,再進一步,可不可以在鏈表里模…

【原創】Ajax的用法總結

一、什么是AjaxAjax英文全稱為“ Asynchr JavsScript and XML”(異步的JavaScript和XML),是一種創建交互式網頁的開發技術。二、Ajax技術的核心Ajax是一系列相關技術的融合,其核心包括XMLHttpRequest、JavsScript和DOM技術&#x…

gprs java_WISMO模塊GPRS上網設置的過程

WISMO模塊GPRS上網設置的過程一) AT指令設置部分(1) ATCGCLASS“B”置為“網絡WISMO模塊GPRS上網設置的過程一) AT指令設置部分(1) ATCGCLASS“B”置為“B”模式。(2) ATCGDCONT1,“IP”,“CMNET”設置APN。(3) ATCSQ 檢查信號 若返回10—31&#xff0c…

loadrunner性能測試步驟

性能測試過程分為4個階段:設計、構建、執行、分析/診斷/調節具體的工作流程如下圖 設計  >  構建  >  執行   >  分析/診斷/調節 收集要求    設置測試環境 基準測試    診斷瓶頸 設計測試策略  記錄測試腳本 性能測試     調…