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

298

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

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

  • Что такое OWIN и какие проблемы он решает (простыми словами). Каково его отношение к IIS?
  • OWIN заменяет IIS? если нет, то в каких ситуациях лучше всего подходит OWIN?
  • Как может OWIN помочь мне в моих ежедневных проектах?
  • Как OWIN может помочь мне в проектах самосовершенствования?
  • 0
    Вы можете подумать об изменении принятого ответа, учитывая, что несколько пунктов не являются действительно правильными - вводят в заблуждение.
  • 3
    Моя книга на ASP.net предлагает реализовать Identity и класс UserManager через OWIN, и я действительно не вижу в этом смысла. Это оставило меня в полном замешательстве ...
Теги:
iis
owin
katana

4 ответа

356
Лучший ответ

Что касается комментария выше, 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

  • 13
    +1 за упоминание о Helios
  • 2
    @ebramtharwat Теперь, спустя год, это не похоже на то, что Гелиос это вещь
Показать ещё 7 комментариев
74

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

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

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

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

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

  • OWIN - это, по сути, набор лучших практик, которые были доказаны в сообществах веб-разработчиков. Он показывает способ внедрения веб-приложений, которые очень открыты для расширяемости. Поскольку каждый веб-разработчик должен постоянно находиться на переднем крае новых технологий, это один из способов оставаться в курсе всего сообщества веб-разработчиков, а не только .NET. Если вы изучите OWIN, было бы намного легче изучить другие веб-разработки, такие как Express для Node.js или Rack для Ruby, потому что используемые ими методы похожи.
  • 1
    Эта статья может также помочь понять исторические проблемы, решаемые OWIN / katana : asp.net/aspnet/overview/owin-and-katana/… . Тем не менее, только эти платформы поддерживаются прямо сейчас на хосте OWIN : owin.org/#projects . Если ваше приложение использует любую из этих структур приложений, оно может быть размещено на OWIN.
  • 0
    Можете ли вы опубликовать здесь последовательность входящих запросов от браузера до точки отклика в браузере при использовании owinhost.exe. Я не смог найти документ в этой теме.
Показать ещё 3 комментария
57

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

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

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

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

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

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

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

  • 6
    Отлично, спасибо, что ответили прямо на вопросы, а не пошли дальше по касательной.
  • 0
    Что делать, если мы всегда используем сервер Microsoft IIS для хостинга? Похоже, что OWIN используется по умолчанию в новых шаблонах WebApi2. Должен ли я удалить его в качестве ссылки, если я планирую размещать только в IIS / всегда?
Показать ещё 2 комментария
7

Что такое 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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню