Среднее промежуточное ПО ASP.NET Core или промежуточное ПО OWIN?

Как я понимаю, ASP.NET Core поддерживает вспомогательное ПО OWIN (через app.UseOwin()) в дополнение к своему собственному промежуточному программному обеспечению.

В чем разница между промежуточным программным обеспечением ASP.NET Core и промежуточным программным обеспечением OWIN?

При разработке нового промежуточного программного обеспечения, как я могу узнать, должен ли я его проектировать как промежуточное ПО ASP.NET Core или промежуточное ПО OWIN?

Ответ 1

Ваш вопрос вызвал у меня любопытство, и я хотел бы поделиться тем, что я узнал до сих пор.

Katana - это реализация спецификации OWIN. После версии 3.0 Katana эта технология полностью интегрирована в веб-стек, который мы сегодня знаем как ASP.NET Core.

В то время как этот переход много остался похожим на спецификации OWIN. Хотя некоторые изменения были сделаны. Чтобы использовать существующее промежуточное ПО OWIN в ASP.NET Core, он поддерживает OWIN с помощью дополнительной функции ( "app.UseOwin()" ).

Если вы хотите настроить таргетинг на ваши приложения промежуточного программного обеспечения ASP.NET и основные приложения ASP.NET, я бы использовал промежуточное ПО OWIN. Если вы хотите предоставить разработчикам ASP.NET Core первоклассный гражданский опыт, тогда промежуточное ПО ASP.NET Core будет признано более "подходящим".

Некоторая информация о взаимосвязи между промежуточным программным обеспечением ASP.NET Core и промежуточным программным обеспечением OWIN находится здесь:

Ответ 2

Я понял это как это; Среднее промежуточное ПО ASP.NET Core находится на более высоком уровне, чем промежуточное ПО OWIN, которое находится на более низком уровне.

Преимущество промежуточного программного обеспечения ASP.NET Core заключается в том, что гораздо легче разрабатывать промежуточное ПО, поскольку вы получаете в HttpContext, который вы можете использовать. Недостаток заключается в том, что промежуточное программное обеспечение, которое вы разрабатываете, зависит от ядра ASP.NET.

OWIN находится на более низком уровне, и вы получаете среду OWIN, которая является IDictionary<string, object>. Преимущество заключается в том, что он не привязан к ASP.NET, следовательно, может работать на любом сервере OWIN (например, Nowin). Недостаток заключается в том, что для кодирования требуется больше усилий, поскольку вам нужно создать свой собственный контекст из среды OWIN или напрямую использовать словарь среды OWIN и отслеживать все OWIN ключи и объекты.

Изменить: вам не нужно самостоятельно отслеживать ключи OWIN, вы можете использовать класс OwinEnvironment для получения строго типизированной среды.

var environment = new OwinEnvironment(HttpContext);
var features = new OwinFeatureCollection(environment);