从网络/TCP/HTTP 连接的角度来看,Node.js 是如何工作的? WCF 可以模拟这个吗?
Posted
技术标签:
【中文标题】从网络/TCP/HTTP 连接的角度来看,Node.js 是如何工作的? WCF 可以模拟这个吗?【英文标题】:How does Node.js work from a network / TCP / HTTP connection perspective? Can WCF emulate this? 【发布时间】:2011-07-14 14:01:03 【问题描述】:我的理解是 node.js 是一个面向 Linux 世界的 python 应用程序。每个人似乎都对它处理许多并发连接的速度和能力感到非常满意。
我来自 Microsoft 背景,我认为 node.js 可能能够使用 WCF 实现。
谁能告诉我 node.js 如何在网络背景下运行,并可选择提供是否可以将其移植到 WCF 或 Azure 服务总线的见解?
【问题讨论】:
@Toby - “节点”的服务器部分不是 Python 应用程序吗?查看楼一伦的回复here node 是 V8 javascript 引擎的事件 i/o 层,用 C++ 编写 【参考方案1】:Node 是一个 Javascript 框架,偏爱需要事件驱动的方法来编写网络服务。 Node 不是阻塞网络操作(通常是网络编程的方式),而是为您提供在有趣的事情发生时触发的事件处理程序(客户端连接、字节到达、DNS 查询返回等)。
因此,Node 非常适合 realtime web apps,并且正在被广泛探索。由于它是一个 Javascript 框架,现在可以使用用于 Node 的 host of interesting libraries。其中一些隐藏在very cute API 后面的不可思议的力量。
有binary versions of Node for Windows,但它们还没有被认为是稳定的。 Node 比 WCF/Azure 低得多——它是套接字、DNS、HTTP 等的事件驱动包装器。如果你愿意的话。除了事件驱动之外,它不强制要求应如何实施网络服务(例如合同或数据编组)。我相信在这些技术之上实现 Node 克隆会损害低延迟(至少),但也许更有资格的人可以判断它是否可以做到。
PS。 The Node website 很好地解释了它是如何工作的。
PPS。可能相关的,虽然我没有时间阅读很多关于它的信息,是Rx for .NET。
【讨论】:
由于 Node 在低于 HTTP 的层上工作,所以当涉及代理时,我预计会出现大量问题......这些设备对 TCP 会话的构建方式和信息非常挑剔包含在 HTTP 标头中。这听起来对你吗? ...您会期望 node.js 和代理会出现问题吗? 我不会 - Node 也内置了对 HTTP 的支持,它不仅仅是普通的 TCP/UDP。 Connect 和 Express 库可以提供基本 http 模块没有的附加功能(会话、提供静态文件、基本身份验证)。见this question。【参考方案2】:Node.js 是一种(非常不错的)编程模型,它利用 Javascript 的异步编程非常适用于实现异步 Web 应用程序。该原理与 Windows 上的异步编程模型非常相似,尤其是在 .NET(WCF 很好地支持这一点)中,所有工作都在由 I/O 线程调用的回调上完成,并且应用程序从不锁定线程。 Node.js 围绕这个基础机制创建了一个严格的 JS 编程模型,以允许更好地扩展应用程序。因此,与这里的一些人所说的相反,Node.js 与 WCF 完全处于同一层/级别。从协议的角度来看,Node.js 实现可能始终位于应用程序和底层 HTTP 基础设施提供的 HTTP 侦听器之间。
【讨论】:
以上是关于从网络/TCP/HTTP 连接的角度来看,Node.js 是如何工作的? WCF 可以模拟这个吗?的主要内容,如果未能解决你的问题,请参考以下文章