Anteprima
Vedrai una selezione di 9 pagine su 40
Programmazione e tecnologie Web Pag. 1 Programmazione e tecnologie Web Pag. 2
Anteprima di 9 pagg. su 40.
Scarica il documento per vederlo tutto.
Programmazione e tecnologie Web Pag. 6
Anteprima di 9 pagg. su 40.
Scarica il documento per vederlo tutto.
Programmazione e tecnologie Web Pag. 11
Anteprima di 9 pagg. su 40.
Scarica il documento per vederlo tutto.
Programmazione e tecnologie Web Pag. 16
Anteprima di 9 pagg. su 40.
Scarica il documento per vederlo tutto.
Programmazione e tecnologie Web Pag. 21
Anteprima di 9 pagg. su 40.
Scarica il documento per vederlo tutto.
Programmazione e tecnologie Web Pag. 26
Anteprima di 9 pagg. su 40.
Scarica il documento per vederlo tutto.
Programmazione e tecnologie Web Pag. 31
Anteprima di 9 pagg. su 40.
Scarica il documento per vederlo tutto.
Programmazione e tecnologie Web Pag. 36
1 su 40
D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

Introduzione a XML e JSON

XML (Extensible Markup Language) è un metalinguaggio che permette di creare dei linguaggi personalizzati di markup. È estensibile.

JSON (JavaScript Object Notation) è un formato di scambio dati leggero. Si basa su un sottoinsieme di JavaScript ed è ideale per lo scambio dati.

Approccio AJAX

AJAX (Asynchronous JavaScript and XML) è un modello architetturale per integrare JavaScript, DOM e CSS al fine di migliorare il processo di sviluppo e usabilità delle applicazioni web. Offre la comunicazione asincrona tra client e server, permette di separare la struttura dai dati e non richiede installazioni aggiuntive.

Motivazioni per l'utilizzo di AJAX:

Computazionali:

  • Si riducono il numero di connessioni al server
  • L'interazione asincrona permette lo scambio di dati in background

Usabilità:

  • Si arricchisce l'interazione con l'interfaccia grafica
  • Evita il refresh della pagina
  • Consente di sviluppare animazioni ed effetti grafici

Processo di sviluppo:

  • Riduce la complessità dello sviluppo
  • Permette di creare applicazioni web più dinamiche e interattive
dipendenza tra questi due elementi Interazione tra client e server:
  1. nuove funzioni User-agent:
    • Gestione eventi
    • Gestione delle risposte
    • limita il server alla fornitura di dati e validazione di input
Same-origin server:
  1. Regola di sicurezza di base per gli user agent. Segue che uno script potrà caricare risorse solo se hanno la stessa origine:
    • stesso host
    • stesso URL
    • stessa porta
  2. Dato che questa regola risulta molto restrittiva, sono stati sviluppati diversi modi per aggirarla:
    • JSONP (JSON with padding), è un metodo implementato lato server per incapsulare dei dati JSON in una funzione di callback e funziona solamente in GET.
    • usando document.domain è possibile che due script identificano il loro dominio in modo corrispondente
  3. Dato che entrambe le soluzioni sono temporanee e non sempre funzionanti, il W3C ha definito CORS (Cross-Origin Source Sharing) che definisce un meccanismo per effettuare richieste cross-origin lato client, semplicemente verificando che il browser
utilizzi la versione più aggiornata di XMLHttpRequest. Web 2.0 permette la partecipazione degli utenti nella costruzione dei contenuti. Tecnologie web 2.0: - Web Services: sfruttano XML e HTTP per realizzare un'architettura. Per esempio: SOAP (Simple Object Access Protocol) - API (Application Program Interface): insieme di procedure disponibili al programmatore necessarie per compiere un determinato scopo in un programma. Per i servizi web le API si organizzano per consentire una serie di chiamate HTTP. - Protocolli REST: Il principio fondamentale è che un Client (nel momento in cui riferisce una risorsa Web usando un URL) ottiene di ritorno una rappresentazione della risorsa (ad esempio un documento HTML) che lo posiziona in un nuovo stato. Nel nuovo stato il client può avere a disposizione nuove risorse che, riferite, gli consentiranno di ottenere la rappresentazione di una nuova risorsa che modificherà nuovamente il suo stato. Il client trasferisce lo stato attraverso.

