爲何寫OWIN框架呢?web
由於沒接觸刀OWIN框架直接去學.NET Core比較生硬,我的看法。
首先咱們要知道OWIN的由來:ASP.NET和IIS和Windows操做系統的關係在以前是緊密聯繫的,缺一不可,缺點:複雜的ASP.NET生命週期(請求到服務器->IIS->CLR->aspnet_wp.exe),耦合性太強。面向對象的世界中,接口每每解耦是關鍵。由此,OWIN出現。服務器
=========百度百科=============併發
OWIN定義了4層:
Host:主要負責應用程序的配置和啓動進程,包括初始化OWIN Pipeline、運行Server。
Server:這是實際的Http Server,綁定套接字並監聽的HTTP請求而後將Request和Response的Body、Header封裝成符合OWIN規範的字典併發送到OWIN Middleware Pipeline中,最後Application爲Response Data填充合適的字段輸出。
Middleware:稱之爲中間件、組件,位於Server與Application之間,用來處理髮送到Pipeline中的請求,這類組件能夠是簡單的Logger或者是複雜的Web Framework好比Web API、SignalR,只要Sever鏈接成功,Middleware中間件能夠是任何實現應用程序委託的組件。
Application:這是具體的應用程序代碼,可能在Web Framework之上。對於Web API、SignalR這類Web Framework中間件而言,咱們僅僅是改變了他們的託管方式,而不是取代ASP.NET WEB API、SignalR原先的應用程序開發。因此該怎麼開發就怎麼開發,只不過咱們將他們註冊到OWIN Pipeline中去處理HTTP請求,成爲OWIN管道的一部分,因此此處的Application即正在乎義上的處理程序代碼。
=========百度百科=============
Program文件的出現:
託管和運行ASP.NET Core應用程序的新運行時基礎結構。請看下面流程知道Program做用:
Internet<-->web服務器<-->主ASP.NET控制檯應用程序(內置的WEB服務器<->你的asp.net代碼)
Web服務器經過一個配置的端口與徹底解耦的可執行文件通訊,並將傳入的請求轉發給控制檯應用程序,這個控制檯程序由一個必要的HTTP模型塊進入IIS進程空間生成,該HTTP模塊使IIS可以支持ASP.NET Core。要將ASP.NET Core應用程序託管到其餘Web服務器,必須有相似的擴展模塊。