早前的一两天《Linux.NET学习手记(8)》发布了,这一篇主要是讲述OWIN框架与OwinHost之间如何根据OWIN协议进行通讯构成一套完整的系统。文中咱们还直接学习如何直接操做OWIN字典,从OwinHost中拿数据进行直接使用。html
不过文章发布以后,有朋友提示我,文章出了点细节上的问题,我细细度量以后,发现果真出了状况,而且还不是一个可有可无的小问题,本打算把那篇文章下线,待修改好以后再从新上线,网友“王爷”提醒到,能够为文章专门写上一篇补充文,这样很有手稿的感受。考量之下我接受了王爷的建议,“Linux.NET学习手记”本就是我的学习的记录,也算得上是手稿的一种。因而就有了这一篇的补充文。框架
《Linux.NET学习手记(8)》中主要犯了如下这几个错误:学习
一、误将“Microsoft.OWIN”当“OWIN”,使“OWIN”的概念扩大。htm
二、“Middleware“其实并非OWIN必须的blog
三、适配器不是这样用的接口
一、“Microsoft.OWIN”不等于“OWIN”开发
在《Linux.NET学习手记(8)》中,虽然文中并无任何一个地方指出“Microsoft.OWIN”是“OWIN”这么一个说法,可是文章的写做手法中,却很是容易的把读者引入歧途,让读者误觉得“OWIN”其实就是“Microsoft.OWIN”。什么是“OWIN”,"OWIN"说白了就是一个协议,一个字典,里面包含了Environment,“OWIN.dll”其实也不过是一个接口,没有更多。全部根据“OWIN”所派生出来的东西已经不是OWIN本身了。get
所以,在《Linux.NET学习手记(8)》应把全部的“OWIN”改成“Microsoft.OWIN”,指明这是针对“Microsoft.OWIN”所诞生出的东西。io
二、“Middleware”实际上是“Microsoft.OWIN”的东西im
在这里,我须要上一个图,说说为何在现有的OWIN框架中以及我也为什么写做时发生误判:
如图所示,虽然OWIN协议并不属于任何的一方,可是出现得最先的关于OWIN协议的实现是微软的”Microsoft.OWIN“,所以目前许多的OWIN框架都是基于”Microsoft.OWIN“来实现。而”Startup“、”Configuration“、”Middleware“等组件是”Microsoft.OWIN“所提出的知识点,所以这些OWIN框架也就天然而然的会出现这一类的事物来。
所以,咱们文中说到”转动咱们的钥匙“,实际上是转动”Microsoft.OWIN“的钥匙,而不是整个”OWIN“大门的钥匙。
三、适配器的真正用法
上一节中已经说得很是清楚了,目前现存的OWIN框架都是针对“Microsoft.OWIN”所缔造出来的框架,所以这些OWIN框架与Katana之间是无缝的链接,根本就无需适配器这一类型的玩意,而Jexus则不一样,适配器这一说法是Jexus针对这些基于“Microsoft.OWIN”所实现出来的OWIN框架可以在Jexus.OwinHost中使用所诞生出的组件(感谢Jexus原做者的提醒),下面附上宇内流云给出的概念图:
虽然即便不了解OWIN自己,对于平常的开发没有太大的影响(除非涉及到直接操做OWIN字典这方面),框架仍是照样的用,项目仍是照样的开发。可是,我我的对于知识的准确性要求比较高,须要作到一丝不苟。若是更多的朋友发现有其余错误的,也欢迎指出更正。谢谢。