最近做了很多項目,也同時使用了mvc的接口,webapi的接口,以及webservice 的接口。先兩兩對比如下:
mvc和webapi區別:
1、MVC是建站的一種框架,傾向於返回用戶的頁面請求;api傾向於返回用戶數據請求;
2、mvc直接繼承System.Web.Mvc.Controller; 而webapi繼承的是System.Web.Http.ApiController
3、MVC只能部署到IIS上,而webapi可以寄宿在不同的宿主上(寄宿的本質就是利用一個具體的應用程序為Web Api提供一個運行的環境,並解決請求的接收和響應的回復),如Web Host,Self Host方式
4、接參數方式不一樣:
mvc接口不管是get請求還是post請求都可以在方法名后面接參數形式,或者直接接對象方式,但是webapi接參數方式有點復雜,get請求也可以直接在方法后面接到參數。
但是post請求
(1)1個參數的時候,可以用
$.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)兩個以及兩個以上的參數,是不能用方法明后加參數形式直接接收。
可以用實體方式(這種方法比較推薦。因為在手機端調用接口的時候更好的使用)
5、返回結果的區別:
mvc返回System.Web.Mvc.JsonResult(return Json(model, System.Web.Mvc.JsonRequestBehavior.AllowGet)),在前段可以直接使用;而webapi想要直接使用,需要返回JsonObject,否則需要json.parse(obj)轉化
private JsonObject ModelToJson(Result result) { JsonObject obj = new JsonObject(); obj.Accumulate("code", result.code); obj.Accumulate("message", result.message); return obj; }
備注:
1、在新建webapi的時候,必須要添加webapi 控制器類。。不能直接新建個類,,然后改成繼承ApiController,否則是無效的webapi.
2、JsonObject 來源於 Maticsoft.Json.dll
其實用的多了。就會感覺兩個並沒有太大的區別。但是如果你只是為了處理數據的話,采用webapi是比較好的選擇,因為 MVC 框架負責的東西太多了,我們可以說它是一個重量級的框架,而webapi是個輕量級的框架。
webservice 和webapi區別:
1、webservice是基於SOAP協議的,數據格式是XML,webapi遵循的http協議,它的Response可以被而Web API的MediaTypeFormatter轉換成Json、XML 或者任何你想轉換的格式。
2、webservice它只能部署在IIS上,而webapi可以寄宿在不同的宿主上(寄宿的本質就是利用一個具體的應用程序為Web Api提供一個運行的環境,並解決請求的接收和響應的回復),如Web Host,Self Host方式
3、webservice 也可以通過ajax訪問:
1
2
|
// 若要允許使用 ASP.NET AJAX 從腳本中調用此 Web 服務,請取消注釋以下 行。
[System.Web.Script.Services.ScriptService]<br><br>
|
1
2
3
4
|
但是需要注意的是:傳參數方面的區別:
data:
"{'paraStu':{'NAME':'測0813','SEX':'男'}}"
,
而webapi的參數;
data: {
'NAME'
:
'測0813'
,
'SEX'
:
'男'
},
|
也就是webservice在data里面必須用參數名paraStu進行賦值,而webapi和mvc模式下的是不需要的。兩者都可以直接用實體接參數
4、webapi無狀態,相對webservice更輕量級。webapi支持如get,post等http操作,並且對限制帶寬的設備,比如智能手機等支持的很好
這樣對比的話webservice貌似並不好用。但是我們為什么要用它呢,理由如下:
1、很好的跨編程語言和跨操作系統
2、可移植性:傳統的WebService只是利用了HTTP通道,進行獨立的交互,但是這個交互協議可以移植到其他協議下運作
所以綜上所述。MVC接口、webapi、webservice三者各有優缺點,在實際應用中,要綜合考慮自己的實際用途,選擇最合適的實現方式,可以事半功倍。
來自 <https://www.cnblogs.com/highest/p/8269183.html>