客户有一个系统,经常要连上我方,查询数据 以前的作法是给对方一个账号,让他可以连上我们的DB来查询. 所以,早期的同仁,真的给他们DB链接字符串 客户的Windows程序.网站就真的靠这么危险的方式,连上我们公司的DB. 但怎么想都觉得危险,而且...... 如果对方SQL指令乱下,把效能搞得更烂,岂不是惨兮兮? 如果对方不小心,配置文件被偷走,看到我方DB Connection String怎么办? 几年前的 Internet还没有那么大的带宽,所以还得种种限制,避免他们一次查询太多数据 我接…
REST不是一个标准,而是一种软件应用架构风格.基于SOAP的Web服务采用RPC架构,如果说RPC是一种面向操作的架构风格,而REST则是一种面向资源的架构风格.REST是目前业界更为推崇的构建新一代Web服务(或者Web API)的架构风格.由于REST仅仅是一种价格风格,所以它是与具体的技术平台无关的,也就是说采用REST架构的应用未必一定建立在Web之上,所以在正式介绍REST之前,我们先来简单认识一下Web. 目录 一.TCP/IP与HTTP 二.Web资源       媒体类型   …
目录 ModelBinder ModelBinderProvider 不同类型的Model绑定 简单类型 复杂类型 其他类型 ModelBinder ModelBinder是Model绑定的核心. public interface IModelBinder { //绑定Model方法,返回绑定是否成功 bool BindModel(HttpActionContext actionContext, ModelBindingContext bindingContext); } ModelBindin…
目录 解决什么问题 Model元数据解析 复杂类型 ValueProvider ValueProviderFactory 解决什么问题 Model: Action方法上的参数 Model绑定: 对Action方法参数绑定 通过2个实例说明它的作用 定义控制器和特性路由 [RoutePrefix("demo")] public class DemoController : ApiController { [Route("get/{x?}/{y?}/{z?}")] pu…
目录 HttpController 创建HttpController IAssembliesResolver IHttpControllerTypeResolver HttpControllerTypeCache IHttpControllerSelector ServicesContainer 从上节我们知道,在消息管道中,最终在HttpControllerDispatcher的SendAsync方法中会创建IHttpController. HttpController 我们先看看IHttpC…
目录 HttpMessageHandler Web Host模式处理过程 Self Host模式处理过程 HttpMessageHandler Web API处理管道由一系列HttpMessageHandler组成 public abstract class HttpMessageHandler : IDisposable { protected internal abstract Task<HttpResponseMessage> SendAsync(HttpRequestMessage r…
目录 ASP.NET 路由 注册路由 动态映射HttpHandler WebAPI 路由 注册路由 调用GetRouteData 2个路由系统衔接 GlobalConfiguration HostedHttpRoute 补充 路由是进入Web API的第一扇门.目的用于确定Controller名称.Action名称.路由参数. ASP.NET 路由 注册路由 在ASP.NET中注册路由的方式: RouteCollection.MapPageRoute() 添加1个完整的路由: var defau…
原文:http://www.cnblogs.com/artech/p/restful-web-api-01.html REST不是一个标准,而是一种软件应用架构风格.基于SOAP的Web服务采用RPC架构,如果说RPC是一种面向操作的架构风格,而REST则是一种面向资源的架构风格.REST是目前业界更为推崇的构建新一代Web服务(或者Web API)的架构风格.由于REST仅仅是一种价格风格,所以它是与具体的技术平台无关的,也就是说采用REST架构的应用未必一定建立在Web之上,所以在正式介绍R…
目录 1. 特性路由注册 2. 路由解析 - 生成DataTokens - 选择HttpController - 选择Action 特性路由的目的在于更好的提供restful架构的接口,最近好忙(懒),所以更新速度慢. 特性路由注册 [Route(模板)] :定义特性路由模板 普通变量 a/b/{c} 缺省变量 a/b/{c=d} 变量约束 a/b/{c:int:range(10,20)} 通配符 a/b/{*c:datetime} [RoutePrefix("api/demo")]…
目录 ApiController HttpActionDescriptor IHttpActionSelector ApiController 在上节中,讲到如何选择并激活对应的IHttpController,而一般我们在开发中使用的是ApiController public abstract class ApiController : IHttpController, IDisposable { public virtual Task<HttpResponseMessage> Execute…