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

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。

你可能感兴趣的:(使用IIS托管运行Node.js应用程序)