javascript website Como decidir quando usar o Node.js?




website com node js (14)

Eu posso compartilhar alguns pontos onde e por que usar o nó js.

  1. Para aplicações em tempo real como chat, edição colaborativa melhor, vamos com o nodejs, pois é a base de eventos onde o evento de fogo e os dados para os clientes do servidor.
  2. Simples e fácil de entender, pois é base de javascript, onde a maioria das pessoas tem idéia.
  3. A maioria dos aplicativos da web atuais em direção ao js angular & backbone, com o nó, é fácil interagir com o código do lado do cliente, pois ambos usarão os dados json.
  4. Muitos plugins disponíveis.

Desvantagens: -

  1. O nó suportará a maioria dos bancos de dados, mas o melhor é o mongodb, que não suporta junções complexas e outras.
  2. Erros de compilação ... o desenvolvedor deve lidar com todas as exceções, caso contrário, se algum aplicativo de acordo de erro parará de funcionar onde, novamente, precisamos iniciar manualmente ou usar qualquer ferramenta de automação.

Conclusão: - Nodejs melhor para usar para aplicações simples e em tempo real .. se você tem lógica de negócios muito grande e funcionalidade complexa melhor não deve usar o nodejs. Se você quiser construir um aplicativo junto com o chat e qualquer funcionalidade colaborativa, o nó pode ser usado em partes específicas e permanecer deve ir com a sua tecnologia de conveniência.

Eu sou novo nesse tipo de coisa, mas ultimamente eu tenho ouvido muito sobre como o Node.js é bom. Considerando o quanto eu amo trabalhar com jQuery e JavaScript em geral, não posso deixar de me perguntar como decidir quando usar o Node.js. A aplicação web que tenho em mente é algo como Bitly - pega algum conteúdo, arquiva.

De toda a lição de casa que tenho feito nos últimos dias, obtive as seguintes informações. Node.js

  • é uma ferramenta de linha de comando que pode ser executada como um servidor web comum e permite executar programas JavaScript
  • utiliza o ótimo motor V8 JavaScript
  • é muito bom quando você precisa fazer várias coisas ao mesmo tempo
  • é baseada em eventos, então todas as maravilhosas coisas semelhantes a Ajax podem ser feitas no lado do servidor
  • nos permite compartilhar código entre o navegador e o backend
  • nos permite falar com o MySQL

Algumas das fontes que me deparei são:

Considerando que o Node.js pode ser executado quase pronto para uso nas instâncias do Amazon EC2 , estou tentando entender que tipo de problemas exigem o Node.js, em oposição a qualquer um dos poderosos reis como PHP , Python e Ruby . Eu entendo que isso realmente depende da especialização que se tem em uma linguagem, mas minha pergunta se encaixa mais na categoria geral de: Quando usar uma estrutura particular e para que tipo de problemas ela é particularmente adequada?


Razões para usar o NodeJS:

  • Ele roda Javascript, então você pode usar a mesma linguagem no servidor e no cliente, e até mesmo compartilhar algum código entre eles (por exemplo, para validação de formulários ou para renderizar visualizações em qualquer uma das extremidades).

  • O sistema orientado a eventos de encadeamento único é fast mesmo ao lidar com muitas solicitações de uma só vez, e também simples, em comparação com as estruturas tradicionais Java ou ROR multiencadeadas.

  • O conjunto cada vez maior de packages acessíveis por meio do NPM , incluindo bibliotecas / módulos do lado do cliente e do servidor, bem como ferramentas de linha de comando para desenvolvimento da web. A maioria deles está convenientemente hospedada no github, onde às vezes você pode relatar um problema e consertá-lo em questão de horas! É bom ter tudo sob o mesmo teto, com relatórios de problemas padronizados e bifurcações fáceis.

  • Tornou-se o ambiente padrão para executar ferramentas relacionadas a Javascript e outras ferramentas relacionadas à web , incluindo corredores de tarefas, minificadores, embelezadores, linters, pré-processadores, empacotadores e processadores analíticos.

  • Parece bastante adequado para protótipos, desenvolvimento ágil e rápida iteração de produtos .

