Ao desenvolvermos nossas aplicações, sejam estas nas linguagens PHP, ASP.NET ou mesmo Java, temos uma característica que é comum a qualquer uma delas, que é a paralização dos processos enquanto estão fazendo uso dos recursos de entrada e saída (I/O) no servidor. Essa paralização é conhecida pelo termo Blocking-thread, onde as requisições são enfileiradas e depois processadas uma a uma, não ocorrendo múltiplos processos simultaneamente.
Guia do artigo:
- Criação de uma aplicação para listar filmes assistidos
- Utilizando o Express
- Utilizando o MongoDB
- Interagindo com MongoDB e Node.js
- Criando uma página HTML para Listagem dos filmes
- Consumindo API REST com AngularJS
Este é o tipo de arquitetura padrão que encontramos hoje, presente em diversos projetos que passam a ter um desempenho ineficiente. Alguns dos exemplos de requisições que demandam uma lentidão significativa nos processos são tarefas como enviar e-mails e uma consulta numa base de dados.
Este tipo de processamento consome boa parte do tempo, muitas vezes bloqueando sistemas inteiros enquanto não são finalizadas.
Devido a este problema, em meados do ano 2009, o Node.js teve sua expansão iniciada numa palestra no JSConf, a qual foi apresentada por Ryan Dahl. Ao contrário do que é imaginado, o Node.js não é uma biblioteca JavaScript, mas sim uma plataforma para a criação de aplicações web do lado do servidor, fazendo uso do JavaScript.
O Node.js foi construído inicialmente com base nas linguagens C++ e JavaScript, e usando o V8, que é uma engine do JavaScript que vem com o Chrome, que é a mesma engine utilizada para processar JavaScript no servidor.
Com a utilização do Node.js, podemos rapidamente construir e executar aplicações web em poucos minutos. Assim como o JavaScript, o Node.js funciona em qualquer navegador moderno e além de ser orientado a eventos, também é assíncrono.
Assume-se, no entanto, que todas as operações I/O são lentas.
Assim, eles são todos executados de forma assíncrona, devido ao modelo de arquitetura trazido com o Node.js ser o de non-blocking thread, o que apresenta uma melhor performance com relação ao consumo de memória e também um melhor aproveitamento com relação ao processamento dos servidores.
O Node executa cada uma de suas operações como sendo um evento, que é executado em um ciclo de eventos, onde o servidor tem apenas um segmento para executar todas as operações. Este ciclo de eventos continua “ouvindo” os eventos do servidor e quando um evento assíncrono é encontrado, como buscar dados num banco de dados, a operação é realizada fora do ciclo de eventos, que por sua vez, libera o segmento e responde a qualquer outro evento que venha depois.
Uma vez que a operação assíncrona é concluída, o ciclo de eventos recebe uma mensagem sobre a sua conclusão e o resultado é então processado, uma vez que o ciclo de eventos seja liberado.
O evento responsável pela escuta e emissão dos eventos nos sistemas é o Event-Loop, que na prática é um loop infinito que a cada iteração verifica na fila de eventos se um determinado evento foi emitido ou não. Caso haja um evento, este é executado e enviado para uma fila de executados.
O fluxo do Node.js é bastante leve, ao contrário de outras tecnologias de servidor, além de não possuir uma grande variedade de componentes instalados por padrão, apenas possui o número certo de componentes para iniciar o servidor. Claro que, caso necessário, outros componentes podem ser adicionados.
Neste artigo abordaremos o Node.js como base na construção de uma aplicação para apresentação de uma lista de filmes, além de utilizarmos do Express, o MongoDB e o AngularJS. Utilizaremos o sistema operacional Windows 8 (64 bits) e o Visual Studio para o desenvolvimento de nossa aplicação.
Uma observação a ser feita aqui é que as ferramentas Node para Visual Studio podem ser usadas com o Visual Studio 2012 Web Developer Express, Visual Studio 2013 Web Developer Express, ou com as versões completas do Visual Studio 2012 ou 2013. Para a execução do nosso projeto, precisaremos ter em nossas máquinas as seguintes ferramentas:
- Visual Studio 2012 ou 2013;
- Node.js;
- Node.js tools for Visual Studio (NTVS);
- MongoDB.
Os três primeiros itens de nossas ferramentas podem ser instalados de forma simples, apenas aceitando as configurações padrões que são fornecidas. Já para o MongoDB, receberemos um arquivo zip que contém um conjunto de arquivos binários, que devem ser extraídos do zip para qualquer local que desejarmos. No nosso caso, este será extraído em E:\MongoDB\bin. Uma vez que tenhamos os arquivos extraídos, devemos seguir os seguintes passos:
- Na pasta chamada MongoDB vamos criar uma pasta chamada 'data' e dentro dessa pasta criaremos outra pasta chamada ‘db’;
- Agora vamos até a nossa pasta que extraímos na unidade E:\MongoDB\bin e vamos criar um arquivo de texto com o nome de ‘mongod.conf’. Em seguida, passemos para ele as seguintes declarações, de acordo com as apresentadas pela Listagem 1.
dbpath = E:\MongoDB\data\db
logpath = E:\MongoDB\mongo-logs.log
logappend = true
- Após isso, executemos o prompt de comando como administrador e mudemos o caminho para a pasta bin do MongoDB em nosso sistema. Em seguida executaremos os seguintes comandos:
<p align="left">mongod.exe -f mongod.conf –service
net start mongodb
Uma vez que esses comandos forem executados, o MongoDB e ...
Confira outros conteúdos:
Perguntas frequentes
Nossos casos de sucesso
Eu sabia pouquíssimas coisas de programação antes de começar a estudar com vocês, fui me especializando em várias áreas e ferramentas que tinham na plataforma, e com essa bagagem consegui um estágio logo no início do meu primeiro período na faculdade.
Estudo aqui na Dev desde o meio do ano passado!
Nesse período a Dev me ajudou a crescer muito aqui no trampo.
Fui o primeiro desenvolvedor contratado pela minha
empresa. Hoje eu lidero um time de desenvolvimento!
Minha meta é continuar estudando e praticando para ser um
Full-Stack Dev!
Economizei 3 meses para assinar a plataforma e sendo sincero valeu muito a pena, pois a plataforma é bem intuitiva e muuuuito didática a metodologia de ensino. Sinto que estou EVOLUINDO a cada dia. Muito obrigado!
Nossa! Plataforma maravilhosa. To amando o curso de desenvolvimento front-end, tinha coisas que eu ainda não tinha visto. A didática é do jeito que qualquer pessoa consegue aprender. Sério, to apaixonado, adorando demais.
Adquiri o curso de vocês e logo percebi que são os melhores do Brasil. É um passo a passo incrível. Só não aprende quem não quer. Foi o melhor investimento da minha vida!
Foi um dos melhores investimentos que já fiz na vida e tenho aprendido bastante com a plataforma. Vocês estão fazendo parte da minha jornada nesse mundo da programação, irei assinar meu contrato como programador graças a plataforma.
Wanderson Oliveira
Comprei a assinatura tem uma semana, aprendi mais do que 4 meses estudando outros cursos. Exercícios práticos que não tem como não aprender, estão de parabéns!
Obrigado DevMedia, nunca presenciei uma plataforma de ensino tão presente na vida acadêmica de seus alunos, parabéns!
Eduardo Dorneles
Aprendi React na plataforma da DevMedia há cerca de 1 ano e meio... Hoje estou há 1 ano empregado trabalhando 100% com React!
Adauto Junior
Já fiz alguns cursos na área e nenhum é tão bom quanto o de vocês. Estou aprendendo muito, muito obrigado por existirem. Estão de parabéns... Espero um dia conseguir um emprego na área.