Asp.net core ASP.NET核心中间件还是OWIN中间件?

Asp.net core ASP.NET核心中间件还是OWIN中间件?,asp.net-core,owin-middleware,Asp.net Core,Owin Middleware,据我所知,ASP.NET Core除了自己的本机中间件之外,还支持OWIN中间件(通过app.UseOwin()) ASP.NET核心中间件和OWIN中间件之间的区别是什么 在设计新的中间件时,我如何知道应该将其设计为ASP.NET核心中间件还是OWIN中间件?您的问题让我很好奇,我想与大家分享我迄今为止学到的知识 Katana是OWIN规范的实现。在Katana版本3.0之后,该技术已完全集成到我们今天称为ASP.NET核心的web堆栈中 虽然这种转换与OWIN规范非常相似。虽然已经做了一些改

据我所知,ASP.NET Core除了自己的本机中间件之外,还支持OWIN中间件(通过
app.UseOwin()

ASP.NET核心中间件和OWIN中间件之间的区别是什么


在设计新的中间件时,我如何知道应该将其设计为ASP.NET核心中间件还是OWIN中间件?

您的问题让我很好奇,我想与大家分享我迄今为止学到的知识

Katana是OWIN规范的实现。在Katana版本3.0之后,该技术已完全集成到我们今天称为ASP.NET核心的web堆栈中

虽然这种转换与OWIN规范非常相似。虽然已经做了一些改变。为了使用ASP.NET核心中现有的OWIN中间件,通过可选功能(“
app.UseOwin()
”)支持OWIN

如果您希望以中间件ASP.NET应用程序和ASP.NET核心应用程序为目标,那么我将使用OWIN中间件。如果您想为ASP.NET核心开发人员提供一流的公民体验,那么ASP.NET核心中间件将被认为更“合适”

有关ASP.NET核心中间件和OWIN中间件之间关系的一些信息,请参见:


    • 我开始这样理解它;ASP.NET核心中间件的级别高于OWIN中间件的级别,OWIN中间件的级别较低

      ASP.NET核心中间件的优点是,当您通过可以使用的测试时,在中开发中间件要容易得多。缺点是您开发的中间件依赖于ASP.NET核心

      OWIN位于较低的级别,您将获得一个OWIN环境,它是一个
      IDictionary
      。优点是它不绑定到ASP.NET,因此可以在任何OWIN服务器(如Nowin)上运行。缺点是编码需要花费更多的精力,因为您必须从OWIN环境构建自己的上下文,或者直接使用OWIN环境字典并跟踪所有和对象

      编辑:您不必自己跟踪OWIN密钥,您可以使用
      OwinEnvironment
      类来获得强类型环境

      var-environment=新的OwinEnvironment(HttpContext);
      var特征=新的OWInferatureCollection(环境);
      
      标记
      OwinEnvironment
      是Microsoft.AspNetCore.Owin中的一个概念,而不是纯粹的Owin。与此类似,OWIN中间件是一个Katana的东西,而不是一个纯粹的OWIN的东西。