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

时间:2014-12-12 10:49:58

标签: asp.net asp.net-core-mvc vs-2015-preview

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

2 个答案:

答案 0 :(得分:6)

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

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

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

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

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

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

在我对ASP.NET vNext is host agnostic, what does it deeply mean?的回答中,我介绍了宿主不可知论的其他几个方面。

答案 1 :(得分:2)

ASP.NET Core 1.1回答

  • 1.1版本添加了GZIP压缩和响应缓存。
  • Kestrel仍未经过安全测试,如果没有IIS或NGINX作为反向代理,则不应使用它。这会在某些时候发生变化。
  • Kestrel仍然不支持HTTP 2.0。
  • 在MVC 6中使用IIS或NGINX比MVC 5慢。是的MVC 6应该更快,但前提是你自己使用Kestrel。

ASP.NET Core 1.0答案

IIS或NGINX是ASP.NET MVC 6应用程序的最佳主机。以下是没有IIS或NGINX时无法获得的功能列表,而无需额外的工作。请注意,所有这些功能都需要在web.config文件中进行少量配置。

  • Kestrel Web服务器尚未经过加固处理并经过安全测试。它不应该暴露在互联网上......但是。
  • Kestrel不支持HTTP 2.0。
    • GZIP压缩HTTP请求以节省带宽和提高性能。仅这一点就足够了。
    • ASP.NET之外的错误处理。当你的.dll文件丢失时会发生什么? IIS仍会显示错误页面,您也可以自定义错误页面。
    • 动态IP安全 - 在拒绝服务(DoS)攻击期间,会显示一个非常简单且小巧的403.501或403.502禁止静态错误页面。
相关问题