Как объяснить 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

Венкатеш Мунианди
источник