Asp.net

如何用簡單的語言和用法來解釋 Katana 和 OWIN?

  • December 11, 2013

我讀過很多關於 OWIN 和 Katana 項目的文章,但我無法了解它的全貌。

對於使用 ASP.NET 的普通 Web 開發人員:

  1. OWIN 到底是什麼,它解決了什麼問題(簡單來說)。它與IIS有什麼關係?
  2. OWIN 會取代 IIS 嗎?如果不是,OWIN 在什麼情況下最適合?
  3. OWIN 如何在我的日常工作項目中幫助我?
  4. 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

引用自:https://stackoverflow.com/questions/20524060