Когда я должен использовать OWIN Katana?

270

Я новичок в OWIN и Katana. Я действительно не понимаю, почему я должен использовать OWIN, в то время как я могу использовать IIS. Проще говоря, мой вопрос: что я потеряю, если пропущу обучение OWIN и использую IIS для своих сайтов?

Я погуглил, но нет простого объяснения. Существует некоторая информация здесь , но они используют некоторые жаргонные фразы , так что я не могу понять.

Сейед Мортеза Мусави
источник
2
Интересно, насколько сильно на направление OWIN влияет IoT. Неужели мы не можем прикрепить IIS к Arduino?
Страж

Ответы:

279

В asp.net WebApi v2 конвейер OWIN становится по умолчанию. В конечном итоге это будет стандартный конвейер для любого проекта asp.net.

Я не могу выразить это лучше, чем написано здесь: http://www.asp.net/aspnet/overview/owin-and-katana/an-overview-of-project-katana

Раздел «Открытый веб-интерфейс для .NET (OWIN)» прекрасно объясняет цели OWIN.

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

В свою очередь, приложения могут быть легче перенесены между хостами и потенциально целыми платформами / операционными системами. Например, возможность разместить приложение в консоли или любом процессе позволяет Mono размещать его без усилий ... (Raspberry Pi любой)

Второй аспект заключается в том, что он работает как конвейер.


Овин Трубопровод


Вы можете подключить любое промежуточное программное обеспечение (и столько, сколько хотите) между веб-сервером и вашим приложением.
Это позволяет использовать более модульные решения. Вы можете разрабатывать распространяемое промежуточное программное обеспечение, которое может повлиять на запрос / ответ, поступающий в / из вашего приложения, но при этом отделить эти модули от кода приложения.

Чтобы убедиться в преимуществах этого модульного подхода, взгляните на пакеты nuget, доступные для OWIN: http://www.nuget.org/packages?q=owin

Многие из этих пакетов ранее были основными функциями asp.net и были извлечены как промежуточное ПО.
Например, добавление поддержки входа в систему с использованием различных поставщиков OAuth становится проблемой инфраструктуры (промежуточное программное обеспечение) и больше не должно быть частью кода вашего приложения:

Или, если вы хотите автоматически заменить все изображения с вашего сайта изображениями милых котов, вы можете сделать это также прозрачно:

https://github.com/serbrech/Owin.Catify

РЕДАКТИРОВАТЬ: Теперь он доступен в виде пакета Nuget : Owin.Catify !

Stéphane
источник
Ваш ответ, конечно, хорош, поскольку проголосовал, но мне сложно это понять.
Сейед Мортеза Мусави
5
Как я могу сделать это лучше? Что ты не понимаешь?
Стефан
1
Несмотря на то, что OWIN имеет свои преимущества, кажется, что его трудно отладить, поскольку поток выполнения будет эффективно «переходить» с промежуточного программного обеспечения на промежуточное. Каждый потенциально меняет ответ по пути. Отладчик присоединения Visual Studio, похоже, не в состоянии следить за процессом. И когда возникает исключение (в веб-приложении), вы просто получите пустую страницу с ответом 200 OK. Никаких ошибок, кроме журнала событий Windows.
simbolo
7
Я нашел объяснение по адресу weblogs.asp.net/pglavich/owin-katana-and-getting-started полезным. Это способ отделить ваше приложение от IIS и зависимость от сборки System.Web. Сокращение количества компонентов, находящихся в конвейере HTTP, благодаря чему приложение будет легким.
Теренс
2
Я должен добавить, что в моей нынешней среде некоторые команды используют WebApi, а некоторые - Нэнси. Так как оба находятся поверх OWIN, мы можем совместно использовать промежуточное программное обеспечение, такое как обработка ключа Api или аутентификация без сохранения состояния, независимо от платформы. Мы позволяем команде выбирать то, что им подходит больше всего. Это истинное преимущество OWIN.
Стефан
209
public interface OWIN
{
   void ListenHttpCallAndServeWebPage();    
}

namespace Microsoft.OWIN
{
   public class Katana : OWIN
   {
      public void ListenHttpCallAndServeWebPage()
      {
         // listen to a port for HTTP call and serve web page
      } 
   }
}

Да это правильно. OWIN - это интерфейс, а Katana - реализация интерфейса OWIN от Microsoft . Поэтому мы слышим эти 2 слова (OWIN / KATANA) вместе, и мы часто путаем разницу между этими 2 терминами. Итак, Katana - это реализация Microsoft интерфейса OWIN. Скажем, есть другая компания по имени BIG-BOSS, которая хотела создать свою собственную реализацию OWIN, они могут сделать это и назвать свою реализацию «BATANA» и рекламировать фразы, такие как OWIN / BATANA.

Итак, почему ОИН !!!

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

Затем правительство этой страны разработало спецификацию для производителей транспортных средств. Спецификация выглядит следующим образом:

  1. Транспортное средство должно иметь 4 колеса
  2. Автомобиль должен иметь рулевое управление.
  3. Автомобиль должен иметь фары и сигнальные огни.

