【问题标题】:How to explain Katana and OWIN in simple words and uses?如何用简单的语言和用法来解释 Katana 和 OWIN?
【发布时间】:2013-12-29 17:11:54
【问题描述】:

我已经阅读了很多关于 OWIN 和 Katana 项目的文章,但我无法全面了解它。

对于使用 ASP.NET 的普通 Web 开发人员:

  1. OWIN 到底是什么以及它解决了哪些问题(简单来说)。它与 IIS 有什么关系?
  2. OWIN 是否取代 IIS?如果不是,OWIN 在什么情况下最适合?
  3. OWIN 如何在我的日常工作项目中帮助我?
  4. OWIN 如何在自我提升项目中帮助我?

【问题讨论】:

  • 您可能会考虑更改已接受的答案,因为少数要点并不真正正确 - 具有误导性。
  • 我在 ASP.net 上的书建议通过 OWIN 实现 Identity 和 UserManager 类,我真的不明白这一点。这让我完全困惑......

标签: asp.net iis owin katana


【解决方案1】:

关于上面的评论,OWIN 不是一个框架。 OWIN 是关于如何构建 Web 服务器和 Web 应用程序的规范,以便将它们解耦并允许将 ASP.NET 应用程序移动到以前不支持的环境中。

在 OWIN 之前,在构建 ASP.NET 应用程序时,由于对 System.Web 程序集的严重依赖,您天生就绑定到 IIS。

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,但您会失去性能。

现在,有第三个选项,一个名为 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 架构师)的forum post

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 本机。但是,.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 实施的方法。更多信息可以在官方博客文章中找到: Announcing ASP.NET Core RC2

【讨论】:

  • @ebramtharwat 现在一年后,它看起来不像 helios 是一个东西
  • 您提到 Katana v3 很可能是最后一个主要版本,那么接下来,将使用什么框架来取代 Katana?
  • Katana 的功能已集成到 ASP.NET 5 中。为了向后兼容,Katana 将继续存在。
  • @AdmirTuzović:很好的答案。自 2016 年 5 月以来还有更多更新要添加吗?
  • 初始答案和后续编辑很好地解释了过渡。感谢您的努力。
【解决方案2】:

如果我必须为自己定义 OWIN,那就是:“来自 Ruby 和 Node.js Web 开发社区的最佳创意,来到 .NET”

但这不会帮助任何 ASP.NET 开发人员。我自己的定义是这样的:

OWIN 定义了 .NET Web 服务器和 Web 应用程序之间的标准接口。 OWIN 接口的目标是解耦服务器和应用程序 如果我必须回答你提出的问题,那就是:

  1. OWIN 是一个接口规范。它将 Web 应用程序与 IIS 分离。

  2. 如果您使用的是现成的组件(这就是 Katana),那么与旧的 ASP.NET 相比,应用程序功能的某些部分更容易实现。使用第三方身份提供商(Facebook、Twitter)进行身份验证就是其中之一。

  3. OWIN 本质上是一组最佳实践,已在 Web 开发社区中得到证明。它展示了一种实现对可扩展性非常开放的 Web 应用程序的方法。由于每个 Web 开发人员都应该始终处于新技术的前沿,这是与整个 Web 开发社区保持同步的一种方式,而不仅仅是 .NET。如果您学习 OWIN,学习其他 Web 开发框架(例如 Express for node.js 或 Rack for Ruby)会容易得多,因为它们使用的实践相似。

【讨论】:

  • 这篇文章也可能有助于了解 OWIN/katana 解决的历史问题:asp.net/aspnet/overview/owin-and-katana/…。也就是说,OWIN 主机现在仅支持这些框架:owin.org/#projects。如果您的应用程序使用这些应用程序框架中的任何一个,则可以将其托管在 OWIN 上。
  • 您能否在此处发布使用owinhost.exe 时从浏览器到响应呈现点的传入请求序列。我找不到该主题的文档。
  • 第 1 点和第 2 点具有误导性,OWIN 无法自行替换任何内容。与第 4 点一样,它只是一个需要以某种方式实现的规范,到目前为止,微软的参考实现是 Katana 和 Helios。
  • 来自 Ruby 和 Node.js Web 开发社区的最佳创意,即将来到 .NET....您能否列出其中的一些?
  • 中间件。将应用程序与托管环境解耦,使其可插拔。
