首页 > 解决方案 > OWIN Katana 与 ASP.NET Core Docker 容器相比如何

问题描述

我对微软的路线图感到困惑。OWIN 的用途是将 Web 应用程序与 IIS 分离,因此开发了 OWIN。现在 IIS 可以托管 OWIN 开发的应用程序,或者想法是任何 Web 服务器都可以托管 OWIN 应用程序。事实上,OWIN 应用程序可以自托管,这意味着不需要 Web 服务器(本身) - 自托管是一个轻量级的 Web 服务器。

所以现在进入图片 ASP.NET Core 与 Docker 容器。这些需要 OWIN,还是完全不同的动物?它们可以与 OWIN 共存吗?为什么将 OWIN 与 Docker 一起使用?为什么选择 Docker 而不是 OWIN。关于使用 Microsoft 技术的 Web 应用程序的正确方向和未来的许多问题。也许我很厚,没有抓住重点。随意给我发火。

标签: asp.netdockerasp.net-coreowin

解决方案


首先,OWIN 不是微软开发的。这是微软购买的第三方规范。不久之后微软就偏离了该规范,尽管您仍然可以构建基于 OWIN 的应用程序,但标准的微软中间件不是 OWIN(尽管它在某种程度上基于 OWIN)。

其次,容器与此无关。容器只是一个分发和运行时环境,它将应用程序隔离到自己的虚拟空间中,而没有完整的操作系统虚拟化的开销。这与 IIS、ASP.NET 或 OWIN 无关。

最后,Microsoft 的 .net 核心自托管 Web 服务器称为 Kestrel,它实际上可以通过 shim 模块链接到 IIS(没有应用程序的 IIS 依赖项)。或者它可以是一个独立的 HTTP 服务器。

此外,OWIN 的主要目的之一是将 HTTP 上下文从应用程序中抽象出来,并且使用 .net 核心他们有机会重新设计 HttpContext 以独立于 IIS,因此在 .NET 核心中大大减少了这种需求。中间件还是有需求的,所以团队自己开发了类似的中间件,没有OWIN的一些限制。


推荐阅读