ChatGPT解决这个技术问题 Extra ChatGPT

如何用简单的语言和用法来解释 Katana 和 OWIN?

我读过很多关于 OWIN 和 Katana 项目的文章,但我无法了解它的全貌。

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

OWIN 到底是什么,它解决了什么问题(简单来说)。它与IIS有什么关系? OWIN 会取代 IIS 吗?如果不是,OWIN 在什么情况下最适合? OWIN 如何在我的日常工作项目中帮助我? OWIN如何帮助我进行自我提升项目?

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

C
Callum Watkins

关于上面的评论,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 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 版本是通过实现 System.Web 中定义的接口 IHttpHandler 构建的。 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 月以来还有更多更新要添加吗?
随后编辑的初步答案很好地解释了过渡。感谢您的努力。
C
Community

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

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

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

OWIN 是一个接口规范。它将 Web 应用程序与 IIS 分离。如果您使用的是现成的组件(这就是 Katana),那么与旧的 ASP.NET 相比,应用程序功能的某些部分更容易实现。使用第三方身份提供商(Facebook、Twitter)的身份验证就是其中一个例子。 OWIN 本质上是一组最佳实践,已在 Web 开发社区中得到证明。它展示了一种实现对可扩展性非常开放的 Web 应用程序的方法。由于每个 Web 开发人员都应该始终处于新技术的前沿,这是与整个 Web 开发社区保持同步的一种方式,而不仅仅是 .NET。如果您学习 OWIN,学习其他 Web 开发框架(例如 Node.js 的 Express 或 Ruby 的 Rack)会容易得多,因为它们使用的实践是相似的。


本文也可能有助于了解 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....你能列出其中的一些吗\
中间件。将应用程序与托管环境分离,使它们可插拔。
M
Matas Vaitkevicius

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

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 之前,您唯一的选择是使用 OWIN 的 IIS,您可以使用任何其他应用程序(具有入口点)作为网络服务器。

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 嗨,我建议将其作为一个单独的问题发布。
很清楚的解释。感谢您提供有用的信息
V
Venkatesh Muniyandi

什么是欧文?

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


关注公众号,不定期副业成功案例分享
关注公众号

不定期副业成功案例分享

领先一步获取最新的外包任务吗?

立即订阅