Razões para não usar o NodeJS:

  • Ele roda o Javascript, que não tem verificação de tipo em tempo de compilação. Para sistemas críticos de segurança grandes e complexos, ou projetos que incluem colaboração entre diferentes organizações, uma linguagem que incentiva interfaces contratuais e fornece verificação de tipo estático pode economizar um pouco de tempo de depuração (e explosões ) a longo prazo. (Embora a JVM esteja bloqueada com null , use o Haskell para seus reatores nucleares.)

  • Além disso, muitos dos pacotes no NPM são um pouco crus e ainda estão em rápido desenvolvimento. Algumas bibliotecas de frameworks mais antigos passaram por uma década de testes e correções de bugs, e estão muito estáveis até agora. O Npmjs.org não tem nenhum mecanismo para avaliar pacotes , o que levou a uma proliferação de pacotes fazendo mais ou menos a mesma coisa, dos quais uma grande porcentagem não é mais mantida.

  • Inbound callback inferno. (Claro que existem 20 soluções diferentes para isso ...)

  • O crescente conjunto de pacotes pode fazer um projeto NodeJS parecer radicalmente diferente do seguinte. Há uma grande diversidade nas implementações devido ao grande número de opções disponíveis (por exemplo, Express / Sails.js / Meteor / Derby ). Isso às vezes pode tornar mais difícil para um novo desenvolvedor entrar em um projeto Node. Compare isso com um desenvolvedor do Rails se juntando a um projeto existente: ele deve ser capaz de se familiarizar com o aplicativo rapidamente, porque todos os aplicativos Rails são encorajados a usar uma estrutura similar .

  • Lidar com arquivos pode ser um pouco doloroso. Coisas que são triviais em outras linguagens, como ler uma linha de um arquivo de texto, são estranhas o suficiente para fazer com o Node.js que há uma pergunta do sobre isso com 80 + upvotes. Não há uma maneira simples de ler um registro por vez a partir de um arquivo CSV . Etc.

Eu amo o NodeJS, é rápido e selvagem e divertido, mas estou preocupado que tenha pouco interesse em correção comprovável. Vamos torcer para que possamos mesclar o melhor dos dois mundos. Estou ansioso para ver o que irá substituir o Node no futuro ... :)


Pode ser usado onde

  • Aplicativos que são altamente orientados a eventos e são altamente vinculados a E / S
  • Aplicativos que manipulam um grande número de conexões para outros sistemas
  • Aplicativos em tempo real (o Node.js foi projetado desde o início para uso em tempo real e para ser fácil de usar).
  • Aplicativos que manipulam o fluxo de informações de e para outras fontes
  • Alto tráfego, aplicativos escalonáveis
  • Aplicativos móveis que precisam falar com a API e o banco de dados da plataforma, sem precisar fazer muita análise de dados
  • Construa aplicativos em rede
  • Aplicativos que precisam falar com o back-end com muita frequência

Na frente de dispositivos móveis, as empresas de horário nobre confiaram no Node.js para suas soluções móveis. Confira o porquê?

LinkedIn é um usuário proeminente. Sua pilha inteira de celulares é construída em Node.js. Eles passaram de 15 servidores com 15 instâncias em cada máquina física, para apenas 4 instâncias - que podem lidar com o dobro do tráfego!

eBay lançou o ql.io, uma linguagem de consulta da Web para APIs HTTP, que usa o Node.js como a pilha de tempo de execução. Eles conseguiram ajustar uma estação de trabalho Ubuntu com qualidade de desenvolvedor para lidar com mais de 120.000 conexões ativas por processo node.js, com cada conexão consumindo cerca de 2kB de memória!

Walmart reformulou seu aplicativo móvel para usar o Node.js e empurrou seu processamento de JavaScript para o servidor.

Leia mais em: http://www.pixelatingbits.com/a-closer-look-at-mobile-app-development-with-node-js/


Meu trabalho: nodejs é ótimo para fazer sistemas em tempo real como analytics, chat-apps, apis, servidores de anúncios, etc. Inferno, eu fiz meu primeiro aplicativo de bate-papo usando nodejs e socket.io em 2 horas e também durante a semana do exame!

Editar

Já faz vários anos desde que comecei a usar o nodejs e o usei para fazer várias coisas, incluindo servidores de arquivos estáticos, análises simples, aplicativos de bate-papo e muito mais. Esta é minha opinião sobre quando usar o nodejs

Quando usar

Ao fazer sistema que coloca ênfase na concorrência e velocidade.

  • Soquetes apenas servidores como aplicativos de bate-papo, aplicativos irc, etc.
  • Redes sociais que enfatizam recursos em tempo real, como geolocalização, fluxo de vídeo, fluxo de áudio etc.
  • Lidar com pequenos pedaços de dados muito rapidamente, como uma aplicação web de análise.
  • Como expor uma API somente REST.

