Asp.Net中WebForm与MVC,Web API模式对比
webform,web mvc和web api都是asp.net官方的三套框架,想對比下三者的關系,查了下資料,web api跟web mvc基本同屬一脈,只是mvc多了一個視圖渲染,網上有些博客介紹了webform和mvc底層源碼實現的不同,但不夠直觀簡潔,博客園有一篇博客,很簡潔的說明的兩者的關系,出于學習和記錄的原因,進行了復制轉載?
http://www.cnblogs.com/chay1227/archive/2013/03/11/2953301.html
Asp.net Web開發方式,分為兩種:
1. WebForm開發
2. Asp.Net MVC開發
MVC是微軟對外公布的第一個開源的表示層框架,MVC目的不是取代WebForm開發,只是web開發的另一種選擇。兩者最本質區別是請求url不同,MVC是將請求交給控制器處理,而WebForm是將請求交給請求頁的后臺文件(.cs文件的Page_Load)處理。
MVC優點:
1. 很容易將復雜的應用分成M、V、C三個組件模型,通過model、view、controller有效的簡化了復雜的架構,將處理后臺邏輯代碼與前臺展示邏輯進行了很好的分離。
2. 因為沒有使用server-based forms,所以程序員控制的會更加靈活,頁面更加干凈,沒有viewstate。
3. 通過修改路由規則,可以控制生成自定義的url,因此控制生成seo友好的url將更加容易。
4. 強類型view實現,更安全,更高效。
WebForm優點:
1. 支持事件模型開發。有豐富的服務器端組件。
2. 控件豐富
WebForm缺點:
1. 封裝太強,很多底層東西讓初學者不是很明白,
2. 自定義控制不靈活,
3. ViewState處理。
作者:龍Ryze
鏈接:https://www.zhihu.com/question/46369458/answer/144963042
來源:知乎
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。
?
"WebApi和MVC有什么區別?"
首先要重點說的是,Web API是一種無限接近于RESTful風格的輕型框架,且不是微軟提出來的,微軟在.NET上實現了這中框架—http://Asp.Net Web API,所以“微軟包裝”是一個極大的偏見。
我在公司經歷了從 MVC 轉到 “Web API + 其他框架”的過程,為什么要這么做?
從需求的根本上來看,業務的布局和擴張導致是根本原因。我們要求,數據庫數據不只能夠對 Web 程序服務,對其他業務也行,甚至可以根據數據接口開放給第三方。例如,MVC 業務中,可以在前端用AJAX獲取和更新數據,也可以在后臺用 HttpClient, 調用的方式不限,數據格式完全由調用方決定(XML 和 JSON 也是足夠了)。
為什么不用 MVC 來做?
MVC 框架負責的東西太多了,我們可以說它是一個重量級的框架,因為它負責了數據接口,邏輯運算和View層的顯示,為了減少 Controller 層的代碼量,我們甚至還在三層架構上加了 DAL 和 BLL 層。除此之外,MVC 只能運行在 IIS 和 新出來的 DotNetCore 中,宿主選擇比較少。
?
Web API 和 MVC可以說是兩個不同的東西。Web API更傾向于基于HTTP協議的服務,直接返回用戶的數據請求。MVC是建站的一種框架,傾向于返回用戶的頁面請求。
?
我總結了以下 http://ASP.NET Web API 的特性,更能說明Web API是一種數據請求框架:
?
作者:潘成濤
鏈接:https://www.zhihu.com/question/46369458/answer/101099849
來源:知乎
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。
?
推薦看看蔣金楠的兩本框架揭秘。
使用上區分,mvc主要用于建站,web api主要用于構建http服務,當然你非要用mvc來構建Uri式的Api也行,不過顯然是沒有這個必要的,一個不恰當的比喻就像是你也可以玩破解版的單機游戲,也可以通過平臺進行聯機,但是始終不如steam上來得爽是吧。
?
自身實現上區分的話,兩種框架主要是在Asp .Net的基礎上進行改造,主要是對HttpModule和HttpHandler做了擴展,實現方法是不一樣的,比如說前者更像是在一層上建了第二層,引伸出更強大的路由機制,實現了諸如MvcHandler和ControllerFactory這種消息處理和后臺控制器方法選擇機制,Web Api除了擴展了前者以外,另外寫出了一套獨立的,獨立于Asp .Net的消息處理管道,就像是借鑒原來房子的模型,重新設計出了另外一套別墅。這也很好地解釋了為什么Web Api可以寄宿在不同的宿主上(寄宿的本質就是利用一個具體的應用程序為Web Api提供一個運行的環境,并解決請求的接收和響應的回復),如Web Host,Self Host方式,這和WCF是相似的。而MVC只能寄宿于IIS上(不考慮.net core),就像Webform的寄宿方式。何況它們兩者雖然都有Controller和Action,但是請求的實現和響應的回復機制也是不同的,比如說Web Api處理消息有兩個核心類是HttpRequestMessage和HttpResponseMessage。這兩種框架最多只能說是模式上類似,實現上還是有很大差別的。不過兩者都是Asp .Net的組成成員,圖上表現得很清楚了。
總結
以上是生活随笔為你收集整理的Asp.Net中WebForm与MVC,Web API模式对比的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 中信9积分兑换权益查询
- 下一篇: 设计模式(五)行为型模式