Предыдущий ролик Следующий ролик  

Видео урок: Understanding Open Web Interface for .NET (OWIN) and Katana

Основы ASP.NET MVC 5

В этом видео я познакомлю вас с OWIN и Katana, двумя тесно связанными проектами, важность которых стремительно возрастает по мере развития ASP.NET. OWIN расшифровывается как "Open Web Interface for .NET" (Открытый веб-интерфейс для .NET). Это спецификация стандарта, а не проект, основанный на реальном коде. Цель этой спецификации - устранить связь между веб-серверами и фреймворками, в частности для того, чтобы иметь возможность создавать приложения для .NET, не полагаясь на IIS или огромную сборку System.Web.

Теоретически такая возможность позволяет создавать компоненты в виде модулей и добавлять их в проект по мере необходимости, чтобы сократить вес приложения. Кроме того, это упрощает миграцию приложений в другие среды: за пределы IIS или самой Windows. Сначала эти идеи могут показаться слегка абстрактными, но если вам случалось иметь дело с архитектурными принципами таких абстракций, как Node.js, Rack или WSGI, то тогда вы имеете отличную базу для понимания OWIN. Katana, с другой стороны, представляет собой подлинную реализацию этих концепций в виде совокупности OWIN-компонентов.

К этим компонентам относятся: инфраструктурные компоненты, например, хост и серверы, а также функциональные компоненты, например, модули аутентификации. Как разработчик вы в основном сталкиваетесь с Katana, настраивая те компоненты, которые будут добавляться в конвейер OWIN. Конвейер состоит из последовательности компонентов, которые будут обрабатывать входящие запросы приложения в определенном порядке, аналогично HTTP-модулям в более традиционных ASP.NET приложениях. Сами компоненты называют "связующими" элементами, поскольку они могут получать информацию и передавать ее другим компонентам.

Приложение, в котором используются OWIN-компоненты, можно размещать с помощью IIS или с помощью сборки OwinHost.exe, входящей в состав Katana. Кроме того, для таких компонентов довольно легко создать пользовательский хост. На этой схеме представлено 4 элемента самого первого уровня проекта, в котором используется Katana. Есть хост, который отвечает за управление основным процессом приложения, и сервер, отвечающий за перехват запросов и последующую отправку их в конвейер OWIN. В случае использования IIS каждому из этих элементов соответствует аккаунт IIS.

В противном случае можно использовать два отдельных взаимозаменяемых компонента. Что касается связующих элементов приложения, данная терминология может слегка сбивать с толку. Например, OWIN и Katana мы обсуждаем именно сейчас, потому что в нашем MVC-приложении есть компонент аутентификации, который является частью связующего ПО конвейера OWIN. Этот компонент запрашивает и проводит аутентификацию пользователей перед тем, как отправить запрос в главное MVC-приложение. Тем не менее на данный момент, используя Web.API или SignalR в качестве связующих компонентов, можно реализовать ASP.NET Web.API приложение или приложение SignalR, которое не будет зависеть ни от одного более крупного приложения на другом конце конвейера.

Именно здесь размывается отличие между связующим элементом и приложением. Итак, заглянем в файле Web.config в секцию system.web -> authentication. Если вы уже создавали веб-приложения, то возможно, уже знаете, что mode может принимать значения "forms" или "Windows". В этом случае для него задано значение "none", поскольку традиционный модуль аутентификации форм заменен на связующий компонент OWIN. Так где же это настраивается? Возможно, вы уже обращали внимание на этот класс StartUp из каталога Root.

Именно в этом методе configuration, принимающем в качестве параметра IAppbuilder, регистрируются все связующие OWIN-компоненты. На данный момент у нас имеется единственный компонент для аутентификации, сконфигурированный с помощью метода ConfigureAuth. Нажмем правую кнопку мыши и выберем пункт "Перейти к определению". В результате мы оказываемся в файле Startup.Auth.cs, расположенном в папке _AppStart. В нем определяется оставшаяся часть класса StartUp и разрешается аутентификация на основе cookie для пользователей из хранилища пользователей приложения, а также из хранилища пользователей внешних провайдеров.

В следующем видео мы более подробно рассмотрим возможности аутентификации в нашем MVC-приложении. Если вы хотите получше изучить Katana и возможные виды компонентов, то можете перейти на сайт проекта katanaproject.codeplex.com.