大厂Data+Agent 秘籍:腾讯/阿里/字节解析如何提升数据分析智能。 了解详情
写点什么

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

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

关注

评论

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

架构课模块一作业

庚小庚

人脸识别技术的安全性和隐私保护

数据堂

【OpenAI】ChatGPT函数调用(Function Calling)实践 | 京东云技术团队

京东科技开发者

openai 数据交互 企业号 7 月 PK 榜 Function Calling

数智驱动 百业共荣!亚信科技精彩亮相2023 MWC上海展

亚信AntDB数据库

数据库 AntDB AntDB数据库

制造业用哪款堡垒机好一点?为什么?

行云管家

网络安全 堡垒机 双因子认证 制造业

软件测试/测试开发丨Python闭包函数和计时器学习笔记

测试人

Python 程序员 软件测试 函数

玩转“擎舵”,秒变AIGC时代营销创意“掌舵人”

极客天地

什么是GPU与CPU?有什么不同?哪个更好?

Finovy Cloud

生成式AI下的企业:是不是该成立新部门封新官了?

FinClip

基于Web的智慧交通3D可视化系统

2D3D前端可视化开发

智慧交通 智慧交通系统 智能运输系统 ITS 智慧公交

“多”维演进:智能编码的深度进化

阿里云CloudImagine

云计算 编码 视频编码 视频云

山西等级保护测评机构有哪些?有几家?

行云管家

信息安全 等级保护 等保测评 等级测评 山西

美团面试真题和答案

王磊

java面试

传承敬老美德,志愿服务伴我行

科技热闻

文盘Rust -- FFI 浅尝 | 京东云技术团队

京东科技开发者

rust C语言 企业号 7 月 PK 榜 FFI

为什么越来越多的网站选择海外主机跨越国界?

一只扑棱蛾子

海外主机

人脸识别技术在智能家居中的应用

数据堂

华为云GaussDB圈层活动走进香港,赋能金融政企数字化转型

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号 7 月 PK 榜

5G与妈祖守护的那片海

白洞计划

5G

如何用 TDengine 预测 “未来”

爱倒腾的程序员

涛思数据 tdengine 时序数据库

5G与妈祖守护的那片海

脑极体

5G

使用 Navicat 的数据生成插入大量测试数据

hungxy

分享实录 | NGINX 网络协议优化(下)

NGINX开源社区

nginx TCP TLS HTTP

基于袋鼠云实时开发平台开发 FlinkSQL 任务的实践探索

袋鼠云数栈

sql flink 实时开发

从GaussDB(DWS)的技术演进,看数据仓库的积淀与新生

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号 7 月 PK 榜

ElasticSearch - 批量更新bulk死锁问题排查 | 京东云技术团队

京东科技开发者

elasticsearch MQ 企业号 7 月 PK 榜 BulkProcessor

Spring Loaded代码热更新实践和原理分析 | 京东云技术团队

京东科技开发者

spring 热更新 Loader 企业号 7 月 PK 榜

手把手教你如何做手机PCB电磁兼容性设计

华秋PCB

电磁 PCB 电路板 电子 PCB设计

[杂谈] 从PDF文件中进行表格抽取(tabula || paddle-pp-structure)

alexgaoyh

paddle 版式还原 表格提取 tabula pp-structure

人脸识别技术的精度提高及其应用

数据堂

解决ueditor表格拖拽没反应的问题

互联网工科生

数据库 Vue

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