Таким образом, на основании этих спецификаций любой может изготовить автомобиль в соответствии с различными потребностями, и они могут соответственно назвать свое транспортное средство. Таким образом, седан, пикап, внедорожник, фургон, ... и т. Д. Все виды автомобилей появились на рынке. Если кому-то не нужно нести тяжелые вещи постоянно, а нужен автомобиль только для того, чтобы идти на работу, он может купить маленький седан. Кто-то может купить внедорожник, если ему нужно немного больше энергии.

Исходя из приведенного выше примера, мы можем сказать, что наше веб-приложение ASP.NET использует сборку System.Web, которая сильно загружена (например, грузовик), и если мы хотим создать небольшое веб-приложение, в котором наша цель - просто обслуживать некоторые файлы на основе при небольшом наборе запросов мы обязаны использовать эту тяжелую сборку System.Web (грузовик). Теперь OWIN появляется. OWIN - это набор спецификаций (мы можем назвать его интерфейсом), который определяет сервер. На основании этой спецификации кто-то (например, производитель автомобилей) может создавать серверы различного типа в зависимости от конкретных проблемных областей / потребностей приложений. Microsoft создала свою собственную реализацию для OWIN с именем Katana таким же образом, который может служить веб-API. Поскольку WebAPI - это легковесная технология, которая не нуждается в полномасштабных вещах System.Web,

Теперь, если вы спросите: « Нужно ли мне это '? Ответ: «Это зависит от вашей потребности в производительности». Если вы не против того, чтобы ездить на своем грузовике, даже если вы собираетесь посмотреть фильм, возможно, вам не нужен OWIN. Но если вы чувствуете, что легкий автомобиль Седан - это все, что вам нужно для езды по городу, на небольшом расстоянии, посмотреть фильм ... и т. Д. Да, вы можете проверить, какие реализации OWIN доступны на рынке. Katana - одна из реализаций OWIN, поэтому вы можете проверить, что предлагает Katana. Не только Katana, если какая-либо другая компания внедряет OWIN в соответствии с конкретным доменом (например, сервер для медицинских устройств, который будет загружать новейшую информацию о лекарствах), и если вы являетесь врачом, возможно, вы можете проверить эту реализацию OWIN. Более того, вы сами можете создать собственную реализацию OWIN для любой конкретной ниши.

С точки зрения веб-приложений, если вы простой веб-разработчик, разрабатывающий пользовательские веб-сайты для своих клиентов, возможно, вам не нужно беспокоиться о пользовательской реализации OWIN, поскольку IIS будет служить вам сбалансированным образом. Если вы создадите проект Web API, вы получите готовый шаблон на основе Katana из Visual Studio -> New Project, так что вам не придется беспокоиться ни о чем, кроме изучения специфических методов Katana. На данный момент Katana не достаточно зрелая, чтобы полностью заменить потребность в IIS для ASP.NET MVC, но, возможно, в будущем это произойдет.

Тогда, когда мне может понадобиться написать мою собственную реализацию OWIN?

Ответ: скажем, к примеру, вы разработали приложение для Windows, которое должно работать в фоновом режиме как сервер и прослушивать номер порта XXXX. Ваш сервер будет отвечать только на некоторые запросы:

  1. ПОЛУЧИТЬ инвентарь
  2. УДАЛИТЬ ID инвентаря = 4
  3. PUT Inventory ID = 5

Вот и все. И ничего больше. Итак, зачем вам нужен полный веб-сервер IIS для этой маленькой задачи? В этом случае вы можете создать свою собственную реализацию OWIN. (Возможно, вы будете использовать Katana для этого)

Итак, я понял, что, если я хочу создать веб-сайт ASP.NET MVC, у меня нет возможности заменить IIS, то зачем мне сейчас знать о Katana?

Ответ: Несмотря на то, что Katana недостаточно развита, чтобы заменить потребность в IIS, чтобы вы могли разместить свой веб-сайт ASP.NET MVC непосредственно на Katana, но Katana реализовала множество интересных интерфейсов OWIN, чтобы вы могли воспользоваться преимуществами использования этих функций на стороне рядом Например, разрешить пользователям входить в систему с помощью Facebook, Google, Twitter и т. Д. Раньше было непросто. Katana предоставляет вам множество хуков (в качестве промежуточного программного обеспечения), чтобы вы могли позволить Katana легко позаботиться о внешней аутентификации на основе социальных сетей без написания программного кода. Есть много других преимуществ использования Katana, которые вы можете узнать, когда начнете использовать эту технологию.

