OWIN Katana如何与ASP.NET Core Docker容器进行比较

时间:2018-05-03 18:06:40

标签: asp.net docker asp.net-core owin

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

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

2 个答案:

答案 0 :(得分:4)

首先,OWIN不是由微软开发的。这是微软收购的第三方规范。虽然你仍然可以构建基于OWIN的应用程序,但在微软偏离该规范之前并没有持续很长时间,标准的Microsoft中间件不是OWIN(尽管它在某种程度上基于OWIN)。

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

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

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

答案 1 :(得分:0)

Open Web Interface for .NET(OWIN)定义了.NET Web服务器和Web应用程序之间的抽象。 OWIN只是规范

Katana是Microsoft的OWIN 规范的实现。但是,我们简称(OWIN)Middlware。

无论您是自托管ASP.NET应用程序还是通过ASP.NET Core Module在IIS后面运行,该请求仍会通过OWIN Middlware (MVC请求生命周期中的橙色框)

相同的概念仍然适用于Docker容器。

enter image description here