Quando não usar

É um servidor web muito versátil para que você possa usá-lo onde quiser, mas provavelmente não nesses lugares.

  • Blogs simples e sites estáticos.
  • Apenas como um servidor de arquivos estático.

Tenha em mente que eu estou apenas pensando. Para servidores de arquivos estáticos, o apache é melhor principalmente porque está amplamente disponível. A comunidade do nodejs cresceu e amadureceu ao longo dos anos e é seguro dizer que o nodejs pode ser usado em quase todos os lugares se você tiver sua própria escolha de hospedagem.


Minha mais uma razão para escolher o Node.js para um novo projeto é:

Ser capaz de fazer desenvolvimento baseado em nuvem pura

Eu usei o Cloud9 IDE por um tempo e agora não posso imaginar sem ele, ele abrange todos os ciclos de vida de desenvolvimento. Tudo que você precisa é de um navegador e você pode codificar a qualquer momento em qualquer lugar em qualquer dispositivo. Você não precisa registrar o código em um computador (como em casa) e fazer o checkout em outro computador (como no local de trabalho).

É claro que talvez haja IDE baseado em nuvem para outros idiomas ou plataformas (o Cloud 9 IDE também está adicionando suporte para outros idiomas), mas usar o Cloud 9 para fazer o desenvolvimento do Node.js é realmente uma ótima experiência para mim.


Não há nada como Silver Bullet. Tudo vem com algum custo associado a ele. É como se você come comida oleosa, você vai comprometer sua saúde e comida saudável não vem com especiarias como alimentos oleosos. É uma escolha individual se eles querem saúde ou temperos como em sua comida. A mesma maneira que o Node.js considera ser usado em um cenário específico. Se o seu aplicativo não se encaixa nesse cenário, você não deve considerá-lo para o desenvolvimento do aplicativo. Estou apenas colocando meu pensamento da mesma forma:

Quando usar o Node.JS

  1. Se o seu código do lado do servidor requer muito poucos ciclos de cpu. Em outro mundo, você está fazendo uma operação sem bloqueio e não possui algoritmo / job pesado que consome muitos ciclos de CPU.
  2. Se você é de JavaScript back ground e confortável em escrever Single Threaded código apenas como o lado do cliente JS.

Quando não usar o Node.JS

  1. Sua solicitação do servidor depende do uso intenso de algoritmo / trabalho da CPU.

Consideração de escalabilidade com o Node.JS

  1. Node.JS em si não utiliza todo o núcleo do sistema subjacente e é único segmentado por padrão, você tem que escrever a lógica por conta própria para utilizar o processador multi-core e torná-lo multi-threaded.

Alternativas Node.JS

Há outra opção para usar no lugar do Vert.x entretanto, o Vert.x parece ser bastante promissor e tem muitos recursos adicionais, como o polygot, e melhores considerações de escalabilidade.


Mais uma coisa que o nó fornece é a capacidade de criar vários instantes de v8 do nó usando o processo filho do nó ( childProcess.fork() cada um exigindo 10MB de memória como por documentos), sem afetar o processo principal executando o servidor. Portanto, descarregar um trabalho em segundo plano que requer uma enorme carga de servidor se torna uma brincadeira de criança e podemos matá-los facilmente quando necessário.

Eu tenho usado muito o node e, na maioria dos aplicativos que construímos, precisamos de conexões de servidor ao mesmo tempo, portanto, um tráfego de rede pesado. Frameworks como Express.js e o novo Koajs (que removeu o callback do inferno) tornaram o trabalho no nó ainda mais fácil.


Eu tenho um exemplo do mundo real onde usei o Node.js. A empresa onde trabalho tem um cliente que queria ter um site HTML simples e estático. Este site é para vender um item usando o PayPal e o cliente também queria ter um contador que mostrasse a quantidade de itens vendidos. O cliente deverá ter uma quantidade enorme de visitantes para este site. Eu decidi fazer o contador usando o Node.js e o framework Express.js .

O aplicativo Node.js foi simples. Obtenha o valor de itens vendidos de um banco de dados Redis , aumente o contador quando o item for vendido e sirva o valor do contador para os usuários por meio da API .

