【问题标题】:What is the best way to host an ASP.NET MVC6 Application托管 ASP.NET MVC6 应用程序的最佳方式是什么
【发布时间】:2015-02-11 01:37:13
【问题描述】:

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

【问题讨论】:

    标签: asp.net asp.net-core-mvc visual-studio-2015


    【解决方案1】:

    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 Web 服务器尚未经过强化和安全测试。它不应该暴露在互联网上......但是。
    • Kestrel 不支持 HTTP 2.0。
      • HTTP 请求的 GZIP 压缩以节省带宽和提高性能。仅此一项就足够了。
      • 在 ASP.NET 之外处理错误。当您缺少 .dll 文件时会发生什么?那么IIS仍然会显示错误页面,您也可以自定义错误页面。
      • 动态 IP 安全 - 在拒绝服务 (DoS) 攻击期间,会显示一个非常简单且小型的 403.501 或 403.502 Forbidden 静态错误页面。

    【讨论】:

      【解决方案2】:

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

      首先需要考虑应用的需求,比如:

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

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

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

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

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

      【讨论】:

        猜你喜欢
        • 2015-01-07
        • 2020-09-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-16
        • 2021-10-30
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多