mvc接口、webapi、webservice 對比

mvc接口、webapi、webservice 對比

最近做了很多項目,也同時使用了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個參數的時候,可以用

1
2
3
4
5
6
$.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三者各有優缺點,在實際應用中,要綜合考慮自己的實際用途,選擇最合適的實現方式,可以事半功倍。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章