【AICon】探索RAG 技术在实际应用中遇到的挑战及应对策略!AICon精华内容已上线73%>>> 了解详情
写点什么

使用 IIS 托管运行 Node.js 应用程序

  • 2011-08-29
  • 本文字数:1114 字

    阅读完需:约 4 分钟

Node.js 是目前十分流行,发展势头迅猛的服务器程序开发技术。Node.js 使用 JavaScript 语言,运行在 V8 引擎之上,之前一直有 *nix 下的版本,而在微软的支持下,也逐渐提供了对 Windows 的支持。而由 Tomasz Janczuk 开发的 iisnode 项目则是一个 IIS 原生模块,可以将 Node.js 程序托管在 IIS 上,由 IIS 进行 Node.js 进程管理。

Tomaz Janczuk在博客上介绍了 iisnode 项目,并阐述了使用 IIS 托管 Node.js 应用程序,相对于直接使用 node.exe 的优势:

  • 进程管理:iisnode 模块负责管理 node.exe 进程的生命周期,这提高了整体的可靠性,无须自行实现启动,停止或是进程监控等基础架构。
  • 利用多核服务器:node.exe 是单线程的程序,只能使用一个 CPU 核心。而 iisnode 模块会为每个应用程序创建多个 node.exe 进程,并将 HTTP 流量平衡至这些进程上。这样开发人员无须自行实施这方面的基础架构便可以充分利用多核 CPU 的能力。
  • 自动更新:iisnode 模块会在 Node.js 应用程序更新时(例如修改了脚本文件)自动回收 node.exe 进程。已有的请求会等待旧有代码执行完毕后,并自动切换至新版本的代码。
  • 使用 HTTP 访问日志:iisnode 模块提供了一个使用 HTTP 形式访问 Node.js 日志(例如使用 console.log 输出的信息)的机制。这十分有利于调试远程部署的 Node.js 程序。
  • 与不同类型的请求一起工作:利用 iisnode 模块与 IIS 集成之后,就可以在一个网站中使用 Node.js 处理部分请求,而把另外一些类型的请求(例如静态文件)交给 IIS 本身,甚至 ASP.NET 程序来使用。这让开发人员可以方便地选择最合适的方式来处理不同资源,或是逐步迁移应用程序。
  • 几乎无须改变 Node.js 程序代码:使用 iisnode 模块托管 Node.js 程序时几乎无须修改程序代码。一般来说,只需要把监听地址修改为 iisnode 提供的 process.env.PORT 环境变量即可。
  • 集成管理体验:iisnode 模块与 IIS 配置系统完全集成,可以使用与其他 IIS 组件相同的方式或是工具来配置和维护 Node.js 程序。

Tomaz 同时提到,使用 IIS 来托管 Node.js 程序意味着可以利用各种 IIS 功能,例如:

  • 共享端口(让多个 HTTP 应用程序同时使用 80 端口)
  • 安全特性(HTTPS,认证与授权等等)
  • URL 重写
  • 压缩
  • 缓存
  • 日志

Tomaz 同时也在博客中提供了较为详细地 iisnode 使用说明。著名微软技术博客作家 Scott Hanselman也在文章里介绍了 iisnode 项目,同时以 ASP.NET 程序员的角度介绍了 Node.js 项目,以及步步为营的 iisnode 使用向导,并使用 WCAT(Web Capacity Analysis Tool)对 iisnode 与 Node.js 应用程序进行性能分析。

值得一提的是,Scott 也在文章里提到:无论是 IIS 团队,Windows 团队还是 Azure 团队,都希望一切都能运行良好——其中自然也包括 Node.js。

2011-08-29 11:476569
用户头像

发布了 157 篇内容, 共 52.3 次阅读, 收获喜欢 6 次。

关注

评论

发布
暂无评论
发现更多内容

职场「OKR」,魔幻又内卷

Java 架构 职场 OKR

使用 DataEase 展示服务器运行状态

搞大屏的小北

Linux监控 Linux监控脚本 监控展示 监控大屏

私有化部署chatGPT,告别网络困扰

南城FE

人工智能 前端 ChatGPT

AI的道德风险验证

陈磊@Criss

DevOps |如何说清楚研发效能工作的价值?

laofo

DevOps cicd 研发效能 持续交付 研发效能度量

探索Python Web后端技术的发展之路

阿呆

从人工智能角度看人肉智能

FN0

AIGC

直播回顾 | 点击率提升400%,Ta是怎么做到的?

HMS Core

HMS Core

澜舟科技周明:进入AI 2.0不代表一定要抛弃1.0的技术

澜舟孟子开源社区

AIGC 澜舟科技 ChatGPT

从制作九转大肠来谈起 | GreptimeDB 如何提高多步操作的容错能力

Greptime 格睿科技

数据库 云原生 时序数据库 procedure

Sync包Mutex的原理阐述

Jack

golang

设计原则 — I 接口隔离原则

Lemoon Can

接口隔离原则 设计原则

碳基大模型--人一生处理多少个token?

FN0

人工智能 AIGC ChatGPT

pulsar:创建更多租户 VS 创建更多namespaces

李code

架构 pulsar 调优 业务

如何使用 MegEngine 生态落地一个算法

MegEngineBot

开源 性能优化 MegEngine 算法落地

一文读懂HAG:首个永久锚定BTC Mining算力的Security Token

股市老人

Activity初窥门径

攻城狮Wayne

android App Activity

个人开发者应该如何选购云服务

光毅

分享:从数据库开发者的视角,预测5个开发趋势

OceanBase 数据库

数据库 oceanbase

AF_XDP技术简介

天翼云开发者社区

五分钟!获得轻量级的云原生应用控制平面

阿里巴巴云原生

阿里云 开源 云原生 KubeVela

一文讲透|如何部署OceanBase社区版(4.x版)

OceanBase 数据库

数据库 oceanbase

深入探讨Python Tornado框架:原理与异步实现

阿呆

Python tornado Web

前端培训怎么学习好?

小谷哥

HPC调度基础:slurm集群的部署

天翼云开发者社区

「行业化」会是ToB巨头们的新战场吗?

ToB行业头条

AI又火了,这一次云厂商能赚到钱吗?

脑极体

云计算 AI 云厂商

腾讯云数据库性能打破世界纪录 每分钟可处理8.14亿笔交易

数据库小组

数据库 腾讯云 tdsql

RocketMQ x OpenTelemetry 分布式全链路追踪最佳实践

阿里巴巴云原生

阿里云 RocketMQ 云原生

矩阵起源荣获“IT用户满意度大会”年度新秀称号

MatrixOrigin

MatrixOrigin MatrixOne

一文读懂mysql锁

Paincupid

MySQL MySQL锁 mysql锁原理 mysql如何上锁 msyql锁分类

使用IIS托管运行Node.js应用程序_.NET_赵劼_InfoQ精选文章