Algumas razões pelas quais eu escolhi usar o Node.js neste caso

  1. É muito leve e rápido. Houve mais de 200.000 visitas neste site em três semanas e recursos mínimos do servidor conseguiram lidar com tudo isso.
  2. O contador é realmente fácil de fazer para ser em tempo real.
  3. O Node.js foi fácil de configurar.
  4. Existem muitos módulos disponíveis gratuitamente. Por exemplo, encontrei um módulo Node.js para o PayPal.

Neste caso, o Node.js foi uma escolha incrível.


Vestindo amianto longjohns ...

Ontem meu título com Packt Publications, Reactive Programming com JavaScript . Não é realmente um título centrado no Node.js; os primeiros capítulos pretendem cobrir a teoria e, mais tarde, capítulos de código pesado cobrem a prática. Porque eu realmente não achava que seria apropriado deixar de dar aos leitores um servidor web, o Node.js parecia de longe a escolha óbvia. O caso foi encerrado antes mesmo de ser aberto.

Eu poderia ter dado uma visão muito otimista da minha experiência com o Node.js. Em vez disso, fui honesto sobre os pontos positivos e negativos que encontrei.

Deixe-me incluir algumas citações relevantes aqui:

Aviso: o Node.js e seu ecossistema estão quentes - o suficiente para queimá-lo mal!

Quando eu era assistente de um professor em matemática, uma das sugestões não óbvias que me disseram foi não dizer a um aluno que algo era “fácil”. A razão era um pouco óbvia em retrospecto: se você diz às pessoas que algo é fácil, alguém que Não vejo uma solução pode acabar se sentindo (ainda mais) estúpido, porque não só eles não conseguem resolver o problema, mas o problema que eles são muito estúpidos para entender é fácil!

Existem dicas que não apenas incomodam as pessoas que vêm do Python / Django, que imediatamente recarrega a fonte se você mudar alguma coisa. Com o Node.js, o comportamento padrão é que, se você fizer uma alteração, a versão antiga continuará ativa até o final do tempo ou até que você pare e reinicie manualmente o servidor. Esse comportamento inadequado não incomoda apenas os Pythonistas; Ele também irrita os usuários nativos do Node.js que fornecem várias soluções alternativas. A pergunta do , “Auto-reload of files in Node.js”, tem, no momento em que escrevo, mais de 200 votos positivos e 19 respostas; uma edição direciona o usuário para um script de babá, supervisor de nó, com a página inicial em http://tinyurl.com/reactjs-node-supervisor . Esse problema oferece aos novos usuários uma grande oportunidade de se sentirem estúpidos, porque eles achavam que haviam resolvido o problema, mas o comportamento antigo com bugs é completamente inalterado. E é fácil esquecer de devolver o servidor; Eu fiz isso várias vezes. E a mensagem que eu gostaria de dar é: “Não, você não é estúpido porque esse comportamento do Node.js mordeu suas costas; é só que os criadores do Node.js não viram razão para fornecer o comportamento apropriado aqui. Tente lidar com isso, talvez com uma pequena ajuda do supervisor de nós ou de outra solução, mas, por favor, não vá embora sentindo que você é estúpido. Você não é o único com o problema; o problema está no comportamento padrão do Node.js.

Esta seção, depois de algum debate, foi deixada, precisamente porque eu não quero dar uma impressão de "É fácil". Eu cortei minhas mãos repetidamente enquanto fazia as coisas funcionarem, e eu não quero suavizar as dificuldades e Prepare-se para acreditar que fazer com que o Node.js e seu ecossistema funcionem bem é um assunto simples e, se não for fácil para você também, você não sabe o que está fazendo. Se você não se deparar com dificuldades desagradáveis ​​usando o Node.js, isso é maravilhoso. Se você fizer isso, eu espero que você não vá embora sentindo, "Eu sou estúpida - deve haver algo errado comigo." Você não é estúpido se você experimentar surpresas desagradáveis ​​lidando com o Node.js. Não é você! É o Node.js e seu ecossistema!

O Apêndice, que eu realmente não queria após o crescente crescendo nos últimos capítulos e a conclusão, fala sobre o que eu fui capaz de encontrar no ecossistema, e forneceu uma solução para o literalismo idiota:

