关于《Linux.NET学习手记(8)》的补充说明
早前的一两天《Linux.NET学习手记(8)》发布了,这一篇主要是讲述OWIN框架与OwinHost之间如何根据OWIN协议进行通信构成一套完整的系统。文中我们还直接学习如何直接操作OWIN字典,从OwinHost中拿数据进行直接使用。
不过文章发布之后,有朋友提示我,文章出了点细节上的问题,我细细度量之后,发现果然出了情况,并且还不是一个无关紧要的小问题,本打算把那篇文章下线,待修改好之后再重新上线,网友“王爷”提醒到,可以为文章专门写上一篇补充文,这样颇有手稿的感觉。考量之下我接受了王爷的建议,“Linux.NET学习手记”本就是个人学习的记录,也算得上是手稿的一种。于是就有了这一篇的补充文。
《Linux.NET学习手记(8)》中主要犯了以下这几个错误:
1、误将“Microsoft.OWIN”当“OWIN”,使“OWIN”的概念扩大。
2、“Middleware“其实并不是OWIN必须的
3、适配器不是这样用的
1、“Microsoft.OWIN”不等于“OWIN”
在《Linux.NET学习手记(8)》中,虽然文中并没有任何一个地方指出“Microsoft.OWIN”是“OWIN”这么一个说法,但是文章的写作手法中,却非常容易的把读者引入歧途,让读者误以为“OWIN”其实就是“Microsoft.OWIN”。什么是“OWIN”,"OWIN"说白了就是一个协议,一个字典,里面包含了Environment,“OWIN.dll”其实也不过是一个接口,没有更多。所有根据“OWIN”所派生出来的东西已经不是OWIN自己了。
因此,在《Linux.NET学习手记(8)》应把所有的“OWIN”改为“Microsoft.OWIN”,指明这是针对“Microsoft.OWIN”所诞生出的东西。
2、“Middleware”其实是“Microsoft.OWIN”的东西
在这里,我需要上一个图,说说为什么在现有的OWIN框架中以及我也为何写作时发生误判:

如图所示,虽然OWIN协议并不属于任何的一方,但是出现得最早的关于OWIN协议的实现是微软的”Microsoft.OWIN“,因此目前许多的OWIN框架都是基于”Microsoft.OWIN“来实现。而”Startup“、”Configuration“、”Middleware“等组件是”Microsoft.OWIN“所提出的知识点,因此这些OWIN框架也就自然而然的会出现这一类的事物来。
因此,我们文中说到”转动我们的钥匙“,其实是转动”Microsoft.OWIN“的钥匙,而不是整个”OWIN“大门的钥匙。
3、适配器的真正用法
上一节中已经说得非常清楚了,目前现存的OWIN框架都是针对“Microsoft.OWIN”所缔造出来的框架,因此这些OWIN框架与Katana之间是无缝的连接,根本就无需适配器这一类型的玩意,而Jexus则不同,适配器这一说法是Jexus针对这些基于“Microsoft.OWIN”所实现出来的OWIN框架能够在Jexus.OwinHost中使用所诞生出的组件(感谢Jexus原作者的提醒),下面附上宇内流云给出的概念图:

