2016-08-02 7 views
8

Я заметил, что при использовании C# для создания старого проекта MVC существует много ссылок на библиотеку OWIN. Но при создании веб-приложения .NET Core в VS2015 SP3, похоже, нет ссылки на него.Поддерживает ли ASP.NET Core OWIN?

Является ли эта библиотека устаревшей?

+1

Да, OWIN по-прежнему является основным стандартом поддержки. .Net core предоставляет основные возможности для создания вашего веб-приложения. Потяните в пакеты OWIN от Nuget. https://docs.asp.net/ru/latest/fundamentals/owin.html –

+0

@MurrayFoxcroft: Не совсем правильно. Ядро .NET Core и ASP.NET Core ** не ** основано на OWIN. Но они поддерживают подключение OWIN Middleware. – Tseng

+0

@ Ценг, действительно, вот почему я сказал, что поддержал. –

ответ

10

OWIN не является библиотекой, это specification. Из документов,

OWIN определяет стандартный интерфейс между веб-серверами .NET и веб-приложениями.

«Большая идея» OWIN заключается в том, что вы можете отделить приложения от серверов, на которых они работают, если каждый может согласиться на использование общего интерфейса. На практике OWIN-совместимый сервер может запускать любое совместимое с OWIN приложение. Это улучшение по сравнению с тесной связью, которую мы имели в прошлом (приложения могут работать только на IIS, и все).

Большая часть спецификации OWIN посвящена описанию названий различных свойств. Сервер, совместимый с OWIN, преобразует входящие запросы в Dictionary<string, object>, который содержит кучу таких ключей, как owin.RequestBody и owin.ResponseBody. Если приложение или промежуточное программное обеспечение, которому передан запрос, знает, как читать эти ключи, он может обрабатывать запрос. Это оно!

Там являются Owin библиотеки (как OWIN и Microsoft.Owin), который является общим источником путаницы. Эти библиотеки являются просто безопасными по типу реализациями интерфейса OWIN или помощниками, которые упрощают взаимодействие с компонентами, совместимыми с OWIN.

Как отмечают @Murray и @Tseng, ядро ​​ASP.NET не построено на OWIN, но совместимо с OWIN. Или, скорее, серверы , на которых работает ASP.NET Core (Kestrel, WebListener, IIS), совместимы с OWIN. ASP.NET Core является дополнительной абстракцией по запросам низкого уровня («уровень OWIN») и позволяет легко создавать такие вещи, как контроллеры и страницы, созданные сервером.

Поскольку ASP.NET Core является OWIN-совместимым, легко подключить любое совместимое с OWIN промежуточное программное обеспечение. Пакет Microsoft.AspNetCore.Owin выставляет UseOwin метод:

app.UseOwin(pipeline => 
{ 
    pipeline(next => OwinHello); 
    // where OwinHello is a compatible middleware function 
}); 

ВИДЕТЬ documentation другие примеры добавления Owin промежуточного ПО для трубопровода ASP.NET Core.

+1

Возможно ли получить доступ к словарю среды OWIN из ядра ASP.NET? – Fred

+0

@Fred Да, через свойство 'HttpContext.Items'. –

+2

, но «HttpContext.Items» - это «Словарь <объект, объект>», в то время как словарь среды OWIN - это «Словарь <строка, объект>». Также 'HttpContext.Items' пуст, поэтому, хотя он может использоваться для обмена данными между промежуточным программным обеспечением, он не содержит исходную среду OWIN. – Fred

Смежные вопросы