最近作了不少项目,也同时使用了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三者各有优缺点,在实际应用中,要综合考虑本身的实际用途,选择最合适的实现方式,能够事半功倍。