ASP.Net MVC與WebForm的區別
WebForm網站和MVC網站執行機制的區別
MVC相對於WebForm來說更難學習,但效能優於WebForm,比較適合大型專案,開發成本較高,但耦合度低,易於維護,沒有太多的現成控制元件,開發效率較低。對WebForm有基礎的人反而不太容易學MVC。
一、MVC相對於WebForm
的變化
1 ,使用
URL Routing
技術:Web程式的URL不再是指向具體的物理頁面.aspx,而是指向某個Controller的某個方法。一個典型的MVC架構的程式,其URL可能如下所示:
http://www.mysite.com/Customer/Index
使用該MVC架構的程式其URL不必有副檔名。上面這個URL中的Customer
即為Controller
的名字。而Index
是Customer
定義的一個方法名。
2,Web程式的介面.aspx不再使用伺服器端的Form:
<asp: form runat="server"></form>
那麼與伺服器端的Form相關的Postback以及頁面生命週期的事件也不存在了。
3,頁面中不再有View State。MVC下將不能使用View State來儲存程式狀態資訊。
4,不再提供依賴於伺服器端Form的伺服器控制元件事件,開發人員熟悉的Button_Clicked事件在MVC下將不再需要。
二、WebForm網站和MVC網站執行機制的區別
①WebForm網站的執行機制
比如說我們現在要訪問一個WebForm
站點:www.google.com.hk/Default.aspx
(僅僅是示例)。我們的瀏覽器和伺服器都是做了哪些動作呢?
1)首先瀏覽器會向目的伺服器傳送請求報文。
配置過IIS的都知道,網站掛載在伺服器上,我們是通過訪問虛擬目錄的方式訪問網站的。這時候目的主機的IIS接收的是訪問該虛擬目錄下Default.aspx檔案的請求;(當然這也是一個非常複雜的過程,包括請求DNS伺服器,找到目的主機IP,根據IP地址訪問目的主機。複雜的網路過程就不敘述,有興趣的自己找資料學習);
2)伺服器端的IIS軟體接收到請求後,把請求交給.NET FramWork
進行處理;
3).NET FramWork
會建立Default_aspx
類的物件,也就是我們所說的頁面物件。(在WebFrom
網站建立完,並且編譯後Default.aspx
會被編譯成Default_aspx
類)
到現在的整個過程都還是Http
請求,IIS的內部機制會去實現一個IHttphandler
的介面,其中該介面實現一個ProcessRequest
方法
MSDN是這樣解釋的
該ProcessRequest()
方法會去呼叫對應頁面的Page_Load()
方法
protected void Page_Load(object sender, EventArgs e)
{
//處理的業務邏輯或者是訪問資料庫的程式碼
//要輸出的Html或者其它內容
}
4)返回給瀏覽器(包括Html,CSS,Js
等等)
流程示意圖如下:
②MVC網站的執行機制
還比如說我們現在要訪問一個MVC站點:www.google.com.hk/FirstPage/Default
(僅僅是示例)。我們的瀏覽器和伺服器又做了哪些動作呢?
1)瀏覽器向伺服器傳送Request
請求報文(FirstPage/Default
)
2)伺服器端的IIS相應Request
請求
3).NET FramWork
根據路由配置,解析URL
,並建立FirstPage
類的物件,並呼叫相應的Default
方法
public ActionResult Default()
{
return View();//返回給檢視
}
4)然後會訪問檢視資料夾下的Default.cshtml
,返回給瀏覽器(其中包括html,css,js
等等)
流程的示意圖如下:
這只是一個比較簡單的執行過程。其實在這過程中發生了很多事情,比如說:執行Global.asax
中的Application_Start()
方法來完成一些初始化的工作等等,會在以後的文章中繼續解析。
以上就是WebForm
網站和MVC
網站執行機制的區別。
那麼到底使用MVC
的優點比WebForm
到底有哪些優點呢?
①最重要的就是.NET程式設計師在開發的時候再也不會使用那些被很多人詬病的微軟封裝的控制元件了。
②MVC設計模式降低了模型(Model
,業務和資料)和檢視的耦合關係。包括我們在開發WebForm
網站使用三層架構的思想也是為了降低資料和檢視的耦合等;
③可以複用檢視,也就是說同樣的資料可以使用不同的檢視以不同的圖示展示出來。
相關文章
- ASP.NET MVC與ASP.NET WebFormASP.NETMVCWebORM
- MVC與三層架構區別MVC架構
- net三層架構與MVC的區別架構MVC
- Webform和MVC,為什麼MVC更好一些?WebORMMVC
- WebApi和MVC的區別WebAPIMVC
- MTV和MVC的區別MVC
- asp.net中Literal與label的區別ASP.NET
- MVC、MVP和MVVM的區別MVCMVPMVVM
- MVC2 ,MVC3 ,MVC4,MVC5的區別,EF的各個版本的區別;LocalDB是個啥MVC
- spring boot與spring mvc的區別是什麼?Spring BootMVC
- ASP.NET中HttpApplication中ProcessRequest方法中執行的事件順序;ASP.NET WebForm和MVC總體請求流程圖...ASP.NETHTTPAPP事件WebORMMVC流程圖
- MVC模式和MVP模式的區別MVC模式MVP
- MVC4 razor與aspx的區別以及用法1,2MVC
- Vue教程00:MVC、MVP、MVVM模式的區別,服務端渲染與客戶端渲染的區別VueMVCMVPMVVM模式服務端客戶端
- ASP.NET 5與MVC 6中的新特性ASP.NETMVC
- MVC,MVP和MVVM之間的區別MVCMVPMVVM
- 【ASP.net】Equals 和 == 的區別ASP.NET
- Asp.net MVC中ViewData與ViewBag的使用方法ASP.NETMVCView
- ??與?:的區別
- Spring MVC和Spring Boot的區別 - hackernoonMVCSpring Boot
- Strust2和Spring MVC的區別RustSpringMVC
- Asp.Net 不同區別的 OnClick ( onserverclick, onclientclick )ASP.NETServerclient
- C# 獲取客戶端資訊 /asp.net/WebService/WebFormC#客戶端ASP.NETWebORM
- ASP.NET MVC路由ASP.NETMVC路由
- ASP.NET MVC ModuleASP.NETMVC
- ASP.NET MVC TemplateASP.NETMVC
- ASP.NET MVC ErrorASP.NETMVCError
- ASP.NET MVC FilterASP.NETMVCFilter
- UpdatePanel for ASP.NET MVCASP.NETMVC
- ASP.NET Core MVC 之區域性檢視(Partial Views)ASP.NETMVCView
- MySQL的@與@@區別MySql
- mybatis #與$的區別MyBatis
- Null 與 “” 的區別Null
- &與&&, |與||區別
- in與exist , not in與not exist 的區別
- MVC下的DAO介面類和SERVICE介面類區別?MVC
- ASP.Net MVC開發基礎學習筆記(5):區域、模板頁與WebAPI初步ASP.NETMVC筆記WebAPI
- spring MVC的困惑--url-pattern的/和/*有區別SpringMVC