Коли я повинен використовувати OWIN Katana?


270

Я новачок у OWIN та Катані. Я дійсно не розумію, чому я повинен використовувати OWIN, в той час як я можу використовувати IIS. Щоб спростити, моє питання: Що я втрачаю, якщо пропускаю навчання OWIN та використовую IIS для своїх веб-сайтів?

Я гугл, але немає простого пояснення. Існує деяка інформація тут , але вони використовують деякі жаргонні фрази , так що я не можу зрозуміти.



2
Цікаво, на скільки напрям OWIN впливає IoT. Ми не можемо дійсно приклеїти IIS на Arduino.
Sentinel

Відповіді:


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 будь-хто)

Другий аспект полягає в тому, що він працює як трубопровід.


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


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

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

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

Або якщо ви хочете автоматично замінити всі зображення з вашого веб-сайту зображеннями милих котів, ви також можете це зробити прозоро:

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

РЕДАКТУВАННЯ: Тепер він доступний як набір спеціальних пакетів: Owin.Catify !


Ваша відповідь, безумовно, хороша, як це було викликано, але мені важко це зрозуміти.
Сеєд Мортеза Мусаві

5
Як я можу зробити це краще? Чого ти не розумієш?
Стефан

1
Хоча в OWIN є корисні пропозиції, налагоджувати проблему здається важко, оскільки потік виконання файлів ефективно «перескочить» з середнього та середнього програмного забезпечення. Кожен потенційно міняв відповідь по ходу. Відладчик вкладення Visual Studio, схоже, не зможе стежити за потоком. І коли буде виняток (у веб-додатку), ви просто отримаєте порожню сторінку з 200 ОК. Жодного помилки, крім журналу подій Windows.
simbolo

7
Я знайшов пояснення на weblogs.asp.net/pglavich/owin-katana-and-getting-started корисним. Це спосіб відокремити вашу програму від IIS та залежність від збирання System.Web. Зменшення кількості компонентів, що знаходяться в HTTP-конвеєрі, тим самим зберігаючи додаток легким.
Теренс

2
Мені потрібно додати, що в моєму поточному середовищі деякі команди використовують WebApi, а деякі використовують Ненсі. Оскільки обидва сидять на версії OWIN, ми можемо ділитися посередницькими програмами, такими як обробка Api Key або автентифікація без громадянства, незалежно від рамки. Ми дозволяємо команді вибрати те, що їм найбільше підходить. Це справжня користь 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 слова (ОВІН / КАТАНА) разом, і багато разів ми плутаємося між різницею між цими двома термінами. Отже, Katana - це впровадження Microsoft інтерфейсу OWIN. Скажімо, є ще одна компанія на ім'я BIG-BOSS, яка хотіла створити власну реалізацію OWIN, вони можуть це зробити і назвати їх реалізацію як "BATANA" та рекламувати фрази на зразок OWIN / BATANA.

Отже, чому ВЛАСНИЙ !!!

Подумайте про країну, де єдиним транспортним засобом, доступним для руху, є вантажівка. Більш нічого. Якщо ви хочете придбати транспортний засіб, ви б придбали вантажівку. Добре, що раніше служило добре, але люди почали розуміти, що їм не потрібен вантажівка весь час, особливо коли вони хочуть подивитися фільм чи купити молоко, водіння важкої вантажівки не тільки коштує високого палива, але й додайте напруги за кермом. Але так, якщо вони хочуть перевезти багато важких речей, вантажівка дуже добре виконує мету.

Тоді уряд цієї країни розробив специфікацію для виробників транспортних засобів. Специфікація така:

  1. У транспортному засобі потрібно мати 4 колеса
  2. Транспортний засіб повинен мати кермове управління.
  3. У транспортному засобі повинні бути фари та сигнальні ліхтарі.

Отже, виходячи з цих специфікацій, кожен може виготовити транспортний засіб відповідно до різних потреб, і він може відповідно назвати свій транспортний засіб. Тому на ринку з'явилися седан, пікап, позашляховик, VAN, ..etc .. всі види транспортних засобів. Якщо комусь не потрібно весь час перевозити важкі речі, а потрібен транспортний засіб лише для виїзду на робоче місце, він / вона може придбати маленький седан. Хтось може придбати позашляховик, якщо йому потрібно трохи більше енергії.

