Node.js para .NET Developers

16
Sob a perspectiva de um .Net Developer Node.js [email protected]

Transcript of Node.js para .NET Developers

Sob a perspectiva de um .Net Developer

Node.js

[email protected]

O que é Node.js?● Plataforma construída sob a “Chrome´s Javascript runtime” para facilitar a

construção de aplicações:● Rápidas● Escaláveis

● Utiliza um modelo de “I/O” orientado a eventos não “blockantes”, o que o torna leve e eficiente, perfeito para aplicações distribuídas e/ou de tempo real com lido de grandes massas de dados.

● É um servidor mais simples que o IIS, possui implementações que se aproximam de OWIN e KATANA.

Server Side Javascript

● O fato de rodar sob o Google V8 engine faz com que ele se torne um código muito mais previsível, não sujeito às mesmas variações que o código javascript que roda no browser;

● Modular e Assíncrono;

● HTTP, Networking e Web Sockets tratados como cidadãos de 1ª classe

Algumas Características

● Open-source;● Cross-platform;● Suporta integração com vários tipos de fonte de dados, mesmo as mais

tradicionais, como SqlServer e Oracle;● Focado em I/O● Problemas para lidar com intensivas operações de CPU

○ Processamento de Imagens○ Computações complexas

● Rico ecossistema para a criação de aplicações web modernas

The Node Package Manager

O Npm é um gerenciador de pacotes que facilita o compartilhamento e reutilização de código.

O conteúdo do Npm se divide em pacotes e módulos, em alguns casos.

O arquivo packages.json faz com que eles sejam independentes e desacoplados.

Modelo Tradicional de Servidor Web

Modelo Assíncrono de Servidor Web

Se o javascript é uma linguagem interpretada, Node.js não deveria ser mais lento do que o .Net Framework, já que suas linguagens são compiladas?

● Node.js propriamente dito não foi escrito em javascript. É uma plataforma para a execução de javascript.

● Quando se compila o código .net, o que se obtém como resultado não é código de máquina nativo, mas código de linguagem intermediária. Esta linguagem está para a linguagem de máquina no mesmo nível que o Javascript.

● O Google v8 vai fazer para javascript o que a CLR faz para o código IL;

● V8 suporta JIT e Compilação Otimizada

Node.js vs .NET/CLR● Escrita em C, C++

● Multi-Threaded para web por princípio

● Cada requisição é tratada em pelo menos uma Thread

● “Schedulling” abstraído para o developer (a menos que ele queira controlar isso)

● Escrita em C, C++ e Javascript

● Single-threaded, com um processo

● Operações “blockantes” de CPU podem causar Thread Starvation

● Developers precisam ser conscientes de “schedulling” e preparar sua aplicação para lidar com isso desde o início

Tooling

● Visual Studio 2012+○ Node.js Tools

● Visual Studio Code● Sublime ⅔

○ JavaScript & NodeJS Snippets

● Atom● Notepad++● Brackets● VI● VIM

Um Paralelo entre as duas PlataformasIIS

C#/VB/F#

EF/SQL Server

Nuget

ASP.NET Web Forms

ASP.NET MVC/Razor

ASP.NET MVC/Web API

AngularJS/Ember/KnockoutJS

SignalR

Node.exe

JavaScript

MongoDB ou qualquer outro SGBD

NPM

Express + EJS

Express + Vesh

Express

AngularJS/Ember/KnockoutJS

WebSockets

blog.concretesolutions.com.brwww.concretesolutions.com.br

São PauloRua Sansão Alves dos Santos, 4334º andar - BrooklinTel: (11) 4119-0449

Rio de JaneiroRua São José, 90 - cj. 2121

Centro(21) 2240-2030