Где node.js находится в потоке веб-сервера клиента <->? - PullRequest
3 голосов
/ 25 января 2011

Относительно того, как node.js подходит для клиентов и веб-серверов, верно ли мое описание ниже?

  • (A) являются клиентами
  • (B) - это node.js, работающий на каком-то веб-сервере
  • (C) - это «сервисы», размещающие бизнес-логику, процедуры доступа к базе данных, например, "GetCustomer ()". Для простоты предположим, что сервис (C) предоставляет интерфейс REST.

Таким образом, в потоке клиент (A) будет запрашивать некоторый ресурс из node.js (B), который, в свою очередь, отправит этот запрос (со всеми его асинхронными и четными параметрами ввода / вывода) службе (C), которая может пойти и получить некоторую информацию о клиенте и вернуть ее в node.js (B) посредством обратного вызова, а затем в свою очередь, node.js вернет этот ответ клиенту.

1.Это правильно?

Два связанных вопроса:

2. Как node.js знает, в какую службу отправлять запрос? Нужно ли вам создавать API-заглушки в node.js, которые отражают API-интерфейсы служб, поскольку клиент не обращается напрямую к службам?

3. Как обрабатывается состояние сеанса в этой архитектуре?

image

Ответы [ 2 ]

7 голосов
/ 26 января 2011

Прежде всего, «диаграмма» обычного потока:

     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, вы можете просто подсчитать числа или написать веб-сервер.

Но вам не нужно делать это так, как вам нравится, или искать структуру, которая делает это так, как вам нравится.

2 голосов
/ 26 января 2011

Node.js - это фреймворк для написания приложений на javascript, которые не работают в веб-браузере.Из-за своей асинхронной природы он действительно хорош в написании веб-сервисов.Поскольку (B) Node.js является веб-сервером, он не работает внутри веб-сервера (apache).Для (C) вся ваша логика может быть просто в вашем приложении Node.js или в вашем приложении Node.js может общаться с какой-либо другой службой для получения данных.Это полностью зависит от вас.

Для 2 вы можете делать это как хотите.Вы пишете код, делайте это так, как имеет смысл в вашем приложении.

Для 3 состояние обрабатывается объектом сеанса / соединения, передаваемым обратным вызовам.

...