Ogni risorsa di cui ottiene la rappresentazione REST è un design pattern che prescrive l'uso di alcuni standard:

  • HTTP
  • URL 18
  • XML, HTML o JSON (rappresentazione delle risorse)
  • Tipi di risorsa (text/html, application/json)

Lavorando tramite risorse, un protocollo REST consente di astrarre dal linguaggio che sarà adoperato lato client o server per processare i dati.

HTTP è un protocollo CRUD (Create, Retrieve, Update, and Delete):

  • GET → Retrieve
  • POST → Update
  • PUT → Create
  • DELETE → Delete

Database NoSQL:

I database NoSQL risolvono il conflitto con il vincolo di consistenza. Si pongono quindi in alternativa al modello ACID dei database relazionali, non compatibile con un modello distribuito e decentralizzato e considerato come eccessivamente pessimistico.

  • Basic availability: i datastore sono operativi per la maggior parte del tempo
  • Soft-state: i datastore non devono necessariamente essere scritti in modo consistente e neppure eventuali

copie devono essere consistenti per la maggior parte del tempo

Eventual consistency, la consistenza deve essere esibita in un determinato momento successivo, ad es. al tempo di lettura. La consistenza va gestita a livello applicativo

Modulo 3 - Applicazioni distribuite

Linguaggi di scripting lato server

Distribuire i processi di esecuzione

Application server: insieme di componenti/servizi che integrano la logica di presentazione, di esecuzione e di connessione di un sistema → ogni scelta architetturale è valutata in base a delle dimensioni critiche:

  • prestazioni
  • scalabilità
  • disponibilità
  • complessità
  • sicurezza

Obiettivo di un'architettura → massimizzare queste dimensioni

