Среднее промежуточное ПО 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);