mvc接口、webapi、webservice 對比

最近作了不少項目,也同時使用了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三者各有優缺點,在實際應用中,要綜合考慮本身的實際用途,選擇最合適的實現方式,能夠事半功倍。

相關文章
相關標籤/搜索