Различие между Кестрел и Катаной
В настоящее время я понимаю, что вы можете самостоятельно использовать WebAPI с помощью Katana, и MVC будет иметь эту возможность в будущей версии. По сути, Katana будет вариантом хостинга, доступным как для MVC, так и для WebAPI.
Kestrel вошла в картину, и я вижу, как несколько сотрудников MS ведут блог об этом, демонстрируя хостинг ASP.NET vNext в Linux.
Я понимаю, что и Kestrel, и Katana реализуют трубопровод OWIN.
Оттуда все немного нечеткое. Я спрашиваю себя: почему Кестрел вошла в картину, когда кажется, что Katana может служить той же цели, если вы скомпилировали ее с моно и приложили некоторые усилия, чтобы сделать ее совместимой с платформой (возможно, проще сказать, чем сделать).
Будут ли Kestrel и Katana одинаковой цели? Или какой-то специалист каким-то образом отличается от другого?
Будет ли Kestrel в конечном итоге быть жизнеспособным выбором для развертываний Windows? Или это будет специализировано для не-Windows-сред, а Katana по-прежнему остается выбором для Windows?
Я понимаю, что я, возможно, попросил сравнить яблоко с апельсинами из-за моего незнания Катаны/Кестрел, но если ответ: "Апельсины имеют больше кислотного вкуса, чем яблоки", тогда ИМО отлично действительный ответ.
Ответы
Ответ 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.