Как объяснить Katana и OWIN простыми словами и употреблениями?


337

Я прочитал много статей о проектах OWIN и Katana, но я не мог получить полную картину этого.

Для обычного веб-разработчика, который использует ASP.NET:

  1. Что именно OWIN и какие проблемы он решает (простыми словами). Какое отношение это имеет к IIS?
  2. OWIN заменяет IIS? если нет, то в каких ситуациях OWIN лучше всего подходит?
  3. Как OWIN может помочь мне в моих ежедневных рабочих проектах?
  4. Как OWIN может помочь мне в проектах по самосовершенствованию?

Вы можете рассмотреть вопрос об изменении принятого ответа, учитывая, что несколько пунктов не являются действительно правильными - вводят в заблуждение.
— Адмир Тузович

3
Моя книга на ASP.net предлагает реализовать Identity и класс UserManager через OWIN, и я действительно не вижу в этом смысла. Это оставило меня в полном замешательстве ...
— Люк

Ответы:


409

Что касается комментария выше, OWIN не является основой. OWIN - это спецификация того, как должны создаваться веб-серверы и веб-приложения, чтобы разделить их и разрешить перемещение приложений ASP.NET в среды, которые ранее не поддерживались.

До OWIN при создании приложения ASP.NET вы были привязаны к IIS из-за сильной зависимости от System.Webсборки.

System.Web это то, что существует со времен ASP (не версия .NET) и содержит много вещей, которые вам могут даже не понадобиться (например, веб-формы или авторизация URL-адресов), которые по умолчанию выполняются при каждом запросе, что потребляет ресурсы и делает ASP Приложения .NET в целом работают намного медленнее, чем его аналоги, такие как, например, Node.js.

Сам OWIN не имеет никаких инструментов, библиотек или чего-либо еще. Это просто спецификация.

Katana, с другой стороны, является полностью разработанной средой, созданной для создания моста между текущими средами ASP.NET и спецификацией OWIN. На данный момент Katana успешно адаптировала следующие платформы ASP.NET для OWIN:

  • Веб-API
  • Сигнал Р

ASP.NET MVC и веб-формы по-прежнему работают исключительно через System.Web, и в долгосрочной перспективе планируется также разделить их.

С другой стороны, IIS является хорошим, находчивым хостом для веб-серверов. Все проблемы производительности ASP.NET с использованием IIS имеют глубокие корни System.Webтолько в. Вплоть до недавнего времени, когда вы решали, как разместить свой веб-сервер, у вас было два варианта:

  • IIS
  • Self-хост

Поэтому, если вы хотите получить представление, вы можете выбрать вариант с собственным хостом. Если вы хотите использовать множество встроенных функций IIS, вы бы выбрали IIS, но потеряли бы производительность.

Теперь есть 3-й вариант, библиотека Microsoft с именем Helios (текущее кодовое имя), которая намеревается удалитьSystem.Web , и которая позволяет вам использовать IIS более «чистым» способом, без каких-либо ненужных библиотек или модулей. Helios в настоящее время находится в предварительной версии и ждет большего количества отзывов сообщества, чтобы сделать его полностью поддерживаемым продуктом Microsoft.

Надеюсь, что это объяснение проясняет ситуацию лучше для вас.

РЕДАКТИРОВАТЬ (сентябрь 2014 г.):

В процессе разработки ASP.NET vNext Катана постепенно выходит на пенсию. Версия 3.0, скорее всего, станет последним основным выпуском Katana в качестве автономного фреймворка.

Тем не менее, все концепции, представленные в Katana, интегрируются в ASP.NET vNext, а это означает, что модель программирования будет практически одинаковой. Цитата из сообщения на форуме, сделанного Дэвидом Фаулером (Архитектор ASP.NET vNext):

vNext является преемником Katana (именно поэтому они так похожи). Katana стала началом отказа от System.Web и более модульных компонентов для веб-стека. Вы можете видеть vNext как продолжение этой работы, но идти гораздо дальше (новый CLR, новая система проектов, новые абстракции http).

Все, что существует сегодня в Катане, попадет в vNext.

РЕДАКТИРОВАТЬ (февраль 2015 г.):

