C# Owin初探 概念理解(一)

原文:C# Owin初探 概念理解(一)

本文是阅读网上大牛的文章总结而成。

目录

1.Owin定义

2.为什么要用Owin

3.作用

4.总结

1.Owin定义

Owin是Open Web Interface For .NET。也就是.Net开源的web接口,听起来口气有点大,值得我们下面深入了解。

2.为什么要用Owin

百度百科的CV大法

过去,IIS作为.NET开发者来说是最常用的Web Server(没有之一),源于微软产品的紧耦合关系,我们不得不将Website、Web Application、Web API等部署在IIS上,事实上在2010年前并没有什么不妥,但随着近些年来Web的发展,特别是移动互联网飞速发展,IIS作为Web Server已经暴露出他的不足了。主要体现在两个方面,ASP.NET (System.Web)紧耦合IIS,IIS紧耦合OS,这就意味着,我们的Web Framework必须部署在微软的操作系统上,难以跨平台

正是由于微软产品系紧耦合的关系,才造成跨平台上的不足,这也是被饱受诟病。所以我们需要OWIN来解耦,在面向对象的世界里,接口往往是解耦的关键,如下图所示:

使用OWIN,Web Framework不再依赖IIS和OS,这意味着你能使用任何你想的来替换IIS(比如:Katana或者Nowin),并且在必要时随时升级,而不是更新操作系统。当然,如果你需要的话,你可以构建自定义的宿主和Pipeline去处理Http请求。

这一切的改变都是由于OWIN的出现,他提供了明晰的规范以便我们快速灵活的去扩展Pipeline来处理Http请求,甚至可以不写任何一句代码来切换不同的Web Server,前提是这些Web Server遵循OWIN规范。

3.作用

Owin完全解耦了IIS,Owin可以在任何的服务器上使用。为什么呢?

它是web服务器的一个标准接口,借助这一接口使得web应用和服务器解耦。Owin在.Net web服务器和.Net web应用之间定义了一套标准的接口,其目的是为了实现服务器与应用之间的解耦。基于此标准,鼓励开发者开发简单、灵活的模块,从而推进.NET Web Development开源生态系统的发展。

OWIN定义了4层:

Host:主要负责应用程序的配置和启动进程,包括初始化OWIN Pipeline、运行Server。

Server:这是实际的Http Server,绑定套接字并监听的HTTP请求然后将Request和Response的Body、Header封装成符合OWIN规范的字典并发送到OWIN Middleware Pipeline中,最后Application为Response Data填充合适的字段输出。

Middleware:称之为中间件、组件,位于Server与Application之间,用来处理发送到Pipeline中的请求,这类组件可以是简单的Logger或者是复杂的Web Framework比如Web API、SignalR,只要Sever连接成功,Middleware中间件可以是任何实现应用程序委托的组件。

Application:这是具体的应用程序代码,可能在Web Framework之上。对于Web API、SignalR这类Web Framework中间件而言,我们仅仅是改变了他们的托管方式,而不是取代ASP.NET WEB API、SignalR原先的应用程序开发。所以该怎么开发就怎么开发,只不过我们将他们注册到OWIN Pipeline中去处理HTTP请求,成为OWIN管道的一部分,所以此处的Application即正在意义上的处理程序代码。

4.总结

OWIN的思想就是简单、灵活——通过要求OWIN中间件只依赖AppFun类型,为开发基于OWIN的中间件提供了的最低门槛。同时,通过使用环境字典在各个中间件之间进行信息的传递,而非传统ASP.NET(System.Web)中使用HttpContext贯穿ASP.NET整个生命周期来传递。

上面介绍了owin的概念,我们开始真正的使用它一下,看到底是怎么实现的:

C# Owin 创建与测试自己的中间件Middleware(二)

可以关注本人的公众号,多年经验的原创文章共享给大家。

原文地址:https://www.cnblogs.com/lonelyxmas/p/10217550.html

时间: 2024-10-15 19:08:27

C# Owin初探 概念理解(一)的相关文章

实现HTTPS系列第四弹之【TLS ,SSL等概念理解】

博文说明[前言]: 本文将通过个人口吻介绍TLS ,SSL,PKI等相关知识,在目前时间点[2017年5月21号]下,所掌握的技术水平有限,可能会存在不少知识理解不够深入或全面,望大家指出问题共同交流,在后续工作及学习中如发现本文内容与实际情况有所偏差,将会完善该博文内容. 1.第一弹:实现HTTPS系列第一弹之[http,https,www,web等概念简介] 博文链接:http://watchmen.blog.51cto.com/6091957/1922919 2.第二弹:实现HTTPS系列

