OWIN– 解耦,协作和开放
OWIN的理解和实践(一) – 解耦,协作和开放
概述
OWIN的全称是Open Web Interface For .Net, 是MS在VS2013期间引入的全新的概念, 网上已经有不少的关于它的信息, 这里我就谈下我自己的理解:
- OWIN是一种规范和标准, 不代表特定技术. MS最新出现的一些新的技术, 比如Kanata, Identity, SignalR, 它们只是基于OWIN的不同实现, 这个在以后章节会进一步讨论.
- OWIN的核心理念是解耦,协作和开放---这和MS以前的风格大相径庭,值得引起大家的注意。
- OWIN是MS未来Web开发的方向,想跟着MS路线继续开发Web应用,OWIN是大势所趋。
4层理念
说到解耦,一个比较明确的理念是,OWIN吧一个Web应用的解决方案解耦为4层:
- Host: 宿主
- Server: 服务器
- Middleware: 中间件
- Application: 具体应用
下面是一个比较简略的图例:

如果抛开所有重量级,企业级需求不谈,我们返璞归真,可以这样理解这4层:
- Host: 应用程序的主进程,主要负责启动,关闭Server,为Server加载各种Middleware组件,当然同时也装载Application.
- Server: 一般来说,我们的Web应用还是基于HTTP协议来开发的,而这里的Server其本质就是一个空壳的Http Server,监听端口,接收Http Request,返回Http Response,不过,如果没有任何中间件的参与,我们应该认为,Server只会返回一个空的Response给请求者而已。
- Middleware: 装载在在Server中的Middleware提供各种功能, 处理Request, 然后通过某种方式, 返回Reponses.当然, 某些Middleware也可以不返回任何Response, 而仅仅是做内部处理, 比如实现Session的Middleware.
- Application: 开发者真正关注的业务系统内容, Reponses中真正业务内容的提供者.
意义和远景
下面提下OWIN对我们未来Web开发带来的变化,来帮助我们进一步理解这个规范的意义:
- OWIN规则使得各层能够解耦, 我们完全可以把Host, Server, Middleware 和Application交给不同的开发者来完成, 然后完成整合.
- 只要基于同一的OWIN的标准,各层间不同实现的协作更加便利,比如,除Application层必须自行开发以外, Host我们可以选择IIS, 也可以选择任何进程,包括在Mono支持下的其他操作系统的进程; Server目前有MS的Kanata ,Linux上的Jexus; 而Middleware则有更加广泛的选择,MS已经提供的WebApi, Identity, SignalR都已经是基于OWIN标准的中间件实现, 可以预见以后将有大量的第三方实现纷至沓来.
- 整个系统的实现更开放,目前大部分的OWIN实现都是独立而且开源的,开发团队可以根据自身项目的需要和技术特点,自行开发或者改造Host, Server或者Middleware, 而在一些不重要或者不擅长的场合选用第三方提供的实现.
目前来看,基于OWIN的整体解决方案尚未完全展开,而MS也将在下一代ASP.Net vNext版本中才能最终完善OWIN体系的实现.
不过, 基于OWIN标准的先行者的Kanata项目,目前已经到3.0.1版本,其中已经对Host - Hosting, Server – HttpListener, 静态文件系统 - Static Files , 日志 - Logging,安全和权限系统 - Security, 错误跟踪 – Diagnostics 有了相当规模的实现, 而大家耳熟能详的WebApi组件则早以和老朋友System.Web解耦,加入了OWIN的阵营. 另外,在OWIN框架下,开发者完全可以开发和架设自己的组件来满足实际的需求,以此看来,OWIN的解决方案其实已经初具雏形.
所以基于上面这些技术,下面我会进一步对Host, Server, Middleware, Application的一些具体实现进行一些讨论,以帮助大家对OWIN能够有更加深入的理解和思考
OWIN– 解耦,协作和开放的更多相关文章
- OWIN的理解和实践(一) – 解耦,协作和开放
概述 OWIN的全称是Open Web Interface For .Net, 是MS在VS2013期间引入的全新的概念, 网上已经有不少的关于它的信息, 这里我就谈下我自己的理解: OWIN是一种规 ...
- TinyFox v2.3.2 正式发布,跨平台的.NET OWIN WEB服务器
TinyFox 是一款按照 OWIN 协议开发的以支持各类 OWIN 应用为主要特征的高性能 WEB 服务器,2.3.2版已经正式发布,下载地址 http://www.linuxdot.net/. ...
- OWIN概述
关于OWIN OWIN defines a standard interface between .NET web servers and web applications. The goal of ...
- OWIN初探(转)
什么是 OWIN ? OWIN 的全称是 "Open Web Interface for .NET", OWIN 在 .NET Web 服务器和 .NET Web 应用之间定义了一 ...
- OWIN初探
什么是 OWIN ? OWIN 的全称是 "Open Web Interface for .NET", OWIN 在 .NET Web 服务器和 .NET Web 应用之间定义了一 ...
- 【云计算】IBM开放云架构
IBM 的开放云架构 通过改变业务和社会运行的方式,云计算开启了丰富的创新途径.开发人员现在正将记录系统与参与性系统相结合,一种新的基于云的应用程序风格正在出现:交互系统.这些应用程序要可持续发展,云 ...
- 通俗易懂,什么是.NET?什么是.NET Framework?什么是.NET Core? .Net Web开发技术栈
通俗易懂,什么是.NET?什么是.NET Framework?什么是.NET Core? 什么是.NET?什么是.NET Framework?本文将从上往下,循序渐进的介绍一系列相关.NET的概念 ...
- TinyFox 部署在CentOS7 中测试使用
一:TinyFox介绍 TinyFox 是一款支持OWIN标准的WEB应用的高性能的HTTP服务器,是Jexus Web Server的"姊妹篇".TinyFox本身的功能是htm ...
- .Net Web开发技术栈
有很多朋友有的因为兴趣,有的因为生计而走向了.Net中,有很多朋友想学,但是又不知道怎么学,学什么,怎么系统的学,为此我以我微薄之力总结归纳写了一篇.Net web开发技术栈,以此帮助那些想学,却不知 ...
随机推荐
- Win10打不开chm文件的解决办法
在Win10系统中打开chm文件时,提示安全警告,如下图: 点击打开后,可以看到chm文件的目录大纲,但是点击任意目录其内容都是空白,如下图: 经过网络一通搜索,发现解决办法很简单,就是在上面的安装警 ...
- Socket规划中的局域网内测试
前面提到的Socket信息及文件传输软件,如何测试和使用它? 事实上仅仅要推断client及server的局域网连通就可以. 1.Server在cmd下输入 ipconfig/all获得IP地址或者本 ...
- 原产地政策,jsonp跨域
一.同源策略 同源策略(Same origin policy)是一种约定,它是浏览器最核心也最主要的安全功能,假设缺少了同源策略,则浏览器的正常功能可能都会受到影响.能够 ...
- 红帽/CentOS ext4无法格式化大分区 补充ext4格式化方式
普通情况下,XFS出现丢数据的情况为海量小文件IO场景.在该场景下,inode占用教大. 通过上文的方式进行格式化,inode数量较小.通过大量測试,能够使用例如以下方法提升mkfs.ext4后文件系 ...
- Code Forces 448C Painting Fence 贪婪的递归
略有上升称号,最近有很多问题,弥补啊,各类竞赛滥用,来不及做出了所有的冠军.这个话题 这是一个长期记忆的主题.这是不是太困难,基本技能更灵活的测试,每次我们来看看这个问题可以被删除,处理然后分段层,贪 ...
- 8.19! 今天我有18生日,点击阅读或顶部 尾随幸运的一天!生日知识!↓——【Badboy】
话说得生疼.我已经想到了17那年,那是一年的时间!我在这里7.24我认为这是我的生日 结果到处宣传 ,首页疑问发现自己是错的生日 按照农历计勒把我羞辱. 不依照原农历7.24的 今天的国家今天的日历 ...
- Codeforces Round #256 (Div. 2)——Multiplication Table
题目链接 题意: n*m的一个乘法表,从小到大排序后,输出第k个数 (1 ≤ n, m ≤ 5·105; 1 ≤ k ≤ n·m) 分析: 对于k之前的数,排名小于k:k之后的数大于,那么就能够採用 ...
- cocos2dx 使得单麻将(三)
cocos2dx 使得单麻将(三) 麻将逻辑4.得到手牌数据 我们已经保存了一个一维数组, 类似于一个表格,统计出全部牌相应的数量, 但我们如何得到当前手中是什么牌呢 //扑克转换 BYTE Swit ...
- UVa 208 - Firetruck 回溯+剪枝 数据
题意:构造出一张图,给出一个点,字典序输出所有从1到该点的路径. 裸搜会超时的题目,其实题目的数据特地设计得让图稠密但起点和终点却不相连,所以直接搜索过去会超时. 只要判断下起点和终点能不能相连就行了 ...
- GMSK调制仿真
GMSK 调制的的原理非常简单. 就是MSK调制前进行Gauss滤波. 在实现中有这样的方法,首先产生高斯系数,对称的上升陂和下降陂系数.输入一个符号,进行上采样,经过高斯滤波器,滤波器的输出做有符号 ...