关于《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 ...
随机推荐
- Asp.net Core中使用Session
前言 2017年就这么悄无声息的开始了,2017年对我来说又是特别重要的一年. 元旦放假在家写了个Asp.net Core验证码登录, 做demo的过程中遇到两个小问题,第一是在Asp.net Cor ...
- Web性能优化:图片优化
程序员都是懒孩子,想直接看自动优化的点:传送门 我自己的Blog:http://cabbit.me/web-image-optimization/ HTTP Archieve有个统计,图片内容已经占到 ...
- redis集成到Springmvc中及使用实例
redis是现在主流的缓存工具了,因为使用简单.高效且对服务器要求较小,用于大数据量下的缓存 spring也提供了对redis的支持: org.springframework.data.redis.c ...
- DDD 领域驱动设计-两个实体的碰撞火花
上一篇:<DDD 领域驱动设计-领域模型中的用户设计?> 开源地址:https://github.com/yuezhongxin/CNBlogs.Apply.Sample(代码已更新) 在 ...
- # PHP - 使用PHPMailer发邮件
PHPMailer支持多种邮件发送方式,使用起来非常简单 1.下载PHPMailer https://github.com/PHPMailer/PHPMailer,下载完成加压后, 把下边的两个文件复 ...
- jquery实现下拉框多选
一.说明 本文是利用EasyUI实现下拉框多选功能,在ComboxTree其原有的基础上对样式进行了改进,样式表已上传demo,代码如下 二.代码 <!DOCTYPE html PUBLIC & ...
- Linux监控工具介绍系列——vmstat
说来惭愧,玩Linux这么久了,居然没有玩转vmstat这个命令,对很多指标的具体意义都有点模糊不清,花了点时间好好学习.整理一下这个命令的相关资料.因为这个命令确实比较重要,而且频繁用到. 命令 ...
- BZOJ 4453: cys就是要拿英魂![后缀数组 ST表 单调栈类似物]
4453: cys就是要拿英魂! Time Limit: 3 Sec Memory Limit: 128 MBSubmit: 90 Solved: 46[Submit][Status][Discu ...
- Centos、Ubuntu 安装 Mono、Jexus
Mono是.NET的跨平台实现 在众多关于语言的争论中,.NET一直被以不能跨平台而诟病,Mono改变了这一现状. 有人当心Mono会涉及版权啥的问题.高深的偶不懂,不过我觉得Unity3D都能用,为 ...
- CSharpGL(10)两个纹理叠加
CSharpGL(10)两个纹理叠加 本文很简单,只说明如何用shader实现叠加两个纹理的效果. 另外,最近CSharpGL对渲染框架做了修改,清理一些别扭的内容(DoRender()前后的事件都去 ...