Виходячи з вищенаведеного прикладу, ми можемо сказати, що наш веб-додаток ASP.NET використовує System.Web Assembly, який дуже завантажений (як вантажівка), і якщо ми хочемо зробити невелику веб-програму, де нашою метою є лише обслуговування деяких файлів на базі за невеликим набором запитів ми зобов’язані використовувати цю важку збірку System.Web (вантажівку). Тепер з'являється OWIN. OWIN - це набір специфікацій (ми можемо називати це інтерфейс), який визначає Сервер. Виходячи з цієї специфікації, хтось (наприклад, виробник транспортного засобу) може робити різні види серверів на основі конкретних проблемних доменів / потреб додатків. Microsoft створила власну реалізацію для OWIN з назвою Katana таким же чином, який може обслуговувати Web API. Оскільки WebAPI - це легка технологія, яка не потребує повноцінного продукту System.Web,

Тепер, якщо ви запитаєте: " Чи потрібно мені це?'? Відповідь: "Це залежить від вашої потреби у виконанні". Якщо ви не проти заїхати на вантажівку навіть для того, щоб подивитися фільм, тоді, можливо, вам не потрібна ОСВІТА. Але якщо ви відчуваєте це, легкий автомобіль «Седан» - це все, що вам потрібно для того, щоб їхати в межах міста, на невеликій відстані, подивитися фільм ... і т. Д. Так, ви можете перевірити, які варіанти реалізації OWIN доступні на ринку. Katana - одна з реалізацій OWIN, тому ви можете перевірити, що Katana пропонує. Не тільки Катана, якщо будь-яка інша компанія впроваджує OWIN відповідно до конкретного домену (наприклад, сервер для медичних пристроїв, який завантажує найновішу інформацію про ліки), і якщо ви є лікарем, можливо, ви можете перевірити цю реалізацію OWIN. Крім того, ви самі можете створити власну реалізацію OWIN, орієнтовану на будь-яку конкретну нішу.

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

Тоді Коли мені може знадобитися написати власну реалізацію OWIN?

Відповідь: Ну, скажімо, наприклад, ви розробили додаток Windows, яке повинно працювати як сервер у фоновому режимі і слухати номер порту XXXX. Ваш сервер відповість лише на такий набір запитів, як цей:

  1. Отримати інвентар
  2. ВИДАЛИТИ Ідентифікатор запасу = 4
  3. Ідентифікатор інвентаризації 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
Stéphane

1
трохи заплутано, коли ти кажеш, що специфікація на транспортний засіб - «4 колеса», а потім хтось робить транспортний засіб на 18 коліс ... не відповідає специфікації, а чи це ...? чи я щось пропускаю. Гарна аналогія все одно. Зробили його легше зрозуміти
kurasa

1
@Stephane: Ну, це може бути не так, як інтерфейс, я намагався дати ідею високого рівня, щоб хтось міг зрозуміти відносини між OWIN та KATANA, не перевантажуючись великою кількістю технічних жаргонів.
Емран Хуссей

1
"Навіть незважаючи на те, що Катана недостатньо зрілий, щоб замінити потребу в IIS, щоб ви могли розмістити свій веб-сайт ASP.NET MVC безпосередньо на Катані", схоже, вказує на те, що 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

Простішою версією цієї відповіді є те, що Katana намагається повністю замінити 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

@netfed, на жаль, OWIN сам робить, і тепер ASP.NET Core бере на себе. Це питання та відповіді застаріли.
Лекс Лі

Ага !! Отже, ядро ​​Asp.net має потенціал Овіна? Або ядро ​​Asp.net працює як сукупність модулів, де ви можете реалізувати лише ті модулі, які вам потрібні, і не потрібно використовувати більшу колекцію функцій, вбудованих у System.web?
netfed

2
@netfed, OWIN помирає (моя мобільна клавіатура змінила мої слова). Хоча ASP.NET Core дотримується підходу проміжного програмного забезпечення, і ви можете збирати його компоненти так, як вам подобається, і не більше System.Web.
Лекс Лі

Це завершує все :-) Дякую за уточнення.
netfed

15

Чому я повинен використовувати OWIN, тоді як я можу використовувати IIS?

OWIN призначений для від'єднання веб-серверів від кадрів, під якими ви працюєте. Це може зробити програми легкими та портативними для змішування каркасів та серверів.

А Katana - це впровадження компонентів OWIN від Microsoft.

З останніх кількох років 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 набагато краще, ніж dll System.Web. У взятому орієнтирі архітектура Helios дозволила зразковій програмі досягти 50000 одночасних запитів із приблизно 1 Гб менше накладних витрат порівняно зі стандартним додатком ASP.Net.


1
Можливо, ця публікація стане вам корисною. simple-talk.com/dotnet/.net-framework/…
nznoor

0

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

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

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.