Каков наилучший способ размещения приложения ASP.NET MVC6?
Если я правильно понимаю, частью мотивации ASP.NET vNext является сокращение накладных расходов. Приложение MVC6 может быть самостоятельным. Мой вопрос заключается в том, что является лучшим способом размещения приложения ASP.NET vNext. Есть ли что-то похожее на службы активации WCF, которые контролируют состояние службы, или есть какой-то способ сделать это из приложения?
2 ответа
Разумеется, "лучший" способ размещения ASP.NET MVC 6 - это выбрать способ, который наилучшим образом соответствует потребностям вашего приложения! Но это, возможно, не так полезно, как совет.
Во-первых, вам необходимо учитывать требования приложения, такие как:
- Нужно ли запускать кроссплатформенный?
- Нужно ли управление здоровьем?
- Нужно ли использовать существующие модули IIS?
- Нужно ли запускать его в контексте другого приложения?
- Нужно ли использовать проверку подлинности Windows?
- И, без сомнения, еще много требований...
Вот краткое описание различных вариантов хостинга и их плюсы и минусы:
- IIS, пожалуй, самый известный хост. Он закален в течение более десяти лет. Для него доступно множество популярных модулей, в том числе с различными функциями безопасности. IIS имеет встроенную поддержку аутентификации Windows, ведения журналов, прогрева приложений, управления работоспособностью, удаленного администрирования и многих других функций.
- IIS Express использует ту же кодовую базу, что и IIS, но может работать без прав администратора.
- Kestrel - это кроссплатформенный веб-сервер, который написан как часть ASP.NET 5 и в настоящее время наиболее подходит для разработки. Это очень легкий, который может быть как хорошим (ничто в пути!), Так и плохим (не очень много функций).
- Самостоятельный хост - это то, где вы являетесь хозяином своего собственного домена. Практически все зависит от вас, в том числе выяснить, что должно произойти в случае неисправимой ошибки. Самостоятельный хостинг - отличный вариант, если вам нужно разместить сервер в своем приложении (например, клиентское приложение, которое использует веб-сервер для размещения пользовательского интерфейса или служб, которые приложение использует напрямую).
Конечно, не существует единственного "лучшего" способа размещения приложения ASP.NET MVC 6, но, безусловно, существует множество решений, ориентированных на различные потребности.
В моем ответе на ASP.NET vNext не зависит от хоста, что это значит глубоко? Я рассмотрел несколько других аспектов агностицизма хозяина.
ASP.NET Core 1.1 Ответ
- В версии 1.1 добавлено сжатие GZIP и кэширование ответов.
- Kestrel до сих пор не проверен на безопасность и не должен использоваться без IIS или NGINX в качестве обратного прокси. Это изменится в какой-то момент.
- Kestrel по-прежнему не поддерживает HTTP 2.0.
- Использование IIS или NGINX с MVC 6 медленнее, чем MVC 5. Да, MVC 6 должен быть быстрее, но только если вы используете Kestrel самостоятельно.
ASP.NET Core 1.0 Ответ
IIS или NGINX - безусловно лучший хост для приложения ASP.NET MVC 6. Ниже приведен список функций, которые вы не получите без IIS или NGINX без большого количества дополнительной работы. Обратите внимание, что все эти функции требуют небольшого количества настроек в файле web.config.
- Веб-сервер Kestrel не был закален в бою и не проверен на безопасность. Он не должен быть открыт для интернета... пока.
- Kestrel не поддерживает HTTP 2.0.
- GZIP-сжатие HTTP-запросов для экономии пропускной способности и повышения производительности. Это само по себе является достаточно большой причиной.
- Обработка ошибок вне ASP.NET. Что происходит, когда у вас отсутствует файл.dll? Ну, IIS все равно покажет страницу с ошибкой, и вы также можете настроить страницу с ошибкой.
- Динамическая IP-безопасность - во время атаки типа "отказ в обслуживании" (DoS) отображается очень простая и маленькая страница запрещенных статических ошибок 403.501 или 403.502.