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

247

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

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

Теги:
asp.net-mvc
iis
owin
katana

5 ответов

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

В 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 размещать его без усилий... (малина Pi).

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


Изображение 5956


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

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

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

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

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

EDIT: теперь он доступен как пакет nuget: Owin.Catify!

  • 0
    Мое редактирование проясняет для вас вещи?
  • 0
    Ваш ответ, конечно, хорош, поскольку проголосовал, но мне сложно это понять.
Показать ещё 10 комментариев
188
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) вместе и много раз нас путают между различием между этими двумя терминами. Итак, Katana - это реализация Microsoft интерфейса OWIN. Скажем, есть еще одна компания под названием BIG-BOSS, которая хотела создать собственную реализацию OWIN, они могут это сделать и назвать их реализацию как "BATANA" и рекламировать такие фразы, как OWIN/BATANA.

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

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

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

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

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

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

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

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

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

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

  • GET Inventory
  • УДАЛИТЬ Идентификатор инвентаря = 4
  • Идентификатор инвентаря PUT = 5

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

Хорошо, поэтому я понял, что если я хочу создать веб-сайт ASP.NET MVC, у меня нет возможности заменить IIS, тогда почему мне нужно знать о Катане в данный момент?

Ответ: Несмотря на то, что 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-колесный автомобиль… не соответствует спецификации, тогда делает это? или я что-то упустил. Хорошая аналогия в любом случае. Сделано проще для понимания
Показать ещё 7 комментариев
44

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

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

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

Изображение 5957

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

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

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

  • 1
    Нужно ли мне? @Stephane уже предоставил достаточно ссылок.
  • 0
    Итак, в этом ответе вы говорите, что «Катана собирается полностью заменить сборку System.Web и старый конвейер ASP.NET». Означает ли это, что он может заменить все серверные адаптеры на диаграмме выше, или, может быть, просто host.systemweb?
Показать ещё 4 комментария
13

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

OWIN предназначен для развязки веб-серверов из рамок, в которых вы работаете. Он может сделать приложения легкими и переносимыми для микшеров и серверов.

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

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

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

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

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

0

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

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

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

Ещё вопросы

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