Filippo Bergamasco ( DAIS - Università Ca Foscari di Venezia Anno accademico:

Documenti analoghi
Tecnologie e applicazioni web Electron

Indice generale. Introduzione...xiii. Uno sguardo più da vicino a JavaScript...17

Progetto d esame. La logica di gioco. Tecnologie e applicazioni web, a.a 2017/2018. Fase di posizionamento

Filippo Bergamasco ( DAIS - Università Ca Foscari di Venezia Anno accademico:

Introduzione ai thread

SISTEMI OPERATIVI THREAD. Giorgio Giacinto Sistemi Operativi

Event loop. Event Loop. Carica il programma, quindi. Finché c è altro da fare. Attendi che qualcosa accada. Termina, a meno che non ci sia altro

Tecnologie e applicazioni web JSON Web Token (JWT)

XAMPP - Cos'è e installazione in locale

Come realizzare il proprio cloud in casa

Antonio d Acierno 13/01/2006

Basi di Dati. Prof. Alfredo Cuzzocrea Università degli Studi di Trieste. Basi di Dati e Web. Credits to: Prof. M. Di Felice UniBO

Basi di Dati-IX. Basi di dati e web. Introduzione. Schema. Basi di dati e web. Corso di Laurea in Informatica Anno Accademico 2013/2014

Architetture Applicative Altri Esempi

3.3.6 Gli operatori Le funzioni di accesso al tipo Le strutture di controllo Le funzioni

Tecnologie e applicazioni web TypeScript

Luca Tesei. Laboratorio di Sviluppo Web: Le Basi. Modulo IFTS. Fermo 31/03, 03/04, 07/ Prof. Luca Tesei Università di Camerino 1

Filippo Bergamasco ( DAIS - Università Ca Foscari di Venezia Anno accademico:

Node.js + Drupal. Luca Lusso. giovedì 1 dicembre 11

Introduzione a Linux Lezione 7 Programmare in Linux

L IDE NETBEANS. (slide: A. Baratè) Programmazione per la Musica Adriano Baratè

Programmazione lato client. JavaScript. Applicazioni di Rete M. Ribaudo - DISI. JavaScript

SOFTWARE. Programmi e dati che indicano al computer come svolgere un determinato compito

Servizi DISI: spazio Web personale e di gruppo. Angelo Di Iorio

Sistema operativo & file system 1

JavaScript JavaScript Programmazione lato client JScript JavaScript ECMAScript

Sistema Operativo (Software di base)

Analisi e comparazione dei Framework OpenSwing e Google Web Toolkit per lo sviluppo di interfacce utente con paradigma MVC.

Linux LPI Essential. Obiettivi

Server LDAP. File Server. Domain Controller. Installazione di una piattaforma Linux Alessandro Brusò 24/05/2012

Modelli di programmazione parallela

Isaac DE è una piattaforma Big Data completa di strumenti e servizi per l installazione, la configurazione, l uso, la gestione e il monitoraggio di

Symantec IT Management Suite 8.0 powered by Altiris technology

MySQL Server e Workbench.

Remote file access sulla grid e metodi di interconnesione di rete

ALTRI TIPI DI CONNESSIONE

Linux e i software liberi. di Nardean Lorenzo e Redigolo Marco

Elementi di Informatica A. A. 2016/2017

Istruzioni installazione

Java: un linguaggio per applicazioni di rete

+ = EVAET. Azienda speciale

Basi di Dati Architetture Client/Server

Traduzione e interpretazione

Architetture Client/Server. Un architettura è centralizzata quando i dati e le applicazioni (programmi) risiedono in un unico nodo elaborativo

UNIVERSITY OF CAGLIARI

ODOO può essere installato su Linux, Windows e Macintosh, ma la piattaforma di riferimento indicata da Odoo sa è Linux Ubuntu.

Gestione del Software Installazione e gestione repository

L'ambiente DB2 in LAB (e come collegarsi da remoto)

Laboratorio Progettazione Web Applicazioni Web

istruzioni per l'installazione

Installazione Configuration Software

Dipartimento di Giurisprudenza Prof. Michele Perilli Conoscenze Informatiche

Installazione e configurazione del connettore SIGLA/FEP e Var Hub 1

Dopo aver installato WAMP (o XAMPP) e verificato che i servizi siano funzionanti, si può procedere ad installare ARTISWEB, come appresso descritto.

Laboratorio Progettazione Web Applicazioni Web

Architetture Client/Server. Un architettura è centralizzata quando i dati e le applicazioni (programmi) risiedono in un unico nodo elaborativo

Strumenti per l automazione del testing di applicazioni web Javascript-based

SERVER. licences and i. t. mana ger GESTIONE, MONITORAGGIO, DISTRIBUZIONE LICENZE

Sommario. Introduzione a AJAX - Asynchronous Javascript And Xml. Motivazioni (1) XHTML e HTTP sono strumenti deboli

Procedura di installazione rrunnweb

A. Lorenzi Pagine ASP

Prova d Esame Compito A

Internet: cenni su struttura e funzionamento.

Corso Programmazione Java Standard

Il linguaggio PHP. Insegnarvi tutto il PHP? Non esattamente Obiettivo: insegnarvi ad interagire via web con una base dati

Progettazione Web. Laboratorio di. Ambiente di Sviluppo. Angelica Lo Duca

Scuola di Calcolo Scientifico con MATLAB (SCSM) 2017 Palermo 31 Luglio - 4 Agosto 2017

Server-side Javascript

Dal sito web all applicazione mobile

STR Vision AM. Presentazione della piattaforma

Università degli Studi di Napoli Federico II

HOSTING AD ALTI LIVELLI LIVELLO DI PERFORMANCE 1&1: PRESTAZIONI CHE CRESCONO IN BASE ALLE TUE ESIGENZE

Ricevimento: dopo la lezione (in aula) o su appuntamento (Sede Scientifica Pal. 1 Primo Piano)

Prima Prova (Traccia 1)

ADaMSoft. Procedure per l installazione del software in ambiente Microsoft Windows 3/6/2008. Powered by:

ARCHIVIA PLUS - DOCPORTAL

Corso di QoS e sicurezza nelle reti Lezione del 11/03/2015

ZonabitOrario TUTORIAL

Prof. Pagani corrado JAVA

Web-based Simulations of Multi-agent Systems

Horizone Server IN00B02WEB. Horizone PDK

Strumenti per lo sviluppo e la gestione di Ontologie

Corso di Applicazioni Telematiche

Master SIT settembre Corso Web & GIS. Chiara Renso. ISTI- CNR

Mini Corso LUG Govonis. Installare GNU/Linux. Versione Slides: 1.0.1

Manuale utente Volta Control

Tecnologie di Sviluppo per il Web

Praticamente Statistica Laboratorio di software open source

Il Sistema Operativo

Realizzazione di un software per la gestione di apparecchiature biomedicali Anno Accademico 2010/2011

Mariano Pirrotta. A c t i v e S e r v e r P a g e * * *

Programmare server. Programmazione Web 1

Installazione Configuration Software

Sviluppo software in gruppi di lavoro complessi 1

Piattaforme software distribuite I

SQL per le applicazioni D B M G

ORGANIZZAZIONE DI SISTEMI OPERATIVI E RETI

Introduzione Dal problema al programma Architettura del calcolatore Le reti ed internet Rappresentazione dell informazione Elementi di programmazione

Base. Come realizzare applicazioni di web mapping

Transcript:

Filippo Bergamasco ( filippo.bergamasco@unive.it) http://www.dais.unive.it/~bergamasco/ DAIS - Università Ca Foscari di Venezia Anno accademico: 2017/2018

Storicamente, realizzare la parte server di un applicazione web risulta più complesso e tedioso perché richiede una conoscenza più o meno approfondita di: Programmazione multi-threaded Scalabilità Gestione della sicurezza Server deployment.. etc...

Javascript non era stato pensato per offrire caratteristiche e performance simili ad altri linguaggi comunemente usati in ambito server: Sistema di gestione della memoria basilare Mancanza di integrazione con il sistema operativo Velocità di esecuzione molto ridotta (il linguaggio veniva interpretato direttamente dal browser) Prima dell avvento di V8, è rimasto per anni confinato all interno del browser

Node.js è un runtime Javascript composto dal motore V8 di Google unito ad un layer di integrazione con il sistema operativo che fornisce un ambiente Javascript full-featured al di fuori del browser. Open-source Orientato allo sviluppo di codice Server-side Cross-platform Ideale per lo sviluppo di applicazioni di rete

E molto leggero e veloce rispetto alle soluzioni tradizionali basate su Java, PHP, etc. Facile da configurare e da installare Ci sono moltissimi moduli (librerie) disponibili gratuitamente e semplicemente installabili attraverso il gestore pacchetti npm Contiene moduli per la connessione a database relazionali e non (NoSQL) Permette di utilizzare Javascript come unico linguaggio dell intera web application (sia server che client)

1. Operazioni asincrone (non-bloccanti) 2. Single threaded 3. Shared-state concurrency

In Nodejs la maggior parte delle funzionalità offerte dalle API sono di tipo non-bloccante ed eseguono i rispettivi task in modo asincrono

In Nodejs le operazioni sono asincrone ma non parallele. Vi è un solo event-loop (come nel browser) che processa a turno tutte le callbacks. Internamente Nodejs gestisce un thread-pool e IO non bloccante per le operazioni

Tutti gli accessi concorrenti vedono lo stesso stato condiviso della memoria (Non vi è l overhead dovuto alla creazione/distruzione di processi o thread) Apache NodeJS Process PHP thread PHP thread Request Request Request Request

Quando conviene usare Node.js? Quando il programma è IO-bound, cioè la maggior parte del tempo viene speso per la gestione dell IO (dal disco, dalla rete, dal database) anziché per l esecuzione di calcoli complessi Caso tipico dei server Web, database, etc!

Quando NON conviene usare Node.js? Per la sua natura single-threaded, non è la scelta più adatta se il software è CPU-bound: Le richieste che vengono effettuate al server richiedono l esecuzione di task molto complessi e cpu-intensive Le operazioni da effettuare sono naturalmente parallelizzabili in un ottica multi-thread

Node è disponibile per Windows, OSX e Linux. http://nodejs.org Su Linux è preferibile l installazione attraverso il gestore pacchetti della distribuzione, su OSX attraverso homebrew

Node.js viene distribuito con: Un front-end REPL (Read, Evaluate, Print, Loop) Un eseguibile da riga di comando per l esecuzione di script da files Un gestore pacchetti chiamato npm (Node Package Manager)

$ node --version v8.9.4 $ node > var a="filippo" undefined > console.log(a) filippo undefined

E possibile semplicemente eseguire codice Javascript contenuto in un file lanciando il processo $ node nomefile.js Un progetto mediamente complesso richiede solitamente di strutturare le varie componenti in files distinti. L entry point è definito nel file package.json, congiuntamente a metadati sulla versione, descrizione, etc

https://docs.npmjs.com/files/package.json { } name : nome-mio-progetto, main : nome-script-principale, version : 0.0.1, dependencies : { colors : 0.5.0 }, private : true

Un package Node, definito in package.json, permette di definire un modulo che può essere eseguito (se è presente la proprietà main) oppure utilizzato da altri moduli come libreria. Il framework Node.js comprende un gestore pacchetti chiamato npm che permette di gestire le dipendenze fra i pacchetti, semplificandone l installazione

I moduli seguono la convenzione definita in CommonJS: La funzione require() permette di caricare moduli globali (installati via npm) e locali Tutte le variabili definite all interno di un modulo (file) sono locali per quel modulo. Per esportare variabili al di fuori del modulo vanno aggiunte all interno dell oggetto module.exports o semplicemente exports

Per installare tutte le dipendenze di un dato modulo, definito in package.json, è possibile utilizzare il comando: $ npm install Viene creata una directory node_modules con il codice di tutte le dipendenze. La directory è posizionata di default nella stessa dir contenente il file package.json

Il proprio modulo può essere pubblicato nel registro npm (se non è stato marcato come private) con il comando $ npm publish E possibile cercare fra i moduli disponibili con il comando $ npm search <nomemodulo>

In Node vi sono due oggetti globali, chiamati rispettivamente global e process, con funzionalità simili (dato che node è singolo processo). Tra le proprietà più utili ricordiamo: filename, dirname setimmediate(callback[,...args]) setinterval(callback, delay[,...args]) settimeout(callback, delay[,...args]) require()

Fornendo un interprete javascript al di fuori del browser, Node.js espone molte API per interfacciarsi con le funzionalità offerte dal sistema operativo: Accesso al filesystem Creazione di socket TCP/UDP Esecuzione/controllo di altri processi https://nodejs.org/api/index.html

La maggior parte delle API sono di tipo asincrono e orientate alla gestione rapida dell IO. Esempio: filesystem API: var stream = fs.createreadstream( my-file.txt ); stream.on( data, function(chunk){ // do something with part of the file }); stream.on( end, function(chunk){ // reached the end });

Una delle API più utilizzate di Node sono quelle che forniscono client e server HTTP Basato sul concetto di requests e responses, che sono gestite da Node rispettivamente dagli oggetti: http.serverrequest e http.serverresponse Operazioni di ricezione di request e invio di response asincrone per la gestione di più utenti