Подтвердить что ты не робот

Различие между Кестрел и Катаной

В настоящее время я понимаю, что вы можете самостоятельно использовать WebAPI с помощью Katana, и MVC будет иметь эту возможность в будущей версии. По сути, Katana будет вариантом хостинга, доступным как для MVC, так и для WebAPI.

Kestrel вошла в картину, и я вижу, как несколько сотрудников MS ведут блог об этом, демонстрируя хостинг ASP.NET vNext в Linux.

Я понимаю, что и Kestrel, и Katana реализуют трубопровод OWIN.

Оттуда все немного нечеткое. Я спрашиваю себя: почему Кестрел вошла в картину, когда кажется, что Katana может служить той же цели, если вы скомпилировали ее с моно и приложили некоторые усилия, чтобы сделать ее совместимой с платформой (возможно, проще сказать, чем сделать).

Будут ли Kestrel и Katana одинаковой цели? Или какой-то специалист каким-то образом отличается от другого?

Будет ли Kestrel в конечном итоге быть жизнеспособным выбором для развертываний Windows? Или это будет специализировано для не-Windows-сред, а Katana по-прежнему остается выбором для Windows?

Я понимаю, что я, возможно, попросил сравнить яблоко с апельсинами из-за моего незнания Катаны/Кестрел, но если ответ: "Апельсины имеют больше кислотного вкуса, чем яблоки", тогда ИМО отлично действительный ответ.

4b9b3361

Ответ 1

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

Kestrel - веб-сервер кросс-платформенной разработки Microsoft, который можно использовать с ASP.NET 5.

ASP.NET 5 не реализует OWIN, но имеет "мост", чтобы включить компоненты OWIN для использования в приложениях ASP.NET 5, включая запуск в Kestrel.

Ответ 2

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

Цитата ASP.NET 5 Документация:

Kestrel

Kestrel - межплатформенный веб-сервер на базе libuv, кросс-платформенной асинхронной библиотеки ввода-вывода. Пустельга с открытым исходным кодом, и вы можете посмотреть источник Kestrel на GitHub. Вы добавляете поддержку Kestrel, включая "Kestrel" в зависимостях проектов, перечисленных в project.json.

Выбор сервера

Если вы планируете развернуть свое приложение на сервере Windows, вы должны запустить IIS в качестве обратного прокси-сервера, который управляет и запрашивает запросы к Kestrel. Если вы развертываете в Linux, вы должны запустить сопоставимый обратный прокси-сервер, такой как Apache или Nginx, для прокси-запросов к Kestrel.

Для сценариев самообслуживания, таких как запуск в Service Fabric, мы рекомендуем использовать Kestrel без IIS. Однако, если вам требуется аутентификация Windows в сценарии самостоятельного хостинга, вам следует выбрать WebListener.

Итак, я понимаю: если Kestrel был только сервером разработки, его больше нет и каким-то образом заменяет Katana и OWIN.

Ответ 3

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

  • OWIN - это спецификация, которая определяет программный интерфейс между веб-сервером (таким как Kestrel и тот, который предоставляется Katana) и веб-приложением (код, который вы).
  • Кестрел происходит из ASP.NET Core. Это OWIN-совместимый веб-сервер.
  • Katana поставляется с ASP.NET 4.X. Это набор вещей реализации Microsoft OWIN, включая серверы OWIN.

Последний, но тем не менее важный:

  • ASP.NET 5 не работает и заменен на ASP.NET Core. Так что не упоминай больше.

    (Обновление от 2019/06/28: "Сегодня было объявлено, что следующим выпуском после .NET Core 3.0 будет .NET 5" - BY MS https://devblogs.microsoft.com/dotnet/introduction-net-5/ Это означает, что будет ASP.Net 5, который на самом деле является следующим поколением ASP.Net Core).

  • OWIN - это ключевая/необходимая вещь в ASP.NET 4.X и ASP.NET Core.

Для получения дополнительной информации вы можете прочитать https://www.quora.com/Is-ASP-NET-Core-a-replacement-for-OWIN-Katana

Ответ 4

"Проект Katana" включает Microsoft, добавляющую поддержку IIS для OWIN, создание OwinHost.exe и предоставление библиотек, позволяющих приложению взаимодействовать с самообслуживанием WebAPI. Некоторые из этих библиотек, таких как Microsoft.Owin.Security, используются ASP.NET MVC 5 (а не ASP.NET Core) для подключения идентификатора/аутентификации через OWIN, но MVC 5 не поддерживает самостоятельный хостинг (хотя это возможно, используя другие инструменты). Библиотека SelfHosting предназначена только для WebAPI.

Итак, "Katana" - это широкий термин, относящийся как к реализациям хоста, так и к поддержке веб-приложений для OWIN: Эти компоненты включают в себя компоненты инфраструктуры, такие как как хосты и серверы, так и функциональные компоненты, такие как компоненты аутентификации и привязки к инфраструктурам, таким как SignalR и ASP.NET Web API.

Вы можете увидеть такие фразы, как "Миграция из Катаны в ASP.NET Core", которые относятся к стороне веб-приложения. Это означает отказ от библиотек Microsoft.Owin и использование ASP.NET Core, который имеет полную поддержку OWIN, встроенную без необходимости в дополнительных библиотеках. Или вы можете увидеть аналогичную фразу, которая означает перемещение от хозяина Катаны к другому хозяину, например, к Kestrel. К сожалению, этот термин используется для ссылки на обе стороны реализации с небольшим разъяснением, и вам нужно будет обратить внимание на контекст обсуждения.

Kestrel - это всего лишь реализация хоста. Его цель - предоставить поддержку хостинга OWIN на многих платформах. Он более легкий, а не как полноценный или зрелый, как IIS. Рекомендуется использовать его за обратным прокси-сервером более защищенного и перезагружаемого веб-сервера, такого как IIS, Apache, nginx или другие. Kestrel - это то, что Microsoft в текущей документации рекомендует в качестве хоста развертывать веб-приложение ASP.NET Core на других платформах, таких как Linux.

Если вы создаете проект ASP.Net Core, то Kestrel в настоящее время включен по умолчанию. Он поддерживается на тех же платформах, что поддерживает ASP.NET Core.