关于《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 ...
随机推荐
- .NET Core系列 :3 、使用多个项目
通过前面的两篇文章,我们已经知道如何创建新的项目,如何生成并运行我们的应用程序,也知道(大致) project.json 文件中的内容是什么意思.但大多数项目往往也需要多个项目或引用的类库.我们要创建 ...
- 最新 去掉 Chrome 新标签页的8个缩略图
chrome的新标签页的8个缩略图实在让人不爽,网上找了一些去掉这个略缩图的方法,其中很多已经失效.不过其中一个插件虽然按照原来的方法已经不能用了,但是稍微变通一下仍然是可以用的(本方法于2017.1 ...
- C# i=0;i=i++,i的值是多少?
昨天看群里dalao们聊天,有一个人出来问这个问题 这个题应该是挺常见的 int i = 0, t; for(t = 0;t <= 5;t++) { ...
- .net Elasticsearch 学习入门笔记
一. es安装相关1.elasticsearch安装 运行http://localhost:9200/2.head插件3.bigdesk插件安装(安装细节百度:windows elasticsear ...
- Objective-C枚举的几种定义方式与使用
假设我们需要表示网络连接状态,可以用下列枚举表示: enum CSConnectionState { CSConnectionStateDisconnected, CSConnectionStateC ...
- [数据结构]——链表(list)、队列(queue)和栈(stack)
在前面几篇博文中曾经提到链表(list).队列(queue)和(stack),为了更加系统化,这里统一介绍着三种数据结构及相应实现. 1)链表 首先回想一下基本的数据类型,当需要存储多个相同类型的数据 ...
- MFC中成员变量的声明顺序与析构顺序
第一次用博客,第一篇随笔,就写今天遇到的一个问题吧. 在VS2008的MFC对话框程序,窗口成员变量的声明顺序与其析构顺序相反,即,先声明的变量后析构,后声明的变量先析构.未在其他模式下测试. cla ...
- celery使用的一些小坑和技巧(非从无到有的过程)
纯粹是记录一下自己在刚开始使用的时候遇到的一些坑,以及自己是怎样通过配合redis来解决问题的.文章分为三个部分,一是怎样跑起来,并且怎样监控相关的队列和任务:二是遇到的几个坑:三是给一些自己配合re ...
- javaScript生成二维码(支持中文,生成logo)
资料搜索 选择star最多的两个 第一个就是用的比较多的jquery.qrcode.js(但不支持中文,不能带logo)啦,第二个支持ie6+,支持中文,根据第二个源代码,使得,jquery.qrco ...
- 高仿it之家新闻客户端源码
仿it之家新闻客户端界面,数据为本地假数据.仅实现了新闻模块的功能. 源码下载:http://code.662p.com/list/11_1.html 详细说明:http://android.662p ...