asp.net - 在单个 Azure Web 角色中混合 Node.js 和 ASP.NET 项目?

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

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

最佳答案

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

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

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

    • 进程管理。 iisnode 模块负责 node.exe 进程的生命周期管理,从而可以轻松提高整体可靠性。您不必实现基础设施来启动、停止和监控流程。
    • 多核服务器上的可扩展性。由于 node.exe 是单线程进程,因此它只能扩展到一个 CPU 核心。 iisnode 模块允许为每个应用程序创建多个 node.exe 进程,并对它们之间的 HTTP 流量进行负载平衡,从而能够充分利用服务器的 CPU 容量,而无需应用程序开发人员提供额外的基础架构代码。
    • 自动更新。iisnode 模块确保每当 Node.js 应用程序更新(即脚本文件发生更改)时,node.exe 进程都会被回收。允许使用旧版本的应用程序正常完成正在进行的请求,而所有新请求都将分派(dispatch)到新版本的应用程序。
    • 通过 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、身份验证和授权)
      • 网址重写
      • 压缩
      • 缓存
      • 记录

关于asp.net - 在单个 Azure Web 角色中混合 Node.js 和 ASP.NET 项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13014805/

相关文章:

ASP.Net 嵌套转发器逻辑 hell

javascript - 控制回调流程

node.js - NodeJS : how to run three servers acting as one single application?

azure - 数据工厂 - 使用通配符确定文件名

xml - 将 XML 文档转换为 SQL 中的表格数据集的有效方法,因为随着 xml 的增长,交叉应用 xml 查询的性能呈指数级下降

asp.net - 如何修复 "unable to set field/property...on entity type"

c# - 设计器模式下的 ASP.NET 用户控件属性值选项

javascript - Node.js 异步任务是同步处理的吗?

Azure 数据工厂 - if 条件表达式生成器

c# - ASP.Net C# 帮助器,返回一个数组