基本概念理解(二)

基本概念理解 1.bool类型表示真值true和false.可以将算数类型的任何值赋值给bool独享.0值算数类型表示false,任何非0的值都表示true(为什么经常搞反,汗!).也可以直接用false或者true给bool型变量赋值. 2.C++建议每个内置变量都进行初始化.虽然这样做不是必须的,但是会更加容易和安全. 3.和其它变量不同,除非特别说明,在全局作用域中声明的const变量是定义该对象的文件的局部变量.此变量只存在于那个文件中,不能被其它文件访问. 通过指定const变量为ex

计算机网络入门概念理解

计算机网络入门概念理解 下面我来讲解一些关于网络的基础知识,这些知识有利于帮助我们今后学习TCP/IP协议相关知识打好基础. 诞生背景 首先从网络的诞生背景讲起.一开始计算机的运作是独立存在的(独立模式),每个计算机有各自的业务,用户需要在不同的计算机上执行特定的业务逻辑.用户采用卡带的方式将程序和数据输入计算机让计算机进行运算.之后出现了分时系统,分时系统具有"多终端,一主机 "的特点,由于分时系统CPU时间片轮转的特性让用户有了"一人一机"的错觉.70年代后计算

基本概念理解

基本概念理解: 1.编译器:就是将“一种语言(通常为高级语言)”翻译为“另一种语言(通常为低级语言)”的程序.一个现代编译器的主要工作流程:源代码 (source code) → 预处理器 (preprocessor) → 编译器 (compiler) → 目标代码 (object code) → 链接器(Linker) → 可执行程序 (executables) 2.集成开发环境(IDE,Integrated Development Environment )是用于提供程序开发环境的应用程序,

Zigbee 概念理解

1.IEEE802.15.4协议 IEEE802.15.4工作组致力于无线个人区域网络(wireless personal area network, WPAN)的标准化工作,制定的IEEE802.15.4标准规定了WPAN网络的物理层(PHY)和媒体访问层(MAC) 2.ZigBee协议 ZigBee协议由ZigBee Alliance制定. ZigBee协议在IEEE802.15.4标准规定的WPAN网络的物理层(PHY)和媒体访问层(MAC)的基础上又增加了传输层(TL).网络层(NWK)

eeplat开发平台概念理解

最近在学习eeplat的开发,发现当中有很多概念实在让人容易忘记,所以谨以此文记录一笔. eeplat的开发文档里说eeplat是元数据驱动的,这个元数据什么意思,在我理解就是后台的数据库里面的业务表.每个业务都由后台的业务数据库表驱动.比如说我们要管理人员信息,者可以看作是一个业务.那么支撑这个业务的肯定会有一张或好几张数据表,简单的就是一张,比如这个例子.我们会建立一个员工的数据表,里面包括员工的各种信息,包括名字,年龄,编号等等. 其他的概念还有服务,其实就是一些对后台数据的操作,比如 增

Kubernetes重要概念理解

Kubernetes重要概念理解 kubernetes是目前最主流的容器编排工具,是下一代分布式架构的王者.2018年的kubernetes第一个版本1.10已经发布.下面整理一下,kubernetes的一些基本概念. kubernetes将集群中的机器划分为Master节点和工作节点(Node).其中Master节点上面运行着管理集群的一组进程kube-apiserver.kube-controller-manager,和kube-schedule,还有etcd服务.node作为集群中的工作节

OWIN初探

什么是 OWIN ? OWIN 的全称是 "Open Web Interface for .NET", OWIN 在 .NET Web 服务器和 .NET Web 应用之间定义了一套标准的接口, 其目的是为了实现服务器与应用之间的解耦, 鼓励为 .NET Web 应用开发简单模块. OWIN 是一个开源开放的标准, 有助于建设 .NET 开发的开源生态环境,OWIN 定义了如下几个概念: 服务器 (Server) HTTP 服务器直接与客户端交互, 并用 OWIN 语义处理请求,服务器

caffe的一些概念理解

有一天,师姐问我,epoch和iteration有什么区别?我一时语塞,竟然遍寻百度而不得,最后在stackoverflow上找到一个我认为比较靠谱的答案,虽然它不是最高票,但是是最好理解的,深得我心.原答案在此: http://stackoverflow.com/questions/4752626/epoch-vs-iteration-when-training-neural-networks 简单起见,我用自己的语言描述一下: epoch--使用整个训练样本集传播一次,一次传播 = 一次前向