C#進階之WebAPI(一)

最近出去面試,被問到關於WebAPI的知識,由於項目中沒有單獨寫過WebAPI,使用的時候是和mvc結合在一塊兒使用的,因此,在個人印象中WebAPI和mvc是差很少的,這種答案固然不能讓人滿意了,因而今天作個關於WebAPI的總結,順便梳理一下相關知識。web

那麼首先第一點:什麼是WebAPI?面試

    首先咱們瞭解一下.net framework 的框架構成,json

    

    能夠看到,WebAPI和mvc同屬於B/S模板框架的一種,官方對於WebApi的定義是:WebAPI是一個框架,能夠輕鬆構建HTTP服務,覆蓋普遍的客戶端,包括瀏覽器和移動設備,WebAPI是在.NetFramwork上構建RESTful程序的理想平臺。api

    這裏有必要解釋一下什麼是RESTful: RESTful是一種設計風格,REST中的 get、post、put、delete來進行數據的增刪改查,若是開發人員的應用程序符合RESTful原則,那他的服務可被稱之爲「Restful風格應用服務」瀏覽器

 

而後咱們瞭解一下:爲何要使用WebAPI?緩存

    在解釋這個問題以前咱們須要首先知道一下.net爲外部提供接口的方式有哪些?服務器

    答:WCF、WebServiceWebAp、通常處理程序。架構

      那來了解一下他們之間的區別:mvc

        WebService框架

            1:基於soap協議,數據格式是xml、

            2:只支持http協議、

            3:不是開源的,可是能夠被任意一個瞭解xml的人使用、

            4:只能部署在iis上。

        WCF

            1:基於soap協議,數據格式是xml、

            2:WCF是webservice的進化版,支持各類各樣的協議,像TCP、http、https、NamedPipes、MSMQ等、

            3:不是開源的,可是能夠被任意一個瞭解xml的人使用、

            4:能夠部署在應用程序中、IIS上或者Windows服務中。

        WebAPI

            1:是一個簡單的構建http服務的新框架、

            2:在.net平臺上WebAPI是一個開源的、理想的、構建RESTful服務的技術、

            3:可使用http的全部特色,(好比URIs、request/response頭、緩存、版本控制、多種內容格式)、

            4:支持mvc的特性,像路由、控制器、action、fiter、模型綁定、控制反轉、依賴注入、單元測試、

            5:能夠部署在應用程序中、IIS上、

            6:是一個輕量級的框架,對各類終端的支持都很好、

            7:Response能夠被webAPI的MediaTypeFormatter轉換成json、XML或者任何你想轉換的格式。

        通常處理程序

            通常處理程序其實就是和頁面處理程序相區分開的,由於實現的是IhttpHandler接口,並且不須要繼承自Page類。因此沒有那麼多的事件須要處理,沒必要消耗太多資源,因此性能方面要比aspx高。

那麼回到這個問題,爲何要使用WebApi?

        當你遇到下面這些狀況的時候,就能夠考慮使用webAPI來構建你的服務了;

            1:須要webservice可是不須要soap、

            2:須要在已有的WCF服務基礎上創建non-soap-based http服務、

            3:只想發佈一些簡單的http服務,不想使用相對複雜的wcf配置、

            4:發佈的服務會被限制帶寬的設備訪問、

            5:但願使用開源框架,關鍵時刻能夠本身調試或者自定義一下框架。

 

最後總結一下WebAPI和MVC之間的區別:WebAPI和MVC之間有什麼區別?

        相信使用過mvc和webapi的同窗都會以爲這二者太類似了,使用起來也差很少,可是既然是兩個框架,那確定是有區別的,我對WebAPI和MVC的區別作了一下總結:

            1:MVC主要是用來構建網站的,既關心數據也關心頁面展現,而WebAPI只關心數據、

            2:WebAPI支持格式協商,客戶端能夠經過Accept header通知服務器指望的格式、

            3:WebApi支持Self Host,MVC目前不支持、

            4:WebAPI經過不一樣的http verb表達不一樣的動做(CRUD),MVC則經過Action名字表達動做、

            5:WebAPI內建於System.Web.Http 命名空間下,而MVC位於Systm.Web.Mvc命名空間下,所以路由等有些許不一樣、

            6:WebAPI很是適合構建移動客戶端服務。

相關文章
相關標籤/搜索