如何用簡單的語言和用法來解釋 Katana 和 OWIN?
我讀過很多關於 OWIN 和 Katana 項目的文章,但我無法了解它的全貌。
對於使用 ASP.NET 的普通 Web 開發人員:
- OWIN 到底是什麼,它解決了什麼問題(簡單來說)。它與IIS有什麼關係?
- OWIN 會取代 IIS 嗎?如果不是,OWIN 在什麼情況下最適合?
- OWIN 如何在我的日常工作項目中幫助我?
- OWIN如何幫助我進行自我提升項目?
關於上面的評論,OWIN 不是一個框架。OWIN 是關於如何建構 Web 伺服器和 Web 應用程序的規範,以便將它們解耦並允許將 ASP.NET 應用程序移動到以前不支持的環境中。
在 OWIN 之前,在建構 ASP.NET 應用程序時,由於對程序集的嚴重依賴,您天生就綁定到 IIS
System.Web。
System.Web是自 ASP(非 .NET 版本)以來就存在的東西,內部包含許多您甚至可能不需要的東西(例如 Web 表單或 URL 授權),預設情況下它們都在每個請求上執行,從而消耗資源並使 ASP .NET 應用程序通常比 Node.js 等同類應用程序慢很多。OWIN 本身沒有任何工具、庫或其他任何東西。這只是一個規範。
另一方面,Katana 是一個完全開發的框架,用於在目前的 ASP.NET 框架和 OWIN 規範之間架起一座橋樑。目前,Katana 已成功將以下 ASP.NET 框架適配到 OWIN:
- 網路 API
- 信號 R
ASP.NET MVC 和 Web 窗體仍僅通過 System.Web 執行,從長遠來看,也有計劃將它們解耦。
另一方面,IIS 是一個很好的、資源豐富的 Web 伺服器主機。使用 IIS 的整個 ASP.NET 性能問題僅在其中有很深的根源
System.Web。直到最近,在決定如何託管 Web 伺服器時,您有兩個選擇:
- IIS
- 自託管
因此,如果您想要表演,您會選擇自託管選項。如果您想要 IIS 提供的許多開箱即用的功能,您會選擇 IIS,但您會失去性能。
現在,有第 3 個選項,一個名為Helios(目前代號)的 Microsoft 庫,旨在將其移除
System.Web,並允許您以更“清潔”的方式使用 IIS,而無需任何不必要的庫或模組。Helios 現在處於預發布版本,正在等待更多社區回饋,以使其完全支持 Microsoft 產品。希望這個解釋能更好地為你澄清事情。
編輯(2014 年 9 月):
隨著 ASP.NET vNext 的開發,Katana 正在慢慢退役。3.0 版很可能是 Katana 作為獨立框架的最後一個主要版本。
但是,Katana 引入的所有概念都被集成到 ASP.NET vNext 中,這意味著程式模型將幾乎相同。引用David Fowler(ASP.NET vNext 的架構師)發表的論壇文章:
vNext 是 Katana 的繼任者(這就是它們看起來如此相似的原因)。Katana 是從 System.Web 和更多模組化 Web 堆棧組件分離的開始。您可以將 vNext 視為該工作的延續,但更進一步(新的 CLR、新的項目系統、新的 http 抽象)。
今天存在於 Katana 中的所有東西都將進入 vNext。
編輯(2015 年 2 月):
ASP.NET vNext 現在稱為 ASP.NET 5,將建構在 .NET Core 5 之上。.NET Core 5 是 .NET Framework 的輕量級版本,旨在支持 ASP.NET 5 和 .NET Native 的目標. 但是,.NET Framework 4.6 也將支持 ASP.NET 5,它應該與 .NET Core 5 一起提供。ASP.NET 5 和 .NET Core 5 都將在 MIT 下獲得許可,並接受社區貢獻。
編輯(2015 年 5 月):
此外,ASP.NET Web API 品牌將停產,但它的技術將成為新 ASP.NET MVC 6 的基礎。以前的 ASP.NET MVC 版本是通過實現 IHttpHandler(在
System.Web. ASP.NET MVC 6 消除了這種依賴性,使其可移植到各種平台和 Web 伺服器。編輯(2016 年 5 月):
ASP.NET 5 將從計劃很快發布的候選版本 2 開始正式重命名為 ASP.NET Core。同樣適用於 Entity Framework 7,它將被重命名為 Entity Framework Core。有關官方公告及其背後原因的更多資訊,請參閱 Scott Hanselman 的部落格文章: ASP.NET 5 is dead - Introducing ASP.NET Core 1.0 and .NET Core 1.0
編輯(2016 年 5 月):
隨著 Release Candidate 2 的發布,對ASP.NET Core 進行了修改,因此未來的 Web 應用程序實際上只是 .NET Core 控制台應用程序,用於處理傳入的 HTTP 請求。這一概念使 ASP.NET Core 與 Microsoft 採用的微服務架構支持及其通過 Azure Service Fabric 實施的方法更加一致。更多資訊可以在官方部落格文章中找到: 宣布 ASP.NET Core RC2