WebApi和MVC的區別
使用上區分,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
的組成成員,圖上表現得很清楚了。
首先,兩者的主要解決的問題不同!
MVC的主要使用場景在於Web站點的開發,他在後端實現了一套完整的MVC開發框架,能提供方便的頁面開發,預設使用Razor檢視引擎,提供了後端html構造,使用者可以方便地開發出帶頁面的站點。
而WebAPI主演提供了一套RestfulAPI
的開發框架,提供了較為完整的http語義支援,主要用來做開放API,更抽象,更不注重View
的生成。
從實現的角度看,雖然他倆捆綁在一起,但是兩者處理管線還是不同的。
如果你對http有較為深入理解後,你就會發現,其實他倆的界限沒那麼明顯,那麼你也許會覺得mvc做的事webAPI都能做,因為他更抽象,有時候你又不想把兩者的界限搞得那麼清晰
相關文章
- MTV和MVC的區別MVC
- MVC、MVP和MVVM的區別MVCMVPMVVM
- MVC模式和MVP模式的區別MVC模式MVP
- MVC,MVP和MVVM之間的區別MVCMVPMVVM
- WCF、WebAPI、WCFREST、WebService之間的區別WebAPIREST
- Spring MVC和Spring Boot的區別 - hackernoonMVCSpring Boot
- Strust2和Spring MVC的區別RustSpringMVC
- MVC2 ,MVC3 ,MVC4,MVC5的區別,EF的各個版本的區別;LocalDB是個啥MVC
- MVC下的DAO介面類和SERVICE介面類區別?MVC
- WebApi和Mvc的Session一直獲取不到問題WebAPIMVCSession
- spring MVC的困惑--url-pattern的/和/*有區別SpringMVC
- WebAPI在MVC4下的調整(4)WebAPIMVC
- ASP.Net MVC與WebForm的區別ASP.NETMVCWebORM
- net三層架構與MVC的區別架構MVC
- MVC與三層架構區別MVC架構
- ../和./和/的區別
- 和 的區別
- as 和 with的區別
- ||和??的區別
- /*和/**的區別
- 別再設計易碎的WebAPIWebAPI
- 【轉】asp.net mvc webapi+angular.js案例ASP.NETMVCWebAPIAngularJS
- LinkedList和ArrayList的區別、Vector和ArrayList的區別
- http和https的區別/get和post的區別HTTP
- ./ 和sh 的區別
- JQuery this和$(this)的區別jQuery
- jquery $(this) 和this的區別jQuery
- T和?的區別
- ++a和a++的區別
- makefile =和:=的區別
- Mybatis中#{}和${}傳參的區別及#和$的區別小結MyBatis
- spring boot與spring mvc的區別是什麼?Spring BootMVC
- ASP.Net MVC開發基礎學習筆記(5):區域、模板頁與WebAPI初步ASP.NETMVC筆記WebAPI
- Vue教程00:MVC、MVP、MVVM模式的區別,服務端渲染與客戶端渲染的區別VueMVCMVPMVVM模式服務端客戶端
- 和區別
- MYSQL和SQL的區別MySql
- varchar和char的區別
- &self 和 self 的區別