Outro banco de dados que parecia um ajuste perfeito e ainda pode ser resgatado é uma implementação do armazenamento de chave-valor em HTML5 no lado do servidor. Essa abordagem tem a vantagem fundamental de uma API que a maioria dos desenvolvedores de front-end entende bem o suficiente. Aliás, também é uma API que os desenvolvedores de front-end não tão bons entendem bem o suficiente. Mas com o pacote node-localstorage, enquanto o acesso à sintaxe do dicionário não é oferecido (você deseja usar localStorage.setItem (key, value) ou localStorage.getItem (key), não localStorage [key]), a semântica localStorage completa é implementada , incluindo uma cota padrão de 5 MB - POR QUÊ? Os desenvolvedores JavaScript do lado do servidor precisam ser protegidos de si mesmos?

Para os recursos do banco de dados do lado do cliente, uma cota de 5 MB por site é realmente uma quantidade generosa e útil de espaço para os desenvolvedores trabalharem com ele. Você poderia definir uma cota muito mais baixa e ainda oferecer aos desenvolvedores uma melhoria incomensurável sobre o limping junto com o gerenciamento de cookies. Um limite de 5MB não se presta muito rapidamente ao processamento no lado do cliente do Big Data, mas existe uma margem bastante generosa que desenvolvedores com recursos podem usar para fazer muito. Mas por outro lado, 5MB não é uma parte particularmente grande da maioria dos discos comprados recentemente, o que significa que se você e um website não concordarem com o uso razoável de espaço em disco, ou se algum site for simplesmente hoggish, você muito e você não está em perigo de um disco rígido sobrecarregado, a menos que seu disco rígido já estivesse cheio demais. Talvez estivéssemos melhor se o saldo fosse um pouco menor ou um pouco maior, mas no geral é uma solução decente para abordar a tensão intrínseca de um contexto do lado do cliente.

No entanto, pode-se notar que, quando você é quem escreve o código para o seu servidor, não precisa de nenhuma proteção adicional para tornar seu banco de dados mais do que um tamanho tolerável de 5 MB. A maioria dos desenvolvedores não precisa nem quer ferramentas agindo como uma babá e protegendo-os de armazenar mais de 5MB de dados do lado do servidor. E a cota de 5 MB que é um equilíbrio de ouro no lado do cliente é um pouco boba em um servidor Node.js. (E, para um banco de dados para vários usuários, como abordado neste Apêndice, pode ser apontado, levemente, que não são 5 MB por conta de usuário, a menos que você crie um banco de dados separado no disco para cada conta de usuário; todas as contas de usuário juntas. Isso pode ficar doloroso se você for viral!) A documentação informa que a cota é personalizável, mas um e-mail há uma semana para o desenvolvedor perguntando como alterar a cota não foi atendido, assim como a pergunta . . A única resposta que consegui encontrar é na fonte Github CoffeeScript, onde ela é listada como um argumento opcional de segundo inteiro para um construtor. Então, isso é bastante fácil e você pode especificar uma cota igual a um tamanho de disco ou partição. Mas além de portar um recurso que não faz sentido, o autor da ferramenta falhou completamente ao seguir uma convenção muito padrão de interpretar 0 como significando “ilimitado” para uma variável ou função onde um inteiro é para especificar um limite máximo para algum uso de recurso. A melhor coisa a fazer com essa má qualidade é provavelmente especificar que a cota é Infinity:

if (typeof localStorage === 'undefined' || localStorage === null)
  {      
  var LocalStorage = require('node-localstorage').LocalStorage;
  localStorage = new LocalStorage(__dirname + '/localStorage',
    Infinity);
  }

Trocando dois comentários em ordem:

As pessoas atiravam sem parar no pé constantemente usando o JavaScript como um todo, e parte do JavaScript sendo uma linguagem respeitável era, em essência, um discurso de Douglas Crockford: “O JavaScript como linguagem tem algumas partes realmente boas e algumas partes realmente ruins. Aqui estão as boas partes. Simplesmente esqueça que qualquer outra coisa está lá. ”Talvez o ecossistema Node.js cresça seu próprio “ Douglas Crockford ”, que dirá:“ O ecossistema Node.js é um código do Oeste Selvagem, mas existem algumas verdadeiras gemas encontradas . Aqui está um roteiro. Aqui estão as áreas a serem evitadas a qualquer custo. Aqui estão as áreas com alguns dos mais ricos a serem encontrados em QUALQUER língua ou ambiente ”.

