WebApi和MVC有什麼區別?
webapi能搞的,mvc都能搞,搞不懂微軟推出webapi意義是什麼?
題主有這個疑問是很正常的,因為webapi就是mvc的一部分,所以webapi能搞得mvc當然能搞。
你們這些大牛,不要把年輕人繞暈了,初學者最容易的理解方式還是把這兩者畫點分割線!首先,兩者的主要解決的問題不同!MVC的主要使用場景在於Web站點的開發,他在後端實現了一套完整的MVC開發框架,能提供方便的頁面開發,默認使用Razor視圖引擎,提供了後端html構造,用戶可以方便地開發出帶頁面的站點。
而WebAPI主演提供了一套RestfulAPI的開發框架,提供了較為完整的http語義支持,主要用來做開放API,更抽象,更不注重View的生成。
從實現的角度看,雖然他倆捆綁在一起,但是兩者處理管線還是不同的。 如果你對http有較為深入理解後,你就會發現,其實他倆的界限沒那麼明顯,那麼你也許會覺得mvc做的事webAPI都能做,因為他更抽象,有時候你又不想把兩者的界限搞得那麼清晰,那麼你可以試試Nancy哈哈"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是一種數據請求框架:
- http://ASP.NET Web API 可以根據請求報文來返回的相應數據格式。包括JSON和XML。
- http://ASP.NET Web API 單獨做數據請求和MVC做頁面請求可以讓Web前端和後台更好的解耦,減少開發難度。
- Web API 可以更好地用在移動端網頁、桌面端網頁或者桌面程序,調用方更加多樣化。
- Web API 的宿主可以選擇多樣:WebHost,,ConsoleHost,甚至是windows Services。
增增刪刪寫了蠻多,後來發現可以用一張圖和兩段話來概括。而其他一些概念和功能上的異同(view還是json,xml,內容協商等)網上隨便一搜也有,或者推薦看看蔣金楠的兩本框架揭秘。

勉強答一下用過這倆,不能說那個複雜那個不複雜,應該認為二者對實現目標有不同的路徑,極限的講,他們可以互相代替,但是,有的路遠有的路近,類似兩條路都能上山,只不過一條路好走另外一條路風景好。WebAPI針對數據無狀態的通訊可以說一條近路,用起來輕鬆,不複雜。但是如果你用WebAPI實現頁面生成和通訊那您慢慢欣賞景色吧,是條遠路。MVC生成頁面等等,非常方便容易,不複雜,但是如果實現數據通信也是沒問題的,則不如WebAPI靈活,如遇到特殊需求則可能需要複雜的一些操作。
各位不清楚的不要亂答誤人子弟啊,WebAPI是MVC的一部分?竟然還有人點贊。。。看下 @潘成濤 的簡要回答。不清楚可以園子里搜下蔣金楠的博客。
還是有點不一樣,剛才我測試了一下 WebApp有Session狀態,比如許可權過濾等,如只是請求資源感覺一樣的,WebApi基於資源請求,WebApp基於方法請求
@ULiiAn Uliian 總結真是精闢,風景很好。
http://asp.net mvc 6 (http://asp.net 5)已經把它們統一了
在最新的aspnet已經沒有區別mvc和webapi了其實mvc可以理解為webapi + web
MVC主要用於頁面生成,最終的目的是為了生成HTML.WEBAPI是用於外部的介面,如提供給APP調用和用於前端的一些AJAX訪問。一般都是返回簡單的JSON數據格式。----補充說明-----有答案說MVC6沒有webapi,其實這是不對的。只是沒有單獨的webapi解決方案了而已。照樣可以建webapi的。不然對外介面怎麼玩?
我也是今天才看web api 我看了一個小時 怎麼看怎麼覺得 這貨就是個變種的mvc 如果只用 get post 我覺得我用MVC一樣實現這效果
可以理解成ashx和webform的區別
因為強迫症,所以要把ashx也包裝一下
微軟已經認識到單獨搞個webapi 是脫褲子放屁了,所以最新版的mvc6中是沒有webapi的,整合在一起了
推薦閱讀:
※ASP.NET開源以後會有更多的網站選擇這個平台么?
※ADO.NET的SqlParameter(String,?Object)的構造函數第二個參數不能為0?
※處理XMLHttpRequest時如何判斷是否是自己網站發出的?
※.net怎麼實現自己的非同步方法?
※請各位前輩指導下簡練代碼的思路?
