在单个Azure Webangular色中混合使用node.js和ASP.NET项目?

在一个Azure Webangular色( 教程 )上托pipe多个ASP.NET项目是相当容易的,但是可以使用一个Webangular色来托pipeASP.NET和node.js项目吗?

是的这是可能的,使用两种不同的解决scheme:

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

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

    • stream程pipe理。 iisnode模块负责node.exe进程的生命周期pipe理,使得提高整体可靠性变得简单。 您不必实施基础设施来启动,停止和监视stream程。
    • 多核心服务器的可扩展性 由于node.exe是单线程进程,因此它只能扩展到一个CPU内核。 iisnode模块允许为每个应用程序创build多个node.exe进程,并负载平衡它们之间的HTTP通信,因此可以充分利用服务器的CPU容量,而无需应用程序开发人员提供额外的基础架构代码。
    • 自动更新。 iisnode模块确保无论何时更新node.js应用程序(即脚本文件已更改),node.exe进程都将被回收。 允许正在执行的请求使用旧版本的应用程序正常完成执行,而所有新的请求都被分派到新版本的应用程序。
    • 通过HTTP访问日志。 iisnode模块通过HTTP访问node.exe进程的输出(例如,由console.log调用生成)。 这个工具是帮助您debugging部署到远程服务器的nod​​e.js应用程序的关键。
    • 与其他内容types并排。 iisnode模块以一种允许单个网站包含各种内容types的方式与IIS集成。 例如,单个站点可以包含node.js应用程序,静态HTML和JavaScript文件,PHP应用程序和ASP.NET应用程序。 这使得可以select适合当前工作的最佳工具,也可以逐步迁移现有的应用程序。
    • node.js应用程序代码的最小更改。 iisnode模块能够以非常小的变化托pipe现有的HTTP node.js应用程序。 通常情况下,所需要的就是通过process.env.PORT环境variables将HTTP服务器的列出地址更改为由iisnode模块提供的地址。
    • 综合pipe理经验。 iisnode模块与IISconfiguration系统完全集成,使用与其他IIS组件相同的工具和机制进行configuration和维护。 除了特定于iisnode模块的优势之外,在IIS中托pipenode.js应用程序还允许开发人员从一系列IISfunction中受益,其中包括:
      • 端口共享(通过端口80托pipe多个HTTP应用程序)
      • 安全(HTTPS,authentication和授权)
      • URL重写
      • 压缩
      • 高速caching
      • logging