C#進階之WebAPI(一) 那麼首先第一點:什麼是WebAPI? 首先我們瞭解一下.net framework 的框架構成: 可以看到,WebAPI和mvc同屬於B/S模板框架的一種,官方對於WebApi的定義是:WebAPI是一個框架,可以輕鬆構建HTTP服務,覆蓋廣泛的客戶端,包括瀏覽器和移動 ...
C#進階之WebAPI(一)
那麼首先第一點:什麼是WebAPI?
首先我們瞭解一下.net framework 的框架構成:
可以看到,WebAPI和mvc同屬於B/S模板框架的一種,官方對於WebApi的定義是:WebAPI是一個框架,可以輕鬆構建HTTP服務,覆蓋廣泛的客戶端,包括瀏覽器和移動設備,WebAPI是在.NetFramwork上構建RESTful程式的理想平臺。
這裡有必要解釋一下什麼是RESTful: RESTful是一種設計風格,REST中的 get、post、put、delete來進行數據的增刪改查,如果開發人員的應用程式符合RESTful原則,那他的服務可被稱之為“Restful風格應用服務”。
然後我們瞭解一下:為什麼要使用WebAPI?
在解釋這個問題之前我們需要首先知道一下.net為外部提供介面的方式有哪些?
答:WCF、WebService、WebAp、一般處理程式。
那來瞭解一下他們之間的區別:
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非常適合構建移動客戶端服務。