C#进阶之WebAPI(一)
最近出去面試,被問到關(guān)于WebAPI的知識(shí),因?yàn)轫?xiàng)目中沒有單獨(dú)寫過WebAPI,使用的時(shí)候是和mvc結(jié)合在一起使用的,所以,在我的印象中WebAPI和mvc是差不多的,這種答案當(dāng)然不能讓人滿意了,于是今天做個(gè)關(guān)于WebAPI的總結(jié),順便梳理一下相關(guān)知識(shí)。
那么首先第一點(diǎn):什么是WebAPI?
首先我們了解一下.net framework 的框架構(gòu)成,
可以看到,WebAPI和mvc同屬于B/S模板框架的一種,官方對(duì)于WebApi的定義是:WebAPI是一個(gè)框架,可以輕松構(gòu)建HTTP服務(wù),覆蓋廣泛的客戶端,包括瀏覽器和移動(dòng)設(shè)備,WebAPI是在.NetFramwork上構(gòu)建RESTful程序的理想平臺(tái)。
這里有必要解釋一下什么是RESTful:?RESTful是一種設(shè)計(jì)風(fēng)格,REST中的 get、post、put、delete來進(jìn)行數(shù)據(jù)的增刪改查,如果開發(fā)人員的應(yīng)用程序符合RESTful原則,那他的服務(wù)可被稱之為“Restful風(fēng)格應(yīng)用服務(wù)”。
?
然后我們了解一下:為什么要使用WebAPI?
在解釋這個(gè)問題之前我們需要首先知道一下.net為外部提供接口的方式有哪些?
答:WCF、WebService、WebAp、一般處理程序。
那來了解一下他們之間的區(qū)別:
WebService:
1:基于soap協(xié)議,數(shù)據(jù)格式是xml、
2:只支持http協(xié)議、
3:不是開源的,但是可以被任意一個(gè)了解xml的人使用、
4:只能部署在iis上。
WCF:
1:基于soap協(xié)議,數(shù)據(jù)格式是xml、
2:WCF是webservice的進(jìn)化版,支持各種各樣的協(xié)議,像TCP、http、https、NamedPipes、MSMQ等、
3:不是開源的,但是可以被任意一個(gè)了解xml的人使用、
4:可以部署在應(yīng)用程序中、IIS上或者Windows服務(wù)中。
WebAPI:
1:是一個(gè)簡(jiǎn)單的構(gòu)建http服務(wù)的新框架、
2:在.net平臺(tái)上WebAPI是一個(gè)開源的、理想的、構(gòu)建RESTful服務(wù)的技術(shù)、
3:可以使用http的所有特點(diǎn),(比如URIs、request/response頭、緩存、版本控制、多種內(nèi)容格式)、
4:支持mvc的特性,像路由、控制器、action、fiter、模型綁定、控制反轉(zhuǎn)、依賴注入、單元測(cè)試、
5:可以部署在應(yīng)用程序中、IIS上、
6:是一個(gè)輕量級(jí)的框架,對(duì)各種終端的支持都很好、
7:Response可以被webAPI的MediaTypeFormatter轉(zhuǎn)換成json、XML或者任何你想轉(zhuǎn)換的格式。
一般處理程序:
一般處理程序其實(shí)就是和頁(yè)面處理程序相區(qū)分開的,因?yàn)閷?shí)現(xiàn)的是IhttpHandler接口,而且不需要繼承自Page類。所以沒有那么多的事件需要處理,不必消耗太多資源,所以性能方面要比aspx高。
那么回到這個(gè)問題,為什么要使用WebApi?
當(dāng)你遇到下面這些情況的時(shí)候,就可以考慮使用webAPI來構(gòu)建你的服務(wù)了;
1:需要webservice但是不需要soap、
2:需要在已有的WCF服務(wù)基礎(chǔ)上建立non-soap-based http服務(wù)、
3:只想發(fā)布一些簡(jiǎn)單的http服務(wù),不想使用相對(duì)復(fù)雜的wcf配置、
4:發(fā)布的服務(wù)會(huì)被限制帶寬的設(shè)備訪問、
5:希望使用開源框架,關(guān)鍵時(shí)刻可以自己調(diào)試或者自定義一下框架。
?
最后總結(jié)一下WebAPI和MVC之間的區(qū)別:WebAPI和MVC之間有什么區(qū)別?
相信使用過mvc和webapi的同學(xué)都會(huì)覺得這兩者太相似了,使用起來也差不多,但是既然是兩個(gè)框架,那肯定是有區(qū)別的,我對(duì)WebAPI和MVC的區(qū)別做了一下總結(jié):
1:MVC主要是用來構(gòu)建網(wǎng)站的,既關(guān)心數(shù)據(jù)也關(guān)心頁(yè)面展示,而WebAPI只關(guān)心數(shù)據(jù)、
2:WebAPI支持格式協(xié)商,客戶端可以通過Accept header通知服務(wù)器期望的格式、
3:WebApi支持Self Host,MVC目前不支持、
4:WebAPI通過不同的http verb表達(dá)不同的動(dòng)作(CRUD),MVC則通過Action名字表達(dá)動(dòng)作、
5:WebAPI內(nèi)建于System.Web.Http 命名空間下,而MVC位于Systm.Web.Mvc命名空間下,因此路由等有些許不同、
6:WebAPI非常適合構(gòu)建移動(dòng)客戶端服務(wù)。
總結(jié)
以上是生活随笔為你收集整理的C#进阶之WebAPI(一)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 白户怎么使用信用卡最划算
- 下一篇: 618,财商燃烧吧!四重理财福利,助你财