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

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

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

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


person Fred    schedule 10.09.2016    source источник


Ответы (2)


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

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 можно найти здесь:

person Ralf Bönning    schedule 11.09.2016

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

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

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

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

var environment = new OwinEnvironment(HttpContext);
var features = new OwinFeatureCollection(environment);
person Fred    schedule 27.09.2016
comment
Отметка. OwinEnvironment — это концепция из Microsoft.AspNetCore.Owin, а не чистая вещь OWIN. Похоже на то, что OwinMiddleware — это вещь Katana, а не чистая вещь OWIN. - person John Korsnes; 25.11.2016