关于《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 ...
随机推荐
- react组件的生命周期
写在前面: 阅读了多遍文章之后,自己总结了一个.一遍加强记忆,和日后回顾. 一.实例化(初始化) var Button = React.createClass({ getInitialState: f ...
- .net core快速上手
2014年11月12日的Connect ();开发者活动上宣布将.NET堆栈基于MIT协议开源,并且提供开源保证,托管在Github上.当时的版本与最终目标相距甚远,然而有一点可以肯定的是,这是一个与 ...
- Linux 江湖系列阶段性总结
引言 我使用 Linux 已经有很多年了,最开始接触 Linux 的时候是从 RedHat 9(没有 Enterprise),中途换过 N 个不同的发行版.多年前,我在 BlogJava 上面分享 J ...
- Sublime Text 3中文乱码解决方法以及安装包管理器方法
一般出现乱码是因为文本采用了GBK编码格式,Sublime Text默认不支持GBK编码. 安装包管理器 简单安装 使用Ctrl+`快捷键或者通过View->Show Console菜单打开命令 ...
- CSS3 3D立方体效果-transform也不过如此
CSS3系列已经学习了一段时间了,第一篇文章写了一些css3的奇技淫巧,原文戳这里,还获得了较多网友的支持,在此谢过各位,你们的支持是我写文章最大的动力^_^. 那么这一篇文章呢,主要是通过一个3D立 ...
- PHP代码优化
1 代码优化 1 尽量静态化 如果一个方法能被静态,那就声明它为静态的,速度可提高1/4,甚至我测试的时候,这个提高了近三倍. 当然了,这个测试方法需要在十万级以上次执行,效果才明显. 其实静态方法和 ...
- [干货来袭]C#6.0新特性
微软昨天发布了新的VS 2015 ..随之而来的还有很多很多东西... .NET新版本 ASP.NET新版本...等等..太多..实在没消化.. 分享一下也是昨天发布的新的C#6.0的部分新特性吧.. ...
- Hadoop伪分布式集群环境搭建
本教程讲述在单机环境下搭建Hadoop伪分布式集群环境,帮助初学者方便学习Hadoop相关知识. 首先安装Hadoop之前需要准备安装环境. 安装Centos6.5(64位).(操作系统再次不做过多描 ...
- centos tomcat安装
官网http://tomcat.apache.org/download-70.cgi下载zip的文件unzip apache-tomcat-7.0.54.zipmv apache-tomcat-7.0 ...
- Android连接网络打印机进行打印
首先这是网络打印工具类,通过Socket实现,多说一句,网络打印机端口号一般默认的是9100 package com.Ieasy.Tool; import android.annotation.Sup ...