Talvez outra pessoa considere essas palavras como um desafio e siga o exemplo de Crockford e escreva “as partes boas” e / ou “as melhores partes” para o Node.js e seu ecossistema. Eu compraria uma cópia!

E dado o grau de entusiasmo e horas de trabalho em todos os projetos, pode ser garantido em um ano, ou dois, ou três, para temperar agudamente quaisquer observações sobre um ecossistema imaturo feito no momento da redação deste artigo. Realmente pode fazer sentido em cinco anos dizer: “O ecossistema do Node.js de 2015 teve vários campos minados. O ecossistema do Node.js de 2020 tem vários paraísos. ”


As razões mais importantes para iniciar o seu próximo projeto usando o Node ...

  • Todos os caras mais legais estão nisso ... então deve ser divertido.
  • Você pode participar do cooler e ter muitas aventuras do Node para se gabar.
  • Você é um pincher centavo quando se trata de custos de hospedagem em nuvem.
  • Já foi feito isso com Rails
  • Você odeia implantações do IIS
  • Seu antigo trabalho de TI está ficando um pouco aborrecido e você gostaria de estar em um novo Start Up brilhante.

O que esperar ...

  • Você se sentirá seguro com o Express sem todo o bloatware de servidor que nunca precisou.
  • Funciona como um foguete e escala bem.
  • Você sonha. Você instalou. O pacote de nós repo packages é o maior ecossistema de bibliotecas de código aberto do mundo.
  • Seu cérebro vai ter tempo deformado na terra dos retornos de chamada aninhados ...
  • ... até aprender a cumprir suas Promises .
  • Sequelize e o Passport são seus novos amigos da API.
  • Depuração principalmente código assíncrono vai ficar um ... interessante .
  • Tempo para todos os Noders dominarem o Typescript .

Quem usa isso?

  • PayPal, Netflix, Walmart, LinkedIn, Groupon, Uber, GoDaddy, Dow Jones
  • Veja por que eles mudaram para o Node .

Você fez um ótimo trabalho de resumir o que é incrível sobre o Node.js. Meu sentimento é que o Node.js é especialmente adequado para aplicativos em que você gostaria de manter uma conexão persistente do navegador de volta ao servidor. Usando uma técnica conhecida como "long-polling" , você pode escrever um aplicativo que envia atualizações para o usuário em tempo real. Fazer longas pesquisas em muitos dos gigantes da web, como Ruby on Rails ou Django , criaria uma carga imensa no servidor, porque cada cliente ativo consome um processo de servidor. Esta situação equivale a um ataque de tarpit . Quando você usa algo como o Node.js, o servidor não precisa manter threads separados para cada conexão aberta.

Isso significa que você pode criar um aplicativo de bate-papo baseado em navegador no Node.js que quase não usa recursos do sistema para atender a muitos clientes. Sempre que você quiser fazer esse tipo de pesquisa longa, o Node.js é uma ótima opção.

Vale a pena mencionar que o Ruby e o Python têm ferramentas para fazer esse tipo de coisa ( eventmachine e twisted , respectivamente), mas o Node.js faz isso excepcionalmente bem e, a partir do zero. O JavaScript está excepcionalmente bem situado para um modelo de simultaneidade baseado em retorno de chamada, e ele se destaca aqui. Além disso, ser capaz de serializar e desserializar com JSON nativo para o cliente e o servidor é muito bacana.

Estou ansioso para ler outras respostas aqui, esta é uma pergunta fantástica.

Vale a pena ressaltar que o Node.js também é ótimo para situações em que você estará reutilizando muito código na lacuna cliente / servidor. O framework Meteor torna isso realmente fácil, e muitas pessoas estão sugerindo que esse pode ser o futuro do desenvolvimento web. Eu posso dizer por experiência que é muito divertido escrever código no Meteor, e uma grande parte disso é gastar menos tempo pensando em como você vai reestruturar seus dados, então o código que roda no navegador pode facilmente manipulá-lo e devolvê-lo.

Aqui está um artigo sobre Pyramid e long-polling, que acaba por ser muito fácil de configurar com uma pequena ajuda do gevent: TicTacToe e Long Polling com Pyramid .


Para resumir:

O Node.js é adequado para aplicativos que possuem muitas conexões simultâneas e cada solicitação só precisa de muito poucos ciclos de CPU, porque o loop de eventos (com todos os outros clientes) é bloqueado durante a execução de uma função.

