3

关于 node.js 如何适应客户端和 Web 服务器,我下面的描述是否正确?

  • (A) 是客户
  • (B) 是 node.js 在一些 web 服务器上运行
  • (C) 是托管业务逻辑、数据库访问例程的“服务”,例如“GetCustomer()”。为简单起见,假设服务 (C) 公开了一个 REST 接口。

因此,在流程中,客户端 (A) 将从 node.js (B) 请求一些资源,然后将这个请求(所有它是异步和事件 I/O 优点)分派给可能去的服务 (C)获取一些客户信息并通过回调将其返回给 node.js (B),然后 node.js 将响应返回给客户端。

1.这是正确的吗?

两个相关问题:

2.node.js如何知道将请求分派到哪个服务?您是否必须在 node.js 中创建反映服务 API 的 api“存根”,因为客户端不直接与服务对话?

3.这个架构中的会话状态是如何处理的?

4

2 回答 2

7

首先是通常流程的“图表”:

     Client                                
       |                                    
       v                                    
     Request                               
       |                                  
       v                                                          
(load balancer e.g. nginx)                
       |                                  
       v                                    
 Node.js Instance                          
 |     |      |                             
 v     v      V                            
DB    APIS   FILES                         

关于你的最后两个问题:

  1. 你想让它怎么知道?Node.js 是一个通用框架,您必须编写代码来处理它。

  2. 同样,Node.js 是完全通用的。如果您只有一个实例,则可以在内存中进行。否则你可能会使用 redis 之类的。

你可以用 Node.js 编写游戏服务器,你可以只处理数字,或者你编写一个 Web 服务器。

但是您不必按照自己喜欢的方式进行操作,也不必搜索以您喜欢的方式进行操作的框架。

于 2011-01-25T23:56:56.877 回答
2

Node.js 是一个框架,用于用 javascript 编写不在 Web 浏览器中运行的应用程序。由于它的异步特性,它恰好非常擅长编写 Web 服务。对于 (B) Node.js 是网络服务器,它不在网络服务器 (apache) 内运行。对于 (C),您的所有逻辑都可以在您的 Node.js 应用程序中,或者您的 Node.js 应用程序可以与其他一些服务通信以获取数据。这完全取决于你。

对于 2,您可以随心所欲地进行操作。您正在编写代码,以在您的应用程序中有意义的方式进行。

对于 3,状态由传递给回调的会话/连接对象处理。

于 2011-01-26T05:40:22.717 回答