托管ASP.NET MVC6应用程序的最佳方法是什么?

Nig*_*ter 2 asp.net asp.net-core-mvc vs-2015-preview

如果我理解正确,ASP.NET vNext的部分动机是减少开销.MVC6应用程序可以是自托管.我的问题是托管ASP.NET vNext应用程序的最佳实践方式是什么.是否存在类似于WCF激活服务的内容,它们监视服务的运行状况,或者是否有某种方法可以在应用程序中执行此操作?

Eil*_*lon 6

托管ASP.NET MVC 6的"最佳"方式是选择最符合您应用需求的方式,当然!但就建议而言,这可能并没有那么有用.

首先,您需要考虑应用程序的要求,例如:

  • 它需要跨平台运行吗?
  • 它需要健康管理吗?
  • 是否需要使用现有的IIS模块?
  • 是否需要在另一个应用程序的上下文中运行?
  • 是否需要使用Windows身份验证?
  • 毫无疑问,还有更多要求......

以下是各种托管选项及其优缺点的简要概述:

  • IIS可能是最知名的主机.它已经硬化了十多年.许多流行的模块都可用,包括提供各种安全功能.IIS内置支持Windows身份验证,日志记录,应用程序预热,运行状况管理,远程管理以及许多其他功能.
  • IIS Express与IIS共享相同的代码库,但可以在没有管理员权限的情况下运行.
  • Kestrel是一个跨平台的Web服务器,作为ASP.NET 5的一部分编写,目前最适合开发工作.它非常轻巧,可以是好的(没有任何阻碍!)和坏(不是很多功能).
  • 自托管是您掌握自己领域的地方.几乎所有事情都取决于你,包括弄清楚如果存在不可恢复的错误会发生什么.如果您需要在应用程序中托管服务器(例如,使用Web服务器来托管UI或应用程序直接使用的服务的客户端应用程序),则自托管是一个很好的选择.

当然没有一种"最佳"方式来托管ASP.NET MVC 6应用程序,但肯定有许多解决方案可以满足各种需求.

在我对ASP.NET vNext的回答是主机不可知的,它深刻意味着什么?我介绍了主机不可知论的其他几个方面.