Um bom artigo sobre o loop de eventos no Node.js é o blog de tecnologia da Mixu: Entendendo o loop de eventos node.js.


Acredito que o Node.js é mais adequado para aplicativos em tempo real: jogos online, ferramentas de colaboração, salas de bate-papo ou qualquer coisa em que um usuário (ou robô? Ou sensor?) Faça com o aplicativo precisa ser visto por outros usuários imediatamente, sem uma atualização de página.

Eu também devo mencionar que o Socket.IO em combinação com o Node.js irá reduzir sua latência em tempo real ainda mais do que o que é possível com o polling longo. Socket.IO voltará a longo polling como um cenário de pior caso e, em vez disso, usar soquetes da Web ou até mesmo o Flash, se estiverem disponíveis.

Mas eu também devo mencionar que praticamente qualquer situação em que o código possa bloquear devido a threads pode ser melhor resolvido com o Node.js. Ou qualquer situação em que você precise que o aplicativo seja orientado por eventos.

Além disso, Ryan Dahl disse em uma palestra que eu compareci uma vez que os benchmarks do Node.js rivalizam muito com o Nginx para solicitações HTTP antigas regulares. Então, se construirmos com o Node.js, poderemos servir nossos recursos normais com bastante eficiência, e quando precisarmos do material orientado a eventos, ele estará pronto para lidar com isso.

Além disso, é tudo JavaScript o tempo todo. Lingua Franca na pilha inteira.


Nó melhor para manipulação de solicitações simultâneas

Então, vamos começar com uma história. A partir dos últimos 2 anos, estou trabalhando em JavaScript e desenvolvendo o front-end da web e estou aproveitando. Os caras de back-end nos fornecem algumas APIs escritas em Java, python (não nos importamos) e simplesmente escrevemos uma chamada AJAX, obtemos nossos dados e adivinhe! acabamos. Mas na realidade não é assim tão fácil, se os dados que estamos obtendo não estiverem corretos ou houver algum erro do servidor, então nós temos que entrar em contato com o pessoal do back end pelo correio ou chat (às vezes no whatsApp também :)). não é legal. E se nós escrevêssemos nossas APIs em JavaScript e chamarmos essas APIs do nosso front end? Sim, isso é muito legal, porque se enfrentarmos algum problema na API, podemos investigar. Adivinha ! você pode fazer isso agora, como? - Node está lá para você.

Ok concordou que você pode escrever sua API em JavaScript, mas e se eu estou bem com o problema acima. Você tem algum outro motivo para usar o nó para a API de descanso?

então aqui está a mágica começa. Sim, eu tenho outras razões para usar o nó para nossas APIs.

Vamos voltar ao nosso tradicional sistema de APIs de descanso, que é baseado em operações de bloqueio ou encadeamento. Suponha que dois pedidos simultâneos ocorram (r1 e r2), cada um deles requer operação do banco de dados. Então, no sistema tradicional, o que acontece:

1. Waiting Way: Nosso servidor começa a atender a solicitação r1 e aguarda a resposta da consulta. após a conclusão de r1 , o servidor começa a servir r2 e o faz da mesma maneira. Então, esperar não é uma boa ideia, porque não temos muito tempo.

2. Threading Way: Nosso servidor irá criar dois threads para ambos os pedidos r1 e r2 e servir a sua finalidade depois de consultar banco de dados para esfriar seu fast.But é consome memória, porque você pode ver que começamos dois tópicos também problema aumenta quando ambos os pedidos está consultando mesmos dados, então você tem que lidar com o tipo deadlock de problemas. Então é melhor do que esperar maneira, mas ainda existem problemas.

Agora aqui está, como o nó fará isso:

3. Nodeway: Quando a mesma solicitação simultânea vem no nó, ela registrará um evento com seu retorno de chamada e seguirá em frente. Ele não aguardará a resposta da consulta para um pedido específico. Assim, quando a solicitação r1 vier, o loop de eventos do nó (sim, há um evento) loop no nó que serve a essa finalidade.) registre um evento com sua função de retorno de chamada e avance para servir a solicitação de r2 e registre de forma semelhante seu evento com seu retorno de chamada. Sempre que qualquer consulta terminar, ele acionará seu evento correspondente e executará seu retorno de chamada até a conclusão sem ser interrompido.

Portanto, sem espera, sem threading, sem consumo de memória - sim, isso é nodeway para servir API de descanso.





web-applications