虽然即使不了解OWIN本身,对于日常的开发没有太大的影响(除非涉及到直接操作OWIN字典这方面),框架还是照样的用,项目还是照样的开发。但是,我个人对于知识的准确性要求比较高,需要做到一丝不苟。如果更多的朋友发现有其他错误的,也欢迎指出更正。谢谢。
关于《Linux.NET学习手记(8)》的补充说明的更多相关文章
- Linux.NET学习手记(7)
前一篇中,我们简单的讲述了下如何在Linux.NET中部署第一个ASP.NET MVC 5.0的程序.而目前微软已经提出OWIN并致力于发展VNext,接下来系列中,我们将会向OWIN方向转战. 早在 ...
- Linux.NET学习手记(8)
上一回合中,我们讲解了Linux.NET面对OWIN需要做出的准备,以及介绍了如何将两个支持OWIN协议的框架:SignalR以及NancyFX以OwinHost的方式部署到Linux.NET当中.这 ...
- Linux.NET学习手记(6)
各位读者大家好,好长一段时间没有更新文章了,自从参加工作之后,每天等待去做的工作没完没了,个人的时间也变得奢侈起来,今后要尽量从中脱身,抽更多的时间来完成自己想做的事情(希望如此). 言归正传,上一回 ...
- Linux.NET实战手记—自己动手改泥鳅(上)
各位读者大家好,不知各位读者有否阅读在下的前一个系列<Linux.NET 学习手记>,在前一个系列中,我们从Linux中Mono的编译安装开始,到Jexus服务器的介绍,以及如何在Linu ...
- linux内核学习之六 进程创建过程学习
一 关于linux进程概念的补充 关于进程的基本概念这里不多说,把自己的学习所得作一些补充: 1. 在linux内核中,系统最多可以有64个进程同时存在. 2.linux进程包含的关键要素:一段可执行 ...
- Linux 第一次学习笔记
一.Linux 为何物 Linux 就是一个操作系统,就像你多少已经了解的 Windows(xp,7,8)和 Max OS ,至于操作系统是什么,就不用过多解释了,如果你学习过前面的入门课程,应该会有 ...
- Linux 内核学习的经典书籍及途径
from:http://www.zhihu.com/question/19606660 知乎 Linux 内核学习的经典书籍及途径?修改 修改 写补充说明 举报 添加评论 分享 • 邀请回答 ...
- 关于Linux内核学习的误区以及相关书籍介绍
http://www.hzlitai.com.cn/article/ARM9-article/system/1605.html 写给Linux内核新手-关于Linux内核学习的误区 先说句正经的:其实 ...
- 以Qemu模拟Linux,学习Linux内核
文章名称:以Qemu模拟Linux,学习Linux内核作 者:five_cent文章地址:http://www.cnblogs.com/senix/archive/2013/02/21/29 ...
随机推荐
- Security Policy:行级安全(Row-Level Security)
行级安全RLS(Row-Level Security)是在数据行级别上控制用户的访问,控制用户只能访问数据库表的特定数据行.断言是逻辑表达式,在SQL Server 2016中,RLS是基于安全断言( ...
- Redis/HBase/Tair比较
KV系统对比表 对比维度 Redis Redis Cluster Medis Hbase Tair 访问模式 支持Value大小 理论上不超过1GB(建议不超过1MB) 理论上可配置(默认配置1 ...
- C#为IE编写BHO插件心得
啥是BHO,其实大家都用过,没听过只是没在意而已,来张图你就知道是什么了 是不是很熟悉,就是这么个玩意~~ 先说说我要用来干嘛~我们有个库,里面数据很全面,但是某个部门需要在第三方的B/S系统录入某些 ...
- 开源一款简单清爽的日历组件,JavaScript版的
源码会在最后给出地址,需要的朋友自己去下载.最近项目需要做一个日程安排的功能,就是点击日历的某一天弹出一个录入页面,填完信息后保存当天的日程安排.有日程的日期会有不同的标记(比如加一个背景色啥的).网 ...
- linux centos中添加删除修改环境变量,设置java环境变量
前言 安装完软件必要添加环境变量.指令很少,然而长时间不写就会不自信:我写的对吗?于是百度开始,于是发现又是各有千秋.好吧,好记星不如烂笔头.当然,最重要的是,百度出来的都他妈的是如何添加环境变量,只 ...
- PHP设计模式(八)桥接模式(Bridge For PHP)
一.概述 桥接模式:将两个原本不相关的类结合在一起,然后利用两个类中的方法和属性,输出一份新的结果. 二.案例 1.模拟毛笔(转) 需求:现在需要准备三种粗细(大中小),并且有五种颜色的比 如果使用蜡 ...
- Android中的沉浸式状态栏效果
无意间了解到沉浸式状态栏,感觉贼拉的高大上,于是就是试着去了解一下,就有了这篇文章.下面就来了解一下啥叫沉浸式状态栏.传统的手机状态栏是呈现出黑色条状的,有的和手机主界面有很明显的区别.这一样就在一定 ...
- DIP原则、IoC以及DI
一.DIP原则 高层模块不应该依赖于底层模块,二者都应该依赖于抽象. 抽象不应该依赖于细节,细节应该依赖于抽象. 该原则理解起来稍微有点抽象,我们可以将该原则通俗的理解为:"依赖于抽象&qu ...
- 【完全开源】知乎日报UWP版:项目结构说明、关键源代码解释
目录 说明 项目结构 关键代码 演示视频 说明 上一篇博客将源码放出来了,但是并没有做过多的介绍,所以如果自己硬看可能需要花费很长的时间,尤其这些代码并不是自己写的.项目不算复杂但是也不算简单,这篇文 ...
- CSharpGL(10)两个纹理叠加
CSharpGL(10)两个纹理叠加 本文很简单,只说明如何用shader实现叠加两个纹理的效果. 另外,最近CSharpGL对渲染框架做了修改,清理一些别扭的内容(DoRender()前后的事件都去 ...