我对微软的路线图感到困惑。 OWIN的使用是将Web应用程序与IIS分离,因此开发了OWIN。现在IIS可以托管一个OWIN开发的应用程序,或者想法是任何Web服务器都可以托管OWIN应用程序。事实上,OWIN应用程序可以自托管,这意味着不需要Web服务器(本身) - 自托管是一个轻量级的Web服务器。
现在进入带有Docker容器的ASP.NET Core图片。这些需要OWIN,还是完全不同的动物?他们可以和OWIN共存吗?为什么将OWIN与Docker一起使用?为什么选择Docker而不是OWIN。关于使用Microsoft技术的Web应用程序的正确方向和未来的许多问题。也许我很厚重而且忽略了这一点。随意给我发火焰。
答案 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容器。