【问题标题】:Mixing node.js and ASP.NET projects in a single Azure Web Role?在单个 Azure Web 角色中混合 node.js 和 ASP.NET 项目?
【发布时间】:2012-10-22 15:35:56
【问题描述】:

在单个 Azure Web 角色 (tutorial) 上托管多个 ASP.NET 项目非常容易,但是否可以使用单个 Web 角色同时托管 ASP.NET 和 node.js 项目?

【问题讨论】:

    标签: asp.net node.js azure azure-web-roles


    【解决方案1】:

    是的,这是可能的,使用 2 种不同的解决方案:

    1. 您可以有一个后台启动任务来运行带有所需参数的node.exe。对于您的 ASP.NET 应用程序,没有任何变化,您唯一需要做的就是在该项目中包含节点文件并在启动 node.exe 时引用该目录

    2. 使用iisnode。这允许您通过 IIS HttpModule 运行您的节点代码,它带来了一些额外的好功能(引用 Tomasz Janczuk):

      • 进程管理。 iisnode 模块负责 node.exe 进程的生命周期管理,从而使提高整体可靠性变得简单。您无需实施基础架构即可启动、停止和监控流程。
      • 多核服务器上的可扩展性。 由于 node.exe 是一个单线程进程,它只能扩展到一个 CPU 内核。 iisnode 模块允许为每个应用程序创建多个 node.exe 进程,并对它们之间的 HTTP 流量进行负载平衡,因此可以充分利用服务器的 CPU 容量,而无需应用程序开发人员提供额外的基础架构代码。
      • 自动更新。 iisnode 模块确保无论何时更新 node.js 应用程序(即脚本文件已更改),都会回收 node.exe 进程。允许正在进行的请求使用旧版本的应用程序优雅地完成执行,而所有新请求都分派到新版本的应用程序。
      • 通过 HTTP 访问日志。 iisnode 模块提供通过 HTTP 访问 node.exe 进程的输出(例如由 console.log 调用生成)。该工具是帮助您调试部署到远程服务器的 node.js 应用程序的关键。
      • 与其他内容类型并列。 iisnode 模块以允许单个网站包含多种内容类型的方式与 IIS 集成。例如,单个站点可以包含 node.js 应用程序、静态 HTML 和 JavaScript 文件、PHP 应用程序和 ASP.NET 应用程序。这样可以为手头的工作选择最佳工具,并逐步迁移现有应用程序。
      • 对 node.js 应用程序代码的最小更改。 iisnode 模块能够以极少的更改托管现有的 HTTP node.js 应用程序。通常只需将列出的 HTTP 服务器地址更改为 iisnode 模块通过 process.env.PORT 环境变量提供的地址。
      • 集成管理经验。 iisnode模块与IIS配置系统完全集成,使用与其他IIS组件相同的工具和机制进行配置和维护。 除了 iisnode 模块特有的好处之外,在 IIS 中托管 node.js 应用程序还允许开发人员从一系列 IIS 功能中受益,其中包括:
        • 端口共享(通过端口 80 托管多个 HTTP 应用程序)
        • 安全性(HTTPS、身份验证和授权)
        • 网址重写
        • 压缩
        • 缓存
        • 日志记录

    【讨论】:

    • 感谢您的回复!你碰巧有一个可用于 IISNode 选项的示例吗?我能够在 Azure 模拟器上运行一切,但部署后,服务无法启动。
    • @MikaelKoskinen 您是如何将 IISNode 与 Azure 集成的?我一直在寻找有关这样做的信息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-20
    • 2021-12-11
    相关资源
    最近更新 更多