Эмран Хуссейн
источник
1
Я бы не сказал, что OWIN - это, по сути, интерфейс, это стандарт, протокол для стандартизации взаимодействия приложения с хостом. Но важно уточнить, что Katana - это просто реализация этого стандарта, разработанного и поддерживаемого Microsoft. Другие реализации перечислены здесь: github.com/owin/owin/wiki/Implementations
Стефан,
1
немного сбивает с толку, когда вы говорите, что спецификация для автомобиля - «4 колеса», а затем кто-то делает 18-колесный автомобиль ... не соответствует спецификации, тогда делает это? или я что-то упустил. Хорошая аналогия в любом случае. Сделано проще для понимания
Кураса
1
@Stephane: Ну, это может быть не просто интерфейс, я попытался дать идею высокого уровня, чтобы кто-то мог понять отношения между OWIN и KATANA, не перегруженный множеством технических жаргонов.
Эмран Хуссейн
1
«Несмотря на то, что Katana недостаточно развита, чтобы заменить потребности IIS, чтобы вы могли разместить свой веб-сайт ASP.NET MVC непосредственно на Katana», похоже, это означает, что IIS не важен, когда Katana станет 1.0. Нет, нет, это не правильно. У Microsoft есть Microsoft.Owin.Host.IIS, что позволяет размещать веб-приложения + Katana непосредственно на IIS (конечно, без System.Web). IIS по-прежнему является ключевым компонентом для приложений ASP.NET на платформе Microsoft.
Лекс Ли
2
Было бы здорово, если бы вы могли помочь мне в понимании -what is lightweight part, i mean if Katana is compared to IIS, by which means it is lightweight ( say it does not do step#1,2,3 etc.. , but IIS does that.
Ариндам Наяк
47

Более простая версия этого ответа заключается в том, что Катана собирается полностью заменить сборку System.Web и старый конвейер ASP.NET, что дает вам как большую гибкость (используйте ее в большем количестве сценариев и используйте только те части, которые вам нравятся), так и производительность.

Таким образом, каждый должен следить за его развитием сейчас и быть готовым переключиться, когда он наконец завершится.

Ниже приведена схема, которую я нарисовал, чтобы заполнить детали, которые Microsoft не может включить в эту статью .

введите описание изображения здесь

OWIN - это такой стандарт, что позволяет приложениям работать на нем и забывать обо всем, что находится под ним. С другой стороны, сам OWIN использует различные хост-адаптеры, чтобы обеспечить связь с базовыми веб-серверами (IIS и многими другими).

Сейчас я работаю с автором веб-сервера Jexus, чтобы выяснить, как мы можем написать хост-адаптер для соединения OWIN / Katana и Jexus. Мы действительно рады узнать, что OWIN является гибким и легко настраиваемым.

Ссылка: http://blog.lextudio.com/2014/06/why-owin-matters-a-lot-for-asp-net-developers/

Лекс Ли
источник
Итак, в этом ответе вы говорите, что «Катана собирается полностью заменить сборку System.Web и старый конвейер ASP.NET». Означает ли это, что он может заменить все серверные адаптеры на диаграмме выше, или, может быть, просто host.systemweb?
сети
@netfed, к сожалению, сам OWIN делает, и теперь ASP.NET Core вступает во владение. Этот вопрос и ответы все устарели.
Лекс Ли
Ага!! Итак, у ядра Asp.net есть возможности Owin? Или ядро ​​Asp.net работает как набор модулей, где вы можете реализовать только те модули, которые вам нужны, и вам не нужно использовать больший набор функций, встроенных в System.web?
Netfed
2
@netfed, OWIN умирает (моя мобильная клавиатура изменила мои слова). ASP.NET Core поддерживает подход промежуточного программного обеспечения, и вы можете собирать его компоненты так, как вам нравится, и не более того System.Web.
Лекс Ли
На этом все заканчивается :-) Спасибо за разъяснения.
сети
15

Почему я должен использовать OWIN, а я могу использовать IIS?

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

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

С последних нескольких лет Microsoft делает веб-инструменты более гибкими и отзывчивыми по мере того, как их план развивается. Например, разработка ASP.Net MVC и ASP.Net Web API. Они не зависят от System.Web dll, что, по-моему, является огромным бременем для них. Преимущество заключается в том, что исправления могут быть предоставлены своевременно, а цикл быстрее, чем когда-либо. Также теперь разработчики могут развертывать эти приложения на пользовательских хостах OWIN или Katana, что является ссылкой на реализацию OWIN.

Какой смысл в конце концов?

Microsoft выпустила проект, который представляет собой облегченный веб-хостинг на основе OWIN поверх IIS, под названием `Helios. Цель состоит в том, чтобы избежать отношений ASP.NET/IIS, предоставляя некоторые независимые небольшие компоненты, которые можно использовать, устанавливать и управлять независимо, работая на веб-хосте, который реализует спецификации OWIN.

Одной из основных причин является фактор производительности. Helios сможет достичь в 2–3 раза большей пропускной способности, чем стандартное приложение ASP.Net. С точки зрения потребления памяти, Helios намного лучше, чем System.Web dll. В взятом тесте архитектура Helios позволила образцу приложения выполнить 50000 одновременных запросов с примерно 1 ГБ меньше по сравнению со стандартным приложением ASP.Net.

nznoor
источник
1
Вы можете найти этот пост полезным. simple-talk.com/dotnet/.net-framework/...
nznoor
0

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

Вы спросили, зачем использовать OWIN, а не IIS, но это не альтернативы друг другу. OWIN находится между IIS и вашим приложением, так что вы можете отключить IIS, не переписывая свое приложение.

Вы также можете проверить эту страницу https://github.com/Bikeman868/OwinFramework/wiki/OWIN

bikeman868
источник