C#进阶之WebAPI(一)

最近出去面试,被问到关于WebAPI的知识,由于项目中没有单独写过WebAPI,使用的时候是和mvc结合在一块儿使用的,因此,在个人印象中WebAPI和mvc是差很少的,这种答案固然不能让人满意了,因而今天作个关于WebAPI的总结,顺便梳理一下相关知识。web

那么首先第一点:什么是WebAPI?面试

    首先咱们了解一下.net framework 的框架构成,json

    

    能够看到,WebAPI和mvc同属于B/S模板框架的一种,官方对于WebApi的定义是:WebAPI是一个框架,能够轻松构建HTTP服务,覆盖普遍的客户端,包括浏览器和移动设备,WebAPI是在.NetFramwork上构建RESTful程序的理想平台。api

    这里有必要解释一下什么是RESTful: RESTful是一种设计风格,REST中的 get、post、put、delete来进行数据的增删改查,若是开发人员的应用程序符合RESTful原则,那他的服务可被称之为“Restful风格应用服务”浏览器

 

而后咱们了解一下:为何要使用WebAPI?缓存

    在解释这个问题以前咱们须要首先知道一下.net为外部提供接口的方式有哪些?服务器

    答:WCF、WebServiceWebAp、通常处理程序。架构

      那来了解一下他们之间的区别:mvc

        WebService框架

            1:基于soap协议,数据格式是xml、

            2:只支持http协议、

            3:不是开源的,可是能够被任意一个了解xml的人使用、

            4:只能部署在iis上。

        WCF

            1:基于soap协议,数据格式是xml、

            2:WCF是webservice的进化版,支持各类各样的协议,像TCP、http、https、NamedPipes、MSMQ等、

            3:不是开源的,可是能够被任意一个了解xml的人使用、

            4:能够部署在应用程序中、IIS上或者Windows服务中。

        WebAPI

            1:是一个简单的构建http服务的新框架、

            2:在.net平台上WebAPI是一个开源的、理想的、构建RESTful服务的技术、

            3:可使用http的全部特色,(好比URIs、request/response头、缓存、版本控制、多种内容格式)、

            4:支持mvc的特性,像路由、控制器、action、fiter、模型绑定、控制反转、依赖注入、单元测试、

            5:能够部署在应用程序中、IIS上、

            6:是一个轻量级的框架,对各类终端的支持都很好、

            7:Response能够被webAPI的MediaTypeFormatter转换成json、XML或者任何你想转换的格式。

        通常处理程序

            通常处理程序其实就是和页面处理程序相区分开的,由于实现的是IhttpHandler接口,并且不须要继承自Page类。因此没有那么多的事件须要处理,没必要消耗太多资源,因此性能方面要比aspx高。

那么回到这个问题,为何要使用WebApi?

        当你遇到下面这些状况的时候,就能够考虑使用webAPI来构建你的服务了;

            1:须要webservice可是不须要soap、

            2:须要在已有的WCF服务基础上创建non-soap-based http服务、

            3:只想发布一些简单的http服务,不想使用相对复杂的wcf配置、

            4:发布的服务会被限制带宽的设备访问、

            5:但愿使用开源框架,关键时刻能够本身调试或者自定义一下框架。

 

最后总结一下WebAPI和MVC之间的区别:WebAPI和MVC之间有什么区别?

        相信使用过mvc和webapi的同窗都会以为这二者太类似了,使用起来也差很少,可是既然是两个框架,那确定是有区别的,我对WebAPI和MVC的区别作了一下总结:

            1:MVC主要是用来构建网站的,既关心数据也关心页面展现,而WebAPI只关心数据、

            2:WebAPI支持格式协商,客户端能够经过Accept header通知服务器指望的格式、

            3:WebApi支持Self Host,MVC目前不支持、

            4:WebAPI经过不一样的http verb表达不一样的动做(CRUD),MVC则经过Action名字表达动做、

            5:WebAPI内建于System.Web.Http 命名空间下,而MVC位于Systm.Web.Mvc命名空间下,所以路由等有些许不一样、

            6:WebAPI很是适合构建移动客户端服务。

相关文章
相关标签/搜索