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都能做,因為他更抽象,有時候你又不想把兩者的界限搞得那么清晰


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM