• 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三者各有优缺点,在实际应用中,要综合考虑自己的实际用途,选择最合适的实现方式,可以事半功倍。

  • 相关阅读:
    iaas,paas,saas理解
    July 06th. 2018, Week 27th. Friday
    July 05th. 2018, Week 27th. Thursday
    July 04th. 2018, Week 27th. Wednesday
    July 03rd. 2018, Week 27th. Tuesday
    July 02nd. 2018, Week 27th. Monday
    July 01st. 2018, Week 27th. Sunday
    June 30th. 2018, Week 26th. Saturday
    June 29th. 2018, Week 26th. Friday
    June 28th. 2018, Week 26th. Thursday
  • 原文地址:https://www.cnblogs.com/zhoufangcheng04050227/p/10579541.html
Copyright © 2020-2023  润新知