node.js – niskopoziomowe środowisko implementujące javascript po stronie serwera

15
Node.js – niskopoziomowe środowisko implementujące JavaScript po stronie serwera Łukasz Przywarty 171018 Mariusz Kacała 171058 Na podstawie: Tilkov, S., Vinoski, S., Node.js: Using JavaScript to Build High-Performance Network Programs [W:] Internet Computing, IEEE, 2010, t. 14, nr 6, s. 80-83.

Upload: cadman-day

Post on 02-Jan-2016

32 views

Category:

Documents


0 download

DESCRIPTION

Node.js – niskopoziomowe środowisko implementujące JavaScript po stronie serwera. Na podstawie: Tilkov , S., Vinoski , S., Node.js : Using JavaScript to Build High-Performance Network Programs [W:] Internet Computing , IEEE, 2010, t. 14, nr 6, s. 80-83. Łukasz Przywarty 171018 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Node.js  – niskopoziomowe środowisko implementujące  JavaScript  po stronie serwera

Node.js – niskopoziomowe środowisko

implementujące JavaScript po stronie serwera

Łukasz Przywarty 171018Mariusz Kacała 171058

Na podstawie:

Tilkov, S., Vinoski, S., Node.js: Using JavaScript to BuildHigh-Performance Network Programs [W:] Internet

Computing, IEEE, 2010, t. 14, nr 6, s. 80-83.

Page 2: Node.js  – niskopoziomowe środowisko implementujące  JavaScript  po stronie serwera

Ramowy plan prezentacji

• Node.js - informacje wstępne

• Po co programistom node.js?

• Właściwości node.js

• Prosty serwer HTTP

• Manager pakietów npm

• Wielowątkowość a node.js

• Kiedy korzystać, a kiedy nie korzystać z node.js

3/16

Page 3: Node.js  – niskopoziomowe środowisko implementujące  JavaScript  po stronie serwera

Node.js – informacje wstępne

• Data utworzenia: 2009 r.

• Niskopoziomowa implementacja silnika V8

JavaScript’u po stronie serwera.

• Napisany w języku C/C++ (8000 linii) oraz

JavaScript (2000 linii), obsługuje programy

napisane w JavaScript.4/16

Page 4: Node.js  – niskopoziomowe środowisko implementujące  JavaScript  po stronie serwera

Node.js – informacje wstępne c.d.

• Obsługiwany zdarzeniami.

• Nieblokujące i asynchroniczne operacje I/O

oraz zapytania do bazy danych

• Zalety: wydajność w obsłudze zdarzeń

generowanych przez dużą liczbę użytkowników,

małe zużycie pamięci.

• Własny manager pakietów npm; liczne

frameworki.5/16

Page 5: Node.js  – niskopoziomowe środowisko implementujące  JavaScript  po stronie serwera

Po co programistom node.js?

• Apache i wątki - można łatwiej i wydajniej.

• Zbyt skomplikowane rozwiązania:

– Ruby Event Machine,

– Python Twisted/Tornado,

– Erlang (Facebook Chat).

• Przewaga: dużo lepsza dostępność (JavaScript)

i społeczność.

6/16

Page 6: Node.js  – niskopoziomowe środowisko implementujące  JavaScript  po stronie serwera

Sterowanie zdarzeniami

• Zdarzenie zamiast wątku.

• Event-loop.

7/16

Page 7: Node.js  – niskopoziomowe środowisko implementujące  JavaScript  po stronie serwera

Asynchroniczne operacje I/O

• Nie wyjątek, a reguła.

• Ważne dla programowania zdarzeniowego.

• Powodują problemy.

• W sytuacjach szczególnych (np. zmiana nazwy

pliku) istnieją wyjątki od asynchroniczności.

8/16

Page 8: Node.js  – niskopoziomowe środowisko implementujące  JavaScript  po stronie serwera

JavaScript po stronie serwera

• Kolejny krok w stronę kompleksowego

rozwiązania (ten sam język programowania dla

frontend’u i backend’u)

• JavaScript w zgodzie z filozofią node.js –

wsparcie funkcji zwrotnych zdarzeń (event

callback)

9/16

Page 9: Node.js  – niskopoziomowe środowisko implementujące  JavaScript  po stronie serwera

Wielowątkowość z node.js

• Jeden node.js – jeden proces.

• Rozwiązanie: wiele instancji serwera node.js

komunikujących się poprzez współdzielone

gniazdko

w systemie operacyjnym (200 linii kodu JavaScript)

10/16

Page 10: Node.js  – niskopoziomowe środowisko implementujące  JavaScript  po stronie serwera

Prosty serwer HTTP

var sys = require(“sys”), http = require(“http”), url = require(“url”), path = require(“path”), fs = require(“fs”);http.createServer(function(request, response) { var uri = url.parse(request.url).pathname; var filename = path.join(process.cwd(), uri); path.exists(filename, function(exists) { if(exists) { fs.readFile(filename, function(err, data) { response.writeHead(200); response.end(data); }); } else { response.writeHead(404); response.end(); } });}).listen(8080);sys.log(“Server running at http://localhost:8080/”);

11/16

Page 11: Node.js  – niskopoziomowe środowisko implementujące  JavaScript  po stronie serwera

Manager pakietów npm

• Bogaty ekosystem framework’ów.

• Ponad 16 300 pakietów.

• Najpopularniejsze:

– ExpressJs – framework dla aplikacji webowych,

– Socket.io – serwer WebSocket dla node.js (aplikacje czasu

rzeczywistego),

– Redis – serwer ‘struktur danych’,

– Coffee – język kompliowany do JavaScript.

12/16

Page 12: Node.js  – niskopoziomowe środowisko implementujące  JavaScript  po stronie serwera

Interesujące pakiety w npm

• Nodecopter – biblioteka do sterowania modelem

śmigłowca.

• Noduino – framework obsługujący podstawowe

podzespoły Ardunio przez sieć.

13/16

Page 13: Node.js  – niskopoziomowe środowisko implementujące  JavaScript  po stronie serwera

Kiedy korzystać z node.js?

• Deweloper znający język JavaScript.

• Aplikacje czasu rzeczywistego (np. Twitter,

relacje

z wydarzeń sportowych etc.).

• JSON/ Rest API dla aplikacji sieciowych.

• Aplikacje składające się ‘jednej podstrony' (np.

Gmail).

• Przesyłanie danych.14/16

Page 14: Node.js  – niskopoziomowe środowisko implementujące  JavaScript  po stronie serwera

Kiedy nie korzystać z node.js?

• Aplikacje korzystające z dużej ilości zasobów

CPU.

• Proste aplikacje typu CRUD.

• Gdy istnieje potrzeba skorzystania z biblioteki

w konkretnym języku.

15/16

Page 15: Node.js  – niskopoziomowe środowisko implementujące  JavaScript  po stronie serwera

Node.js – niskopoziomowe środowisko

implementujące JavaScript po stronie serwera

Łukasz Przywarty 171018

Na podstawie:

Tilkov, S., Vinoski, S., Node.js: Using JavaScript to BuildHigh-Performance Network Programs [W:] Internet

Computing, IEEE, 2010, t. 14, nr 6, s. 80-83.