【解决方案3】:

我会尝试从实际的角度来介绍它。

Katana 是项目名称to implement OWIN in Microsoft

OWIN 到底是什么,它解决了什么问题(简单来说)。它与 IIS 有什么关系? OWIN (Open Web Interface for .NET) 是标准 (OWIN Specification) 而 Katana 是 .NET 库,您可以 get nuget from here。 OWIN 和 Katana 在网络上成为了某种同义词。
在 OWIN 之前,您唯一的选择是 IIS 与 OWIN 您可以使用任何其他应用程序(具有入口点)作为 Web 服务器。

OWIN 会取代 IIS 吗?如果不是,OWIN 在什么情况下最适合?
不,它不会替代 IIS,您可以使用 OWIN 和 IIS there's Microsoft.Owin.Host.SystemWeb nuget for that。如果您想优化/更改在 IIS 中的处理方式,或者您想使用 Windows 窗体应用程序创建自定义 Web 服务器,那么它是最合适的。

OWIN 如何在我的日常工作项目中帮助我?
它可以降低您的服务器运行成本,因为您的 Web 服务器不再需要在 IIS (Windows) 上运行(Windows 服务器比基于 Unix 的服务器更昂贵,您可以在 Linux 的 Mono 下的控制台应用程序上运行它)。

OWIN 如何在自我提升项目中帮助我?
学习 Microsoft.Owin(和其他相关的 OWIN 库)将提高您对客户端和 Web 服务器之间的 HTTP 通信如何工作的知识。

Good read if you want to understand more on what Katana and OWIN is.

【讨论】:

  • 干得好,感谢您直接回答发布的问题,而不是冒险走下切线。
  • 如果我们总是使用支持 Microsoft IIS 的服务器进行托管会怎样?似乎 OWIN 在新的 WebApi2 模板中是默认的。如果我打算只/总是在 IIS 中托管,我应该将其作为参考删除吗?
  • @TechTurtle Hi Tech,我建议将其作为单独的问题发布。
  • 解释得很清楚。感谢您提供有用的信息
【解决方案4】:

什么是 OWIN?

OWIN 代表 .NET 的开放式 Web 界面。 OWIN 是描述 Web 开发框架(如 ASP.NET MVC)应如何与 Web 服务器交互的规范。 OWIN 的目标是通过引入抽象层将 Web 应用程序与 Web 服务器分离。这样的抽象使您能够在所有支持 OWIN 的 Web 服务器上运行相同的应用程序。此外,它简化了整个系统,因为抽象层可以提供一个轻量级的基础设施来托管应用程序。 IIS 为 Web 应用程序提供了一组丰富的功能。但是,Web 应用程序可能不需要所有这些功能。对他们来说,拥有最少的 HTTP 处理能力可能就足够了。 OWIN 兼容主机可以为这些应用程序提供这样的托管环境。此外,您可以定义在请求处理期间使用的模块管道。 OWIN 管道是请求通过的与 OWIN 兼容的组件链。

什么是武士刀?

Katana 是 Microsoft 使用 OWIN 规范构建的一组组件。其中一些组件包括 Web API、ASP.NET Identity 和 SignalR。

以上摘自 CodeGuru 文章:http://www.codeguru.com/csharp/.net/net_asp/overview-of-owin-and-katana.htm

【讨论】:

    猜你喜欢
    • 2017-10-12
    • 1970-01-01
    • 2018-12-19
    • 2014-03-03
    • 2017-05-13
    • 1970-01-01
    • 2021-10-31
    • 1970-01-01
    • 2021-01-15
    相关资源
    最近更新 更多