【ASP.Net】SelfHost

我最近在开发一个web api的项目, 在研究的过程中,我发现有一种可以将web api寄宿到非web应用程序上面. 这种寄宿模式被称为self host模式.

对WCF有经验的人应该了解, WCF是一个基于消息的分布式通讯框架.消息借助客户端和服务端对等的终结点(EndPoint)来完成, 而终结点由经典的ABC(Address, Binding, Contract)三元素组成.

binding有什么作用? 这里面的binding其实是多个binding element对象的有序集合, 通过binding element, 可以创建出对应的channel licenser, 而通过channel licenser可以创建出对应的channel. channel则是实际去监听请求.

web api如果采用self host模式, 请求的监听是由一个类型为HttpBinding的binding对象创建的channel licenser管道完成的, 进行请求的接收和回复.

Binding存在的目的在于创建用于处理和传输消息的信道栈,组成信道栈的每一个Channel均对应着一个BindingElement,所以Binding本身处理消息的能力由其BindingElement的组成来决定,我们可以通过分析BindingElement的组成来了解消息最终是如何处理的。现在我们就来讨论一下ASP.NET Web API在Self Host模式下使用的HttpBinding由哪些BindingElement构成。

 下面是我画的一个思维导图, 关于self host

 

posted @ 2018-06-26 15:40  YanyuWu  阅读(193)  评论(0)    收藏  举报