前言 最近开发了几个项目,用到了web api,也通过项目加深了对web api的理解.本文试图从内部原理讲解web api的本质.透过重重迷雾,看清本质,就能更好的把握和利用好web api. 1 Web API 的本质 1.1 交互说明 Web API 是基于http传输协议的函数调用.http是应用最广泛的传输协议,web服务端就实现了http服务器.由于web的流行,也带动了web服务器的完善和优化.web服务器的功能也不仅限于传输html文本,任何数据都可以通过文本传输(其实,图片,…
Visual Studio 2013 Preview - ASP.NET, MVC 5, Web API 2新功能搶先看 來自TechEd North America 2013的第一手消息 以下資訊均來自 Channel9 目前於北美 TechEd 活動影片,主要記錄 DEV-B314 這一場 Microsoft ASP.NET, Web, and Cloud Tools Preview 的筆記. Visual Studio 2013 Preview改良部分 以下將 Visual Studio…
Web API源码剖析之HttpServer 上一节我们讲述全局配置.本节将讲述全局配置的DefaultServer,它是一个HttpServer类型. 主要作用就是接受每一次请求,然后分发给消息处理程序链依次处理.从HttpServer定义可以看出,其本质是一个消息处理程序,其继承于DelegatingHandler.从其代码定义如下:      //参数为      public HttpServer(HttpConfiguration configuration, HttpMessageH…
Web API 源码剖析之默认配置(HttpConfiguration) 我们在上一节讲述了全局配置和初始化.本节我们将就全局配置的Configuration只读属性进行展开,她是一个类型为HttpConfiguration. 它在Web Api 主要为整个API 做一些最基础的工作,比如定义默认 路由表(Routes) 过滤器(Filters) 默认消息处理程序(MessageHandlers) 属性字典(Properties) 依赖注入解耦器(DependencyResolver) 错误处理…
Web API 源码剖析之默认消息处理程序链-->路由分发器(HttpRoutingDispatcher) 我们在上一节讲述了默认的DefaultServer(是一个类型为HttpServer的只读属性).本节将讲述DefaultHandler(是一个HttpMessageHandler的只读属性).在Web API 里默认是的一个HttpRoutingDispatcher类型,它继承于HttpMessageHandler.我们称之为路由分发器.它主要作用就是将处理从HttpServer传递过来…
Web API 源码剖析之全局配置 Web API  均指Asp.net Web API .本节讲述的是基于Web API 系统在寄宿于IIS. 本节主要讲述Web API全局配置.它是如何优雅的实现这个配置.做过MVC 都知道Global文件来初始化.Web API 本质上也是ASP.NET applications.所以也是在Global定义里一个GlobalConfiguration静态类.该类作用就是初始化ASP.NET applications.如下是GlobalConfigurati…
我们在上一节讲述了默认的DefaultServer(是一个类型为HttpServer的只读属性,详情请参考 Web API 源码剖析之全局配置).本节将讲述DefaultHandler(是一个HttpMessageHandler的只读属性).在Web API 里默认是的一个HttpRoutingDispatcher类型,它继承于HttpMessageHandler.我们称之为路由分发器.它主要作用就是将处理从HttpServer传递过来的请求.然后再将请求传递给HttpControllerDis…
(一)路由原理 (二)路由设计架构分析 RouteBase…
思考:为什么函数模板能够和函数重载放在一块.C++编译器是怎样提供函数模板机制的? demo 1 #include <cstdio> #include <iostream> using namespace std; // 1.cpp // g++ -S 1.cpp -o 1.s template <typename T> void myswap(T &a, T &b) { T c = 0; c = a; a = b; b = c; cout <&l…
上一篇我们剖析了Asp.Net路由系统,今天我们再来简单剖析一下Asp.Net Web API以WebHost方式部署时,Asp.Net Web API的路由系统内部是怎样实现的.还是以一个简单实例开头. 创建一个空的WebApi项目,在Global中注册路由信息: public class WebApiApplication : System.Web.HttpApplication { protected void Application_Start() { //注册路由 GlobalConf…