(.NET Framework)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個參數的時候,可以用

$.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>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM