早前的一兩天《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字典這方面),框架還是照樣的用,項目還是照樣的開發。但是,我個人對於知識的准確性要求比較高,需要做到一絲不苟。如果更多的朋友發現有其他錯誤的,也歡迎指出更正。謝謝。