1.1 什么是ASP.NET / WebAPI / MVC?
CSFramework.WebApi服务端开发框架
WebApi后台框架
WebApi框架
原创软件@csframework.com
1.1 ASP.NET WebAPI
ASP.NET Web API 是一种基于Web应用程序接口的框架(API是Application Programming Interface的缩写),用于轻松构建基于HTTP协议支持多种跨平台客户端(包括浏览器和移动设备)访问的服务端程序。
ASP.NET Web API 是一种用于在 .NET Framework 平台上构建Web应用程序服务器的理想平台。具有良好的接口封装以及跨平台客户端存取数据等优点,统一使用JSON或XML数据格式,在智能移动客户端或手机APP软件产品领域占用巨大市场。
1.2 服务端 (Server Side)
服务端Web API是一个编程接口,由一个或多个公开暴露的端点(Endpoints或API接口)组成,通过定义Request-Response(请求-响应)消息系统的机制进行通信,消息格式通常使用JSON或XML,通过HTTP协议访问Web服务器。
1.3 端点 (Endpoints)
端点是与服务器端Web API进行交互的非常重要的环节,端点指定了可以被第三方软件通过HTTP请求访问的URI地址。端点必须是静态的,如果网络资源的位置(URI)经常发生变化,与其交互的软件功能将无法正常访问,之前编写的软件功能将会中断和失效。由于API提供者希望更新他们的Web API提供更多的服务或升级产品,因此许多开发者引入了版本控制系统,最简单有效的方式是通过URI格式进行控制。例如URI:https://api.csframewotk.com/v1/tag/,URI的“/ v1 /”部分指定访问Web API的第一个版本,如果要更新到第二个版本,只需要把v1改成v2,这样同时支持使用第一个版本的客户端软件。
1.4 MVC简介
MVC全名是Model View Controller,既模型(Model)、视图(View)、控制器(Controller)的缩写,是一种软件设计典范。用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。
MVC 是一种创建Web应用程序的模式:
- Model(模型)表示应用程序核心部分,对应数据库的记录列表,用于处理应用程序数据逻辑的部分。
- View(视图)用于显示数据。是应用程序中处理数据显示的部分,通常视图是依据数据模型创建的。
- Controller(控制器)控制器负责从视图读取数据,控制用户输入,最终将数据持久化到数据库。
MVC 模式同时提供了对 HTML、CSS 和 JavaScript 的完全控制。MVC 分层有助于管理复杂的应用程序,例如,可以在不依赖业务逻辑的情况下专注于视图设计,同时也让应用程序的测试更加容易。MVC 分层同时也简化了分组开发,不同的开发人员可同时开发视图、控制器逻辑和业务逻辑。
1.5 MVC与WebApi
MVC的主要使用场景在于Web站点的开发,后端实现了一套完整的MVC开发框架,能提供简便的页面开发,默认使用Razor视图引擎,提供了后端html构造,用户可以方便地开发出Web站点。
WebAPI主要提供了一套RestfulAPI的开发框架,提供了较为完整的HTTP语义支持,主要用来做开放API,更抽象,更不注重View的生成。
在使用上区分MVC与WebAPI, MVC主要用于构建Web站点,WebAPI主要用于构建HTTP服务。自身实现上区分的话,两种框架主要是在Asp .Net的基础上进行改造,主要是针对HttpModule和HttpHandler做了扩展,实现方法是不一样的,比如说前者更像是在一层上建了第二层,引伸出更强大的路由机制,实现了诸如MvcHandler和ControllerFactory这种消息处理和后台控制器方法选择机制,Web Api除了扩展了前者以外,另外写出了一套独立的基于ASP.NET的消息处理管道,就像是借鉴原来房子的模型,重新设计出了另外一套别墅。这也很好地解释了为什么Web Api可以寄宿在不同的宿主上(寄宿的本质就是利用一个具体的应用程序为Web Api提供一个运行的环境,并解决请求的接收和响应的回复),如IIS Hosting、Self Hosting或Windows服务Hosting方式,与WCF承载是相似的。而MVC只能寄宿于IIS上(不考虑.NET Core),它们两者虽然都有Controller和Action,但是请求的实现和响应的回复机制也是不同的,比如说Web Api处理消息有两个核心类是HttpRequestMessage和HttpResponseMessage。这两种框架最多只能说是模式上类似,实现上还是有很大差别的。不过两者都是Asp .Net的组成成员,图上表现得很清楚了。
ASP.NET+MVC+WebApi+OWin+WebAPI三种承载方式