Як пояснити Катану та 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
  • Сигнал R

ASP.NET MVC та Web Forms все ще працюють виключно через System.Web, і в кінцевому рахунку є план також відключити їх.

З іншого боку, IIS - це хороший, винахідливий хост для веб-серверів. Цілі проблеми продуктивності ASP.NET з використанням IIS мають лише глибоке коріння System.Web. До останнього часу, коли ви вирішували, як розмістити ваш веб-сервер, у вас були два варіанти:

  • IIS
  • Самостійний господар

Тож якби ви хотіли виступу, ви б пішли на варіант самостійного ведення. Якби ви хотіли отримати багато нестандартних функцій, які надає IIS, ви б пішли на IIS, але втратили б продуктивність.

Тепер є третя опція, бібліотека Microsoft на ім'я Helios (поточне кодове ім'я), яка має намір видалити System.Webз шляху, і дозволяє використовувати IIS більш "чистішим" способом, без зайвих бібліотек або модулів. Зараз Helios перебуває у версії до випуску, і чекає на більше відгуків спільноти, щоб зробити його повністю підтримуваним продуктом Microsoft.

Сподіваюся, що це пояснення прояснює речі для вас краще.

EDIT (вересень 2014 р.):

З розвитком ASP.NET vNext, Katana повільно виходить на пенсію. Версія 3.0, швидше за все, буде останньою основною версією Катани як окремої основи.

Однак усі концепції, введені разом з Katana, інтегруються в ASP.NET vNext, що означає, що модель програмування буде майже однаковою. Цитата з допису на форумі, зробленого Девідом Фоулером (архітектор ASP.NET vNext):

vNext є спадкоємцем Катани (саме тому вони схожі на таке). Катана стала початком відриву від System.Web та більш модульних компонентів для веб-стека. Ви можете бачити vNext як продовження цієї роботи, але йти набагато далі (новий CLR, нова система проектів, нові http-абстракції).

Все, що існує сьогодні в Катані, зробить це шлях у vNext.

EDIT (лютий 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 і прийматимуть внески громад.

EDIT (травень 2015 р.):

Крім того, бренд ASP.NET Web API буде припинено, однак його технологія буде базовою для нового ASP.NET MVC 6. Попередні версії ASP.NET MVC були побудовані шляхом впровадження IHttpHandler, інтерфейсу, визначеного в System.Web. ASP.NET MVC 6 усуває цю залежність, роблячи її портативною для різних платформ та веб-серверів.

EDIT (травень 2016 р.):

ASP.NET 5 офіційно буде перейменований на ASP.NET Core, починаючи з випуску Candidate 2, який планується випустити найближчим часом. Те саме стосується Entity Framework 7, який буде перейменований на Entity Framework Core. Більш детальну інформацію про офіційне оголошення та причини цього можна знайти в блозі Скотта Хензельмана: ASP.NET 5 мертвий - Представляємо ASP.NET Core 1.0 та .NET Core 1.0

EDIT (травень 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 for node.js або Rack for Ruby, оскільки методи, які вони використовують, схожі.

1
Ця стаття може також допомогти скласти уявлення про історичні проблеми, вирішені OWIN / катана: 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
Посереднє програмне забезпечення. Роз'єднання програми від середовища хостингу, роблячи підключення.
Славо

59

Я спробую висвітлити це з практичної точки зору.

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

Що саме є OWIN і які проблеми він вирішує (простими словами). Яке його відношення до IIS? OWIN ( Відкритий веб-інтерфейс для .NET ) - це стандарт ( специфікація OWIN ), а Katana є .NET-бібліотекою, ви можете отримати тут самовідвід . OWIN та Катана стали дещо синонімами в Інтернеті.
Перед OWIN вашим єдиним варіантом було IISвикористання OWIN, ви можете використовувати будь-яку іншу програму (яка має точку входу) як веб-сервер.

Чи замінює OWIN IIS? якщо ні, то в яких ситуаціях найкраще підходить OWIN?
Ні, це не замінює IIS, ви можете використовувати OWIN і IIS, що Microsoft.Owin.Host.SystemWebдля цього є обов'язковим . Це найкраще підходить, якщо ви хочете оптимізувати / змінити спосіб оброблення в IIS, або ви хочете створити власний веб-сервер із, скажімо, програми Windows Forms.

Як OWIN міг допомогти мені у щоденних робочих проектах?
Це може зменшити експлуатаційні витрати вашого сервера, оскільки веб-серверам більше не потрібно запускатись на IIS (Windows) (сервери Windows дорожчі, ніж на базі Unix, і ви можете запустити його на консольній програмі під Mono в Linux).

Як OWIN міг допомогти мені в проектах самовдосконалення?
Навчання Microsoft.Owin(та інші відповідні бібліотеки OWIN) покращать ваші знання про те, як працює зв’язок HTTP між клієнтом та веб-сервером.

Добре читайте, якщо ви хочете зрозуміти більше про те, що таке Katana та OWIN.


6
Молодці і спасибі за те, що ви прямо відповідали на поставлені запитання, а не вирушали вниз по тангенціальній смузі.
Дав

Що робити, якщо ми завжди використовуємо сервер, що підтримує Microsoft IIS? Виявляється, що у нових шаблонах WebApi2 за замовчуванням OWIN є типовим. Чи слід його видаляти як орієнтир, якщо я планую розміщуватись лише в IIS / завжди?
TechTurtle

@TechTurtle Привіт, я рекомендую розмістити його як окреме запитання.
Матас Вайткевічус

Дуже чітке пояснення. Дякуємо за корисну інформацію
Uttam

9

Що таке OWIN?

OWIN розшифровується як Open Web Interface для .NET. OWIN - специфікація, яка описує, як рамки веб-розробки, такі як ASP.NET MVC, повинні взаємодіяти з веб-серверами. Метою OWIN є декупаж веб-додатків із веб-сервера шляхом введення рівня абстракції. Така абстракція дозволяє запускати один і той же додаток на всіх веб-серверах, які підтримують OWIN. Крім того, це спрощує загальну систему, оскільки шар абстракції може забезпечити легку інфраструктуру для розміщення програм. IIS надає багатий набір функцій веб-додаткам. Однак веб-додаткам можуть не знадобитися всі ці функції. Їм може бути достатньо мінімальних можливостей обробки HTTP. Хост, сумісний з OWIN, може забезпечити таке середовище хостингу для цих додатків. Більше того, Ви можете визначити конвеєр модулів, які використовуються під час обробки запиту. Трубопровід OWIN - це ланцюжок компонентів, сумісних з OWIN, через які проходить запит.

Що таке Катана?

Katana - це набір компонентів Microsoft, побудований за технічними умовами OWIN. Деякі з цих компонентів включають Web API, ASP.NET Identity та SignalR.

Вище витяг із статті CodeGuru: http://www.codeguru.com/csharp/.net/net_asp/overview-of-owin-and-katana.htm

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