最新发布《数智时代的AI人才粮仓模型解读白皮书(2024版)》,立即领取! 了解详情
写点什么

使用 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:476579
用户头像

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

关注

评论

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

存量经营

张老蔫

使用JDK自带的工具jstack找出造成运行程序死锁的原因

Jerry Wang

Java 并发 死锁 28天写作 12月日更

细节的问题

将军-技术演讲力教练

16.  《重学JAVA》--1.8新日期类

杨鹏Geek

Java 25 周年 28天写作 12月日更

详解PON基础知识:OLT、ONU、ONT和ODN,建议收藏

Ethereal

pon 光纤 弱电工程师

47 K8S之 Ingress资源

穿过生命散发芬芳

k8s 28天写作 12月日更

【LeetCode】换酒问题Java题解

Albert

算法 LeetCode 12月日更

文本编辑器GNU Nano 6.0 发布!

Ethereal

Nano

电商秒杀系统

胡颖

架构实战营

工业机器视觉系统相机如何选型?(理论篇—3)

不脱发的程序猿

机器视觉 图像处理 工业自动化

Go+ URL 解析教程(5.6)

liuzhen007

28天写作 12月日更

.NET 6新东西--高性能日志

喵叔

28天写作 12月日更

反射

Nydia

吹水的6大坏习惯

搬砖的周狮傅

沟通艺术

学生管理系统架构文档

drizzle

「架构实战营」

分布式锁及其实现

xcbeyond

分布式锁 28天写作 12月日更

架构实战营 4 期第二模块作业

jialuooooo

架构实战营

模块二作业

whoami

「架构实战营」

抬头看天

xujiangniao

知识梳理

[Pulsar] Producer 流控

Zike Yang

Apache Pulsar 12月日更

性能工具之linux三剑客awk、grep、sed详解

zuozewei

Linux 性能测试 12月日更

不太推荐 《沟通的方法》(17/28)

赵新龙

28天写作

走进Java接口测试之简单解决写接口脏数据问题

zuozewei

Java 自动化测试 测试开发 接口自动化 12月日更

Dubbo框架学习笔记五

风翱

dubbo 12月日更

React进阶(八):state 属性讲解

No Silver Bullet

React 12月日更 props

面向WEB开发人员的Docker(七):使用 Docker 开发Node应用程序

devpoint

node.js Docker 12月日更

HTTP超时处理

JavaEdge

12月日更

保护自己电脑绝对不做黑客肉鸡

喀拉峻

网络安全 安全

如何在 CentOS 8 服务器上安装 ISP Config 3.2?

Ethereal

服务器 ISP CentOS 8

如何在 Debian 11 上使用 Nginx 安装 HTTP Git 服务器

Ethereal

nginx git HTTP Debian 11

Kotlin ‘...has private access in...’ 问题小结

阿策小和尚

28天写作 Android 小菜鸟 12月日更

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