ASP.NET 核心中间件还是 OWIN 中间件?
ASP.NET Core middleware or OWIN middleware?
据我了解,ASP.NET Core 除了自身的本机中间件外,还支持 OWIN 中间件(通过 app.UseOwin()
)。
ASP.NET核心中间件和OWIN中间件有什么区别?
在设计新的中间件时,我如何知道应该将其设计为 ASP.NET 核心中间件还是 OWIN 中间件?
你的问题让我很好奇,我想分享一下我到目前为止学到的东西。
Katana 是 OWIN 规范的实现。在 Katana 3.0 版本之后,这项技术已经完全集成到我们今天称为 ASP.NET Core 的 Web 堆栈中。
虽然此转换在很大程度上与 OWIN 规范保持相似。虽然做了一些改动。为了在 ASP.NET Core 中使用现有的 OWIN 中间件,通过可选功能(“app.UseOwin()
”)支持 OWIN。
如果您想使用中间件 ASP.NET 应用程序和 ASP.NET 核心应用程序作为目标,那么我会使用 OWIN 中间件。如果您想为 ASP.NET 核心开发人员提供第一个 class 公民体验,那么 ASP.NET 核心中间件将被认为更 "fitting".
关于ASP.NET核心中间件和OWIN中间件之间关系的一些信息可以在这里找到:
我是这样理解的; ASP.NET 核心中间件比 OWIN 中间件处于更高级别。
ASP.NET 核心中间件的优点是,当您传入可以使用的 HttpContext
时,开发中间件要容易得多。缺点是你开发的中间件依赖ASP.NETCore.
OWIN 处于较低级别,您将获得一个 IDictionary<string, object>
的 OWIN 环境。优点是它不依赖于 ASP.NET 因此可以在任何 OWIN 服务器(例如 Nowin)上 运行。缺点是编码需要更多精力,因为您必须从 OWIN 环境构建自己的上下文或直接使用 OWIN 环境字典并跟踪所有 OWIN keys 和对象。
编辑:您不必自己跟踪 OWIN 密钥,您可以使用 OwinEnvironment
class 获得强类型环境。
var environment = new OwinEnvironment(HttpContext);
var features = new OwinFeatureCollection(environment);
据我了解,ASP.NET Core 除了自身的本机中间件外,还支持 OWIN 中间件(通过 app.UseOwin()
)。
ASP.NET核心中间件和OWIN中间件有什么区别?
在设计新的中间件时,我如何知道应该将其设计为 ASP.NET 核心中间件还是 OWIN 中间件?
你的问题让我很好奇,我想分享一下我到目前为止学到的东西。
Katana 是 OWIN 规范的实现。在 Katana 3.0 版本之后,这项技术已经完全集成到我们今天称为 ASP.NET Core 的 Web 堆栈中。
虽然此转换在很大程度上与 OWIN 规范保持相似。虽然做了一些改动。为了在 ASP.NET Core 中使用现有的 OWIN 中间件,通过可选功能(“app.UseOwin()
”)支持 OWIN。
如果您想使用中间件 ASP.NET 应用程序和 ASP.NET 核心应用程序作为目标,那么我会使用 OWIN 中间件。如果您想为 ASP.NET 核心开发人员提供第一个 class 公民体验,那么 ASP.NET 核心中间件将被认为更 "fitting".
关于ASP.NET核心中间件和OWIN中间件之间关系的一些信息可以在这里找到:
我是这样理解的; ASP.NET 核心中间件比 OWIN 中间件处于更高级别。
ASP.NET 核心中间件的优点是,当您传入可以使用的 HttpContext
时,开发中间件要容易得多。缺点是你开发的中间件依赖ASP.NETCore.
OWIN 处于较低级别,您将获得一个 IDictionary<string, object>
的 OWIN 环境。优点是它不依赖于 ASP.NET 因此可以在任何 OWIN 服务器(例如 Nowin)上 运行。缺点是编码需要更多精力,因为您必须从 OWIN 环境构建自己的上下文或直接使用 OWIN 环境字典并跟踪所有 OWIN keys 和对象。
编辑:您不必自己跟踪 OWIN 密钥,您可以使用 OwinEnvironment
class 获得强类型环境。
var environment = new OwinEnvironment(HttpContext);
var features = new OwinFeatureCollection(environment);