ASP.NET vNext теперь известен как ASP.NET 5 и будет построен на основе .NET Core 5. .NET Core 5 - это облегченная факторинговая версия .NET Framework, предназначенная для поддержки целей ASP.NET 5 и .NET Native. , Однако ASP.NET 5 также будет поддерживаться .NET Framework 4.6, который должен стать доступным вместе с .NET Core 5. Как ASP.NET 5, так и .NET Core 5 будут лицензированы в рамках MIT и будут принимать участие сообщества.

РЕДАКТИРОВАТЬ (май 2015 г.):

Кроме того, торговая марка ASP.NET Web API будет прекращена, однако ее технология станет основой для нового ASP.NET MVC 6. Предыдущие версии ASP.NET MVC были созданы с использованием интерфейса IHttpHandler, определенного в System.Web. ASP.NET MVC 6 устраняет эту зависимость, делая его переносимым на различные платформы и веб-серверы.

РЕДАКТИРОВАТЬ (май 2016 г.):

ASP.NET 5 будет официально переименован в ASP.NET Core, начиная с Release Candidate 2, выпуск которого запланирован в ближайшее время. То же самое будет применяться к Entity Framework 7, который будет переименован в Entity Framework Core. Более подробную информацию об официальном объявлении и причинах этого можно найти в блоге Скотта Хансельмана: ASP.NET 5 мертв - Представляем ASP.NET Core 1.0 и .NET Core 1.0

РЕДАКТИРОВАТЬ (май 2016 г.):

С выпуском Release Candidate 2 ASP.NET Core был изменен таким образом, чтобы будущие веб-приложения были фактически просто консольными приложениями .NET Core для обработки входящих HTTP-запросов . Эта концепция делает ASP.NET Core еще более согласованным с подходом Microsoft к поддержке архитектуры микросервисов и ее реализации через Azure Service Fabric. Дополнительную информацию можно найти в официальном сообщении в блоге: Объявление о ASP.NET Core RC2


2
@ebramtharwat Теперь, год спустя, это не похоже на то, что гелиос - это вещь
— Андрей Савиных

1
Вы упомянули, что Katana v3, скорее всего, станет последним основным выпуском, так что в дальнейшем, какие рамки будут использоваться вместо Katana?
— Винсент

2
Возможности Katana были интегрированы в ASP.NET 5. Katana будет продолжать существовать для обеспечения обратной совместимости.
— Адмир Тузович

2
@ AdmirTuzović: отличный ответ. Какие еще обновления можно добавить с мая 2016 года?
— Игби Крупный человек

2
Первоначальный ответ с последующими правками очень хорошо объясняет переходы. Спасибо за попытку.
— Санг Суантак

71

Если бы мне нужно было определить OWIN для себя, это было бы: «Лучшие идеи от сообществ веб-разработчиков Ruby и Node.js, приходящие в .NET»

Но это не поможет ни одному разработчику ASP.NET. Мое собственное определение будет что-то вроде:

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

  1. OWIN - это спецификация интерфейса. Он отделяет веб-приложения от IIS.

  2. Если вы используете готовые компоненты (то же самое, что и Katana), то некоторые части функциональности приложения гораздо проще реализовать по сравнению со старым ASP.NET. Проверка подлинности с помощью сторонних поставщиков удостоверений (Facebook, Twitter) является одним из примеров этого.

  3. OWIN - это, по сути, сборник лучших практик, которые были проверены в сообществах веб-разработчиков. Он показывает способ реализации веб-приложений, который очень открыт для расширяемости. Поскольку каждый веб-разработчик должен постоянно быть на переднем крае новых технологий, это один из способов быть в курсе всего сообщества веб-разработчиков, а не только .NET. Если вы изучите OWIN, было бы намного легче изучить другие фреймворки веб-разработки, такие как Express для node.js или Rack для Ruby, потому что используемые ими практики похожи.

1
Эта статья может также помочь понять исторические проблемы, решаемые OWIN / katana : asp.net/aspnet/overview/owin-and-katana/… . Тем не менее, только эти платформы поддерживаются прямо сейчас на хосте OWIN : owin.org/#projects . Если ваше приложение использует любую из этих структур приложений, оно может быть размещено на OWIN.
— Прабурадж

Можете ли вы опубликовать здесь последовательность входящих запросов от браузера до точки отклика, возвращая обратно в браузер при использовании owinhost.exe. Я не смог найти документ в этой теме.
— Сараванан

2
Пункты 1 и 2 вводят в заблуждение, OWIN не может ничего заменить самостоятельно. Как и пункт 4, это всего лишь спецификация, которая требует какой-то реализации, причем в качестве эталонных реализаций Microsoft пока называют Katana и Helios.
— Мани Гэндхэм

Лучшие идеи сообществ веб-разработчиков Ruby и Node.js, пришедшие в .NET .... можете ли вы перечислить некоторые из них \
— Lakshay

1
Middleware. Отключение приложения от среды размещения делает их подключаемыми.
— Слава

59

Я постараюсь осветить это с практической точки зрения.

Katana - это имя проекта для реализации OWIN в Microsoft .

Что именно OWIN и какие проблемы он решает (простыми словами). Какое отношение это имеет к IIS? OWIN ( Open Web Interface для .NET ) - это стандарт ( спецификация OWIN ), а Katana - это библиотека .NET, которую вы можете получить здесь . Овин и Катана стали несколько синонимами в Интернете.
До OWIN ваш единственный вариант был IISс OWIN, вы можете использовать любое другое приложение (с точкой входа) в качестве веб-сервера.

OWIN заменяет IIS? если нет, то в каких ситуациях OWIN лучше всего подходит?
Нет , это не заменяет IIS, вы можете использовать Owin и IIS есть Microsoft.Owin.Host.SystemWebNuGet для этого . Лучше всего, если вы хотите оптимизировать / изменить способ обработки в IIS или создать собственный веб-сервер, скажем, из приложения Windows Forms.

Как OWIN может помочь мне в моих ежедневных рабочих проектах?
Это может снизить эксплуатационные расходы сервера, поскольку вашим веб-серверам больше не нужно работать на IIS (Windows) (серверы Windows стоят дороже, чем на Unix, и вы можете запустить его в консольном приложении под Mono в Linux).

Как OWIN может помочь мне в проектах по самосовершенствованию?
Обучение Microsoft.Owin(и другие связанные библиотеки OWIN) улучшит ваши знания о том, как работает HTTP-связь между клиентом и веб-сервером.

Хорошо читайте, если хотите больше узнать о том, что такое Katana и OWIN.


6
Отлично, спасибо, что ответили прямо на вопросы, а не пошли дальше по касательной.
— Дав

Что если мы всегда будем использовать сервер Microsoft IIS для хостинга? Похоже, что OWIN используется по умолчанию в новых шаблонах WebApi2. Должен ли я удалить его в качестве ссылки, если я планирую размещать только в IIS / всегда?
— TechTurtle

@TechTurtle Hi Tech, я бы рекомендовал разместить его как отдельный вопрос.
— Матас Вайткявичюс

Очень четкое объяснение. Спасибо за полезную информацию
— Уттам

9

Что такое OWIN?

OWIN расшифровывается как Open Web Interface для .NET. OWIN - это спецификация, которая описывает, как фреймворки веб-разработки, такие как ASP.NET MVC, должны взаимодействовать с веб-серверами. Целью OWIN является отделение веб-приложений от веб-сервера путем введения уровня абстракции. Такая абстракция позволяет запускать одно и то же приложение на всех веб-серверах, поддерживающих OWIN. Кроме того, это упрощает систему в целом, поскольку уровень абстракции может обеспечить облегченную инфраструктуру для размещения приложений. IIS предоставляет богатый набор функций для веб-приложений. Однако веб-приложениям могут не понадобиться все эти функции. Для них может быть достаточно иметь минимальные возможности обработки HTTP. Совместимый с OWIN хост может предоставить такую ​​среду размещения для этих приложений. Более того, Вы можете определить конвейер модулей, которые используются во время обработки запроса. OWIN-конвейер - это цепочка OWIN-совместимых компонентов, через которые проходит запрос.

Что такое катана?

Katana - это набор компонентов от Microsoft, созданный с использованием спецификаций OWIN. Некоторые из этих компонентов включают в себя веб-API, ASP.NET Identity и SignalR.

Выше приведена выдержка из статьи CodeGuru: http://www.codeguru.com/csharp/.net/net_asp/overview-of-owin-and-katana.htm

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.