Architetture tipiche:

  1. singolo host
  2. Architettura: Un singolo host contiene:
    • Web Server
    • Script Engine
    • Application Server
    • Database Server
  3. Valutazione architettura:
    • Prestazioni: dipendono dalla macchina. Tutte le applicazioni accedono alla stessa CPU
    Scalabilità: dipende dalle componenti hardware della macchina Disponibilità: una sola macchina Complessità: costi e competenze ridotti Sicurezza: tipicamente un solo punto firewall Database separato Architettura: Un host contiene: - Web Server - Script Engine - Application Server In un altro host vi è: - Database Server Valutazione architettura: - Prestazioni: migliorano all'aumentare delle dimensioni delle due macchine in quanto application server e DB hanno entrambi un alto numero di accessi alla CPU - Scalabilità: le due macchine aggiornate indipendentemente - Disponibilità: determinata dall'host principale - Complessità: costi e competenze ridotti - Sicurezza: basata su politiche di sicurezza specifiche per il database - Replicazione degli host Architettura: Gli host che gestiscono i vari servizi vengono replicati - prestazioni, scalabilità, disponibilità non dipendono da un singolo hostpossibile bilanciare le richieste- è possibile definire politiche di sicurezza adatte allo specifico servizio- Valutazione architettura
    • Prestazioni: gestita una distribuzione del carico di lavoro sugli host bilanciata: Load-balancing
    • Scalabilità: è possibile aggiungere nuove istanze degli host
    • Disponibilità: in caso di indisponibilità di un host il suo carico di lavoro viene distribuito sui processi funzionanti: fail-over
    • Complessità: costi e competenze elevati
    • Sicurezza: si possono attivare politiche di sicurezza specifiche per singoli servizi
    Gestione sessione utente:

    Per garantire che la sessione sia mantenuta con coerenza è necessario che le richieste dello stesso client siano inviate allo stesso server. Per riconoscere le richieste di uno stesso utente si possono usare cookie, oppure tecniche di URL rewriting.

    Gestione cache:

    È possibile migliorare le prestazioni riducendo i carichi e la latenza di

    trasmissione attraverso la cache. politiche di aggiornamento della cache:

    • expiration rules: definiscono la durata della validità di un oggetto in cache
    • invalidation rules: stabiliscono se l'oggetto in cache non è conforme con l'originale

    Scalabilità delle applicazioni web

    Affermazione di un paradigma di programmazione: Programmazione ad Eventi

    Quest'ultima modifica il flusso di esecuzione di un programma, basandosi su eventi generati da un gestore (event handler) spesso supportato da un chiamante (dispatcher).

    Node.js supporta la programmazione ad eventi.

    Javascript è un linguaggio a singolo thread (unica pila di chiamate (CallStack)) però consente di definire strutture non bloccanti. (Esempio slide)

    Flusso di lavoro:

    1. Viene registrato l'evento del timeout all'interno dell'event handler
    2. Vengono eseguite le istruzioni successive del codice 21
    3. Quando l'event handler notifica che il timer si è concluso, allora...

    Verrà inserita nella call stack la funzione di callback del timeout ed eseguita. Stesso comportamento con le chiamate AJAX, solamente che la funzione di callback sarà inserita nell'event loop finché non sarà possibile inserirla nella call stack.

    Node.js è un framework modulare (usa NPM) Javascript per l'utilizzo lato server, pensato per lavorare con un approccio ad eventi. Sfrutta il motore Javascript V8 progettato per avere performance elevate.

    Process → oggetto più importante che traccia il processo in esecuzione.

    Oggetti globali: Node è pensato per essere modulare ed estensibile → è possibile implementare oggetti o funzioni di altri moduli tramite l'oggetto export o module. (se non presenti nativamente, installazione attraverso npm)

    Modulo HTTP → modulo fondamentale per le connessioni HTTP (esempio slide) 22

    Express

    Deploy di un server Node.js (Guardo slide)

    3.1.4 poiché è tutto pratico)Framework e Design Pattern evoluzione dei modelli architetturali sono caratterizzati da quattro principi fondamentali:

    • separazione di interfaccia e dati
    • riduzione della latenza, esecuzione delle operazioni di modifica dei dati direttamente sul client attraverso una copia in cache della base di dati. Necessaria è la verifica dell'allineamento dei dati. Se risultano disallineati verrà aggiornata la cache del client
    • reattività, contesto nel quale i dati modificati da un client vengono propagati a tutti i client che hanno implementato un metodo in ascolto su quel dato. Servono dei protocolli che lavorino in due fasi:
      • i dati inviati vengono salvati in locale ed in remoto
      • in seguito il dato è re-inviato per conferma da remoto verso il locale, i client ricevono una nuova versione dei dati e se tracciano delle differenze aggiornano la versione locale
    • fusione delle tecnologie, che fornisce la

    Possibilità di interrogare i dati usando gli stessi metodi lato client e lato server.

    Templating → flussi per cui HTML fornisce la struttura, i dati vengono presi tramite API e le iterazioni sono gestite da procedure sia lato server che client.

    Un framework molto conosciuto per il templating con Node.js è EJS.

    Ottimizzazione di un'applicazione web:

    Vi è il bisogno di ridurre le chiamate di rete che vengono effettuate all'interno delle applicazioni web.

    Ridurre le dimensioni delle risorse usate dall'applicazione:

    • Ritardare il caricamento di Javascript, posizionando l'inclusione degli script in fondo alla pagina.
Dettagli
Publisher
A.A. 2021-2022
40 pagine
SSD Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher NoIcon02 di informazioni apprese con la frequenza delle lezioni di Programmazione Web e Mobile e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi di Milano o del prof Ceravolo Paolo.