最近作了不少項目,也同時使用了mvc的接口,webapi的接口,以及webservice 的接口。先兩兩對好比下:web
mvc和webapi區別:ajax
一、MVC是建站的一種框架,傾向於返回用戶的頁面請求;api傾向於返回用戶數據請求;編程
二、mvc直接繼承System.Web.Mvc.Controller; 而webapi繼承的是System.Web.Http.ApiControllerjson
三、MVC只能部署到IIS上,而webapi能夠寄宿在不一樣的宿主上(寄宿的本質就是利用一個具體的應用程序爲Web Api提供一個運行的環境,並解決請求的接收和響應的回覆),如Web Host,Self Host方式
四、接參數方式不同:
mvc接口不論是get請求仍是post請求均可以在方法名後面接參數形式,或者直接接對象方式,可是webapi接參數方式有點複雜,get請求也能夠直接在方法後面接到參數。
可是post請求api
(1)1個參數的時候,能夠用mvc
$.ajax({ type: "post", url: "http://localhost:111/api/MyApi/SaveData", data: { "": "test" }, success: function (data, status) {} });
接口裏面用以下方式接受框架
[HttpPost] public bool SaveData([FromBody]string NAME) { return true; }
(2)兩個以及兩個以上的參數,是不能用方法明後加參數形式直接接收。編程語言
能夠用實體方式(這種方法比較推薦。由於在手機端調用接口的時候更好的使用)post
五、返回結果的區別:
mvc返回System.Web.Mvc.JsonResult(return Json(model, System.Web.Mvc.JsonRequestBehavior.AllowGet)),在前段能夠直接使用;而webapi想要直接使用,須要返回JsonObject,不然須要json.parse(obj)轉化url
private JsonObject ModelToJson(Result result) { JsonObject obj = new JsonObject(); obj.Accumulate("code", result.code); obj.Accumulate("message", result.message); return obj; }
備註:
一、在新建webapi的時候,必需要添加webapi 控制器類。。不能直接新建個類,,而後改爲繼承ApiController,不然是無效的webapi.
二、JsonObject 來源於 Maticsoft.Json.dll
其實用的多了。就會感受兩個並無太大的區別。可是若是你只是爲了處理數據的話,採用webapi是比較好的選擇,由於 MVC 框架負責的東西太多了,咱們能夠說它是一個重量級的框架,而webapi是個輕量級的框架。
webservice 和webapi區別:
一、webservice是基於SOAP協議的,數據格式是XML,webapi遵循的http協議,它的Response能夠被而Web API的MediaTypeFormatter轉換成Json、XML 或者任何你想轉換的格式。
二、webservice它只能部署在IIS上,而webapi能夠寄宿在不一樣的宿主上(寄宿的本質就是利用一個具體的應用程序爲Web Api提供一個運行的環境,並解決請求的接收和響應的回覆),如Web Host,Self Host方式
三、webservice 也能夠經過ajax訪問:
// 若要容許使用 ASP.NET AJAX 從腳本中調用此 Web 服務,請取消註釋如下 行。 [System.Web.Script.Services.ScriptService]
可是須要注意的是:傳參數方面的區別: data: "{'paraStu':{'NAME':'測0813','SEX':'男'}}", 而webapi的參數; data: {'NAME':'測0813','SEX':'男'},
也就是webservice在data裏面必須用參數名paraStu進行賦值,而webapi和mvc模式下的是不須要的。二者均可以直接用實體接參數
四、webapi無狀態,相對webservice更輕量級。webapi支持如get,post等http操做,而且對限制帶寬的設備,好比智能手機等支持的很好
這樣對比的話webservice貌似並很差用。可是咱們爲何要用它呢,理由以下:
一、很好的跨編程語言和跨操做系統
二、可移植性:傳統的WebService只是利用了HTTP通道,進行獨立的交互,可是這個交互協議能夠移植到其餘協議下運做
因此綜上所述。MVC接口、webapi、webservice三者各有優缺點,在實際應用中,要綜合考慮本身的實際用途,選擇最合適的實現方式,能夠事半功倍。