Sei sulla pagina 1di 21

Xml: è piu lento e supporta tutte le tipologie di file.

è un linguaggio standard comprensibile da tutti

Json: più leggero perché non ci sono tag ma linguaggio standard comprensibile da tutti

Javascript è lato-client

Pacchetto di deploy

Tomcat è un container per le servlet

Le servlet sono scritte in java e vengono utilizzate per creare siti web dinamici. Le servlet
gestiscono più richieste contemporaneamente.

Nelle servlet ci sono due file: html e java. Utilizzano XML. Nelle servlet non c’è GUI, va integrata
separatamente.

Mentre nelle jsp i due file sono incorporati in uno.

Un processo è un’applicazione, mentre un thread è una suddivisione del processo che permette di
eseguire operazioni parallelamente

XMLOrientedTag

Linguaggio di scripting:

Strutturati e non strutturati

Rpc e cgi

Unità 1

I sistemi distribuiti
Le architetture dei sistemi informativi si sono sviluppate ed evolute nel corso degli anni passando da schemi
centralizzati a modelli distribuiti.
1. Nei sistemi centralizzati le applicazioni vengono elaborate da un singolo processore o host
2. Nei sistemi distribuiti le applicazioni vengono elaborate da più host che collaborano tra loro
Nei sistemi distribuiti sono presenti diversi componenti:
1. client: utilizzatore di servizi messi a disposizione da altre applicazioni
2. server: fornitore di servizi usati da altre applicazioni
3. actor: ricopre sia il ruolo di client che quello di server

Classificazione dei sistemi distribuiti:


1. Sistemi di calcolo: calcolo ad alte prestazioni
 cluster: connessione di computer omogenei tramite una rete allo scopo di parallelizzare
l'elaborazione
 grid: l’operazione di calcolo può essere effettuata anche utilizzando macchine eterogenee
2. Sistemi informativi: sistemi transazionali dove ogni transazione consiste in un insieme di operazioni
elementari incapsulate in due comandi di inizio fine transazione
3. Sistemi distribuiti pervasivi: nuova generazione di sistemi con connessioni di rete wireless che sono
sotto parti di sistemi più grandi

Vantaggi
1. Affidabilità
2. Integrazione
3. Trasparenza
4. Economicità
5. Apertura
6. Connettività e collaborazione
7. Prestazioni e scalabilità
8. Tolleranza ai guasti
Svantaggi
1. Produzione di software
2. Complessità
3. Sicurezza
4. Comunicazione

Architetture distribuite hardware


1. macchine SISD (Single Instruction Single Data) : flusso di istruzioni unico e flusso di dati unico
2. macchine SIMD (Single Instruction Multiple Data) : flusso di istruzioni unico e flusso di dati multiplo
3. macchine MISD (Multiple Instruction Single Data) : flusso istruzioni multiplo e flusso dati unico
4. macchine MIMD (Multiple Instruction Multiple Data) : flusso istruzioni multiplo e flusso dati
multiplo

Cluster computing: un sistema distribuito costituito da un insieme di nodi ad alte prestazioni interconnessi
tramite una rete locale ad alta velocità. Il sistema è omogeneo, cioè i singoli nodi hanno lo stesso sistema
operativo, hardware molto simile, e sono connessi attraverso la stessa rete

Grid computing: è un sistema distribuito di calcolo altamente decentralizzato composto da un gran numero
di nodi ETEROGENEI disposti a griglia (grid). Nel grid computing le risorse sono distribuite. I problemi sono
suddivisi in piccole unità che vengono disseminate nella rete.

Architettura client server: nell'architettura il server offre dei servizi mentre il client li richiede

Architettura web centric: segue lo schema dell'architettura client server. In questo caso il web diventa un
server che offre servizi

Architettura cooperativa: evoluzione dell'architettura client server, che si basa su entità autonome che
esportano e richiedono servizi secondo il modello di sviluppo della programmazione ad oggetti.
L'incapsulamento infatti abbatte le differenze tra prodotti hardware e software
Architettura a livelli: ideata per la suddivisione del carico di lavoro con l'introduzione degli strumenti
middleware, uno strato software che si colloca sopra il sistema operativo e sotto i programmi applicativi. Si
forma quindi un'architettura a 3 livelli

Architettura completamente distribuita: formata da gruppi di entità paritetiche che collaborano tra loro

http
Il protocollo HTTP (HyperText Transfer Protocol) è un protocollo di comunicazione client-server che viene
utilizzato per il trasferimento di informazioni su internet.

1. Il client utilizza il protocollo http e richiede informazioni al server


2. il server utilizza il protocollo TCP e resta in ascolto per eventuali richieste del client

Il protocollo TCP utilizza due tipi di connessione

1. permanente: la connessione rimane aperta anche se il server ha risposto alle richieste


 incanalata: si possono accumulare più richieste
 non incalanata
2. a tempo

http viene utilizzato per trasmettere delle risorse attraverso:


1. uri, identifica univocamente la risorsa
2. url, identifica univocamente l’indirizzo web della risorsa

Quando un client invia una richiesta HTTP a un server, questa viene suddivisa in tre parti: la linea di
richiesta, l’header (contiene informazioni per identificare il messaggio) e il corpo del messaggio.

La linea di richiesta contiene tre parti principali: il metodo, l'URL e la versione di HTTP.
1. Il metodo indica il tipo di richiesta che il client sta facendo (GET se è contenuta nell’URL, POST se è
contenuta nel body).
2. L'URL indica l'indirizzo della risorsa richiesta.
3. La versione di HTTP indica la versione del protocollo utilizzata.

Una volta che il server riceve la richiesta HTTP, esso invia una risposta al client. La risposta HTTP è composta
da tre parti: la linea di stato, gli header e il corpo del messaggio. La linea di stato indica il successo o il
fallimento della richiesta.

Gli header della risposta contengono informazioni aggiuntive sulla risposta, come ad esempio il tipo di
contenuto della risorsa restituita o le informazioni di autenticazione richieste dal server.

Il corpo del messaggio contiene i dati restituiti dal server al client, come ad esempio il codice HTML di una
pagina web o il contenuto di un file multimediale.

Versioni http

1. 0.9: l’unico metodo usato è il get e la connessione viene chiusa ogni volta che il client risponde ad
una richiesta
2. 1.0 vengono aggiunti post, put (permette di modificare il codice) e head (richiede l’header senza
percorso file)
3. 1.1 sono introdotte le connessioni persistenti
4. 2.0

http è un protocollo
1. standard: indipendente dal tipo di server
2. generico: riguarda tutti i tipi di file
3. stateless: richieste indipendenti: il server non ricorda le richieste precedenti

Applicazioni Web: generalità

Con il termine di applicazione Web viene definito il software sviluppato e utilizzato attraverso tecnologie
Web

e linguaggi specifici.

1. tecnologie client-side e server-side: sono strutture tecnologiche in cui l’elaborazione avviene su


client o server
2. linguaggi di mark-up e linguaggi di programmazione.

Modello Client-server
Il modello client-server è costituito da un insieme di host che gestiscono una (o più) risorse, i server, e da un
insieme di client che richiedono l'accesso ad alcune risorse distribuite gestite dai server. Un host, avendo
più processi da gestire, può svolgere il ruolo sia di client che di server.
Esistono due tipi di comunicazione:

1. unicast: il server comunica con un client alla volta


2. multicast: il server può comunicare con più client contemporaneamente

Nell’architettura client-server ogni host si comporta da server per il livello precedente e da client per quello
successivo

 Presentation layer: è composto dalle procedure dedicate all’acquisizione e alla presentazione dei
dati dell’utente
 Application layer: elabora le informazioni ricevute dal livello di presentazione
 Resource management layer: gestisce le risorse o i servizi necessari per il corretto funzionamento
dell'applicazione

1 tier
Non è un’architettura client-server, e tutti i compiti vengono eseguiti da un solo elaboratore

2 tier
In questa architettura i compiti sono suddividi tra client e server.
Possiamo individuare due sottocategorie di architetture a due livelli:
1. il modello thin-client, in cui il client gestisce l'interfaccia utente e l'elaborazione iniziale delle
richieste dell'utente e il server si occupa della logica dell'applicazione e dell'accesso ai dati.
2. il modello thick-client, in cui il server gestisce i dati e il client è responsabile di presentazione e
logica applicativa

3 tier
Client: front-end (presentation layer)
Middleware: middle tier (application layer)
server: back-end (resource management layer)
I vantaggi dell'introduzione del middleware sono notevoli, soprattutto in termini di prestazioni, della
scalabilità e della sicurezza.

n-tier
Generalizzano il modello client-server 3 tier, in cui vengono introdotti un numero qualsiasi di livelli
intermedi

Funzionamento modello client Server


1. Client invia una richiesta al server
2. Server rimani in attesa e riceve la richiesta
3. Server esegue il servizio
4. Server manda risposta ed eventualmente i dati
5. Client riceve la risposta Ed eventualmente i dati

Un programma client richiede al server dei servizi. Quest'ultimo rimane in ascolto tramite un socket,
composto da numero di porta + indirizzo IP. Client e server per comunicare utilizzando il protocollo TCP/IP.

Esempi di architetture client server


 Telnet è un programma in cui è possibile operare su un computer da remoto, come un computer
locale. Non utilizza crittografia infatti tutte le informazioni possono essere intercettate da terzi.
Un'alternativa sicura è il SSH
 HTTP in cui il browser è un client che richiede pagine a un web server
 FTP usato da un client per trasferire file su un server remoto. La connessione può essere stabilita in
2 modi:
1. Attiva, in cui il client invia al server sulla porta 21 e il server inizia una connessione per inviare o
ricevere dati su una porta diversa da quella dei comandi
2. Passiva in cui client e server stabiliscono entrambi una connessione verso l'altro sulla porta 21
per inviare comandi e allo stesso tempo ricevere dati

Socket
Affinché un processo mittente comunichi con quello destinatario deve identificarlo in modo univoco,
attraverso l’uso dei “Socket” formati da: indirizzo IP (Identificativo Host) + N Porta (Identificativo Servizio).
Un numero di porta non può essere associato a più processi, ma un server può offrire più servizi, ciascuno
su un’apposita porta.

Per potersi connettere il client deve conoscere a priori gli identificatori del server.

L’Applicazione di rete può essere vista da 2 parti:


1. User Agent: interfaccia tra utilizzatore e aspetti comunicativi
2. Implementazione dei Protocolli che permettono di integrarsi alla rete

Creare applicazioni di Rete


Primo passo scelta architettura, da ricordare che ne esistono di 3 tipi:
1. Client - Server
2. Peer - To – Peer
3. Ibride (Client - Server + P2P)

Architettura Client - Server


C’è sempre un Server attivo che rimane in attesa per uno o più client per soddisfare le richieste:

Es: www. Dove più server possiedono le altre pagine che possono essere inviate ai client che ne fanno
richiesta tramite browser.

Server  Indirizzo IP Statico: è sempre lo stesso

Client  Indirizzo IP Dinamico: può cambiare

Il Client comunica solo con il server non con altri client, più client possono invece comunicare con lo stesso
server. Se un server viene consultato da troppi client contemporaneamente, potrebbe non essere in grado
di rispondere a tutti ed entrare in congestione.

Architetture Peer - To - Peer


Ogni computer è contemporaneamente Client e Server ed è in grado di gestire sia richieste che risposte. In
questa architettura non esiste un server centrale.

 P2P Decentralizzato
Ogni Peer può essere sia Client che server, ed è impossibile localizzare una risorsa mediante un IP
Statico. Esso è capace di adattarsi a ogni cambiamento dei nodi senza richiedere l’intervento di
nessuna entità centralizzata, come un server.

 P2P Centralizzato
È presente un server centrale che detiene il controllo sulla rete, mentre i client si occupano di
conservare i dati e permettono il download delle risorse.
P2P Ibrido
Il P2P ibrido è parzialmente centralizzato. Al suo interno sono presenti alcuni peer (supernodi) che hanno
funzione di indicizzazione, mentre altri (leaf peer), sono nodi comuni.

Connessione Tramite Socket


I Socket funzionano con la sequenza di operazioni che sono Open-Read-Write-Close.
1. Open: permette di accedere ad un file
2. Read/write: permette di accedere ai contenuti del file
3. Close: permette di terminare l’utilizzo del file

Per l’utilizzo dei socket è necessario però aggiungere alla struttura una serie di parametri: gli indirizzi, il
protocollo e il numero di porta, e il tipo del protocollo.

Ogni Sistema Operativo mette a disposizione le Socket API che ci permettono di utilizzare diverse funzioni
tra cui:
 Server Socket () / Socket (): crea un nuovo socket
 Listen: aspetta i messaggi in ingresso
 Close: termina l’utilizzo di un socket
 Send () / Write (): trasmette i dati su una connessione attiva

Esistono varie famiglie di Socket dove ognuna riunisce i Socket che utilizzano gli stessi Protocolli:

Tra le principali famiglie abbiamo:


 Internet Socket  Trasferimento di dati tra macchine connesse tramite Internet o LAN. (Indirizzo =
IP + N^Porta)
 Unix Domain Socket  Trasferimento di dati tra processi sulla stessa macchina UNIX (Path Name)

I Socket si dividono principalmente in 3 modalità diverse:


• Stream Socket (Livello Applicativo)
• Datagram Socket (Livello Applicativo)
• Raw Socket (Sviluppo Procolli)

Stream Socket
Uno stream socket, anche noto come socket di tipo "SOCK_STREAM", è un tipo di socket orientato alla
connessione. Utilizza il protocollo di trasporto TCP (Transmission Control Protocol) per garantire la
consegna affidabile dei dati. Con un socket di stream, i dati vengono inviati in un flusso continuo di byte
senza limiti di dimensione del messaggio. Il socket di stream gestisce l'affidabilità e l'ordine dei dati in modo
trasparente per le applicazioni. Ciò significa che i dati inviati con un socket di stream verranno consegnati
all'altro lato nello stesso ordine in cui sono stati inviati, senza perdita di dati e con garanzia di consegna.
Datagram Socket
Un datagram socket, anche noto come socket di tipo "SOCK_DGRAM", è un tipo di socket senza
connessione. Utilizza il protocollo di trasporto UDP (User Datagram Protocol) che è un protocollo senza
connessione e non affidabile. Con un socket di datagram, i dati vengono inviati sotto forma di pacchetti
indipendenti chiamati datagrammi. I datagrammi possono essere inviati in qualsiasi ordine e non viene
garantita la consegna o l'ordine dei pacchetti. Ciò significa che i dati inviati con un socket di datagram
potrebbero essere persi, duplicati o consegnati in ordine diverso rispetto all'invio.

Trasmissione Unicast & Multicast

Unicast è un metodo di indirizzamento in cui un mittente invia dati a un singolo destinatario. In una
comunicazione unicast, il mittente e il destinatario stabiliscono una connessione diretta one-to-one,
solitamente tramite il protocollo TCP. Il mittente invia i dati al destinatario specifico utilizzando l'indirizzo IP
unico del destinatario come destinazione.

Il multicast è un metodo di indirizzamento in cui un mittente invia dati a un gruppo di destinatari,


solitamente utilizzando il protocollo UDP. In una comunicazione multicast, il mittente invia i dati a un
indirizzo IP di multicast specifico, che rappresenta un gruppo di destinatari che si sono registrati per
ricevere i dati multicast.

I Multicast hanno indirizzi IP di classe o che possono essere:


 Permanenti (Quelli assegnati dallo Iana)
 Temporanei (Valgono solo in quel momento)

Esempi di Multicast sono per esempio: Video Conferenze, Giochi con Multiplayer e anche tabelle del DNS.

Il protocollo più utilizzato per implementare un sistema multicast è l’IGMP.

Le API Multicast devono contenere però delle primitive per:


 Unirsi a un gruppo Multicast (join)
 Lasciare un gruppo Multicast (leave)
 Spedire a un gruppo Messaggi
 Ricevere da un gruppo Messaggi

La gestione die gruppi è dinamica:


 Un host può unirsi o abbandonare un gruppo in qualsiasi momento
 Un host può appartenere a più gruppi
 I membri del gruppo possono appartenere a reti diverse
 Non è necessario far parte di un gruppo per poter inviare ad esso dei messaggi

Un’estremizzazione del Multicast è il Brodcast in quanto è One-To -All.

CAPITOLO 3
PHP
Le pagine presenti sul web possono essere statiche o dinamiche

1. Statiche: presentano gli stessi contenuti a tutti gli utenti che vi accedono
2. Dinamiche: possono mostrare diversi contenuti in relazione alle azioni compiute dagli utenti stessi
(es. login)

PHP è un linguaggio di scripting open-source e inoltre è “general-purpose”(utilizzato in ogni dominio), ma


viene principalmente usato per creare siti web dinamici. Viene interpretato da zend engine che è un
motore di esecuzione lato server, PHP è quindi un linguaggio di scriptiing server side. Il server elabora il
codice e lo restituisce al client in PHP in modo che esso possa leggerlo.

La sintassi prevede il tag di apertura <? PHP e di chiusura? >. Le pagine PHP contengono parti di codice
HTML e questa caratteristica prende il nome di HTML enbedded. Quello che si trova fuori dai tag di
apertura rimane inalterato, quello che si trova all’interno viene interpretato da zend e i risultati in formato
HTML verranno inviati al browser

È un linguaggio interpretato che viene eseguito lato server, il che significa che il codice PHP viene
elaborato sul server prima di inviare i risultati al client.

Sintassi: PHP utilizza una sintassi simile a molti altri linguaggi di programmazione, come C, Java e Perl. I
comandi PHP sono incorporati all'interno dell'HTML, ma vengono delimitati da tag speciali <?php e ?>.

Variabili: In PHP, le variabili vengono create dinamicamente senza la necessità di dichiarare il tipo. I tipi di
dati supportati includono numeri interi, floating-point, stringhe, booleani, array, oggetti e risorse.

Operatori: PHP supporta una vasta gamma di operatori, tra cui operatori aritmetici (+, -, *, /), operatori di
confronto (==, !=, <, >), operatori logici (&&, ||) e altri.

Strutture di controllo: PHP offre una serie di strutture di controllo, come istruzioni if-else, cicli for, cicli
while e cicli foreach per iterare sugli array. È possibile utilizzare anche costrutti come switch-case e try-
catch per gestire eccezioni.

Funzioni: È possibile definire le proprie funzioni in PHP e riutilizzarle all'interno del codice. PHP offre anche
numerose funzioni predefinite per eseguire operazioni comuni, come la manipolazione delle stringhe,
l'elaborazione delle date, la gestione dei file e molto altro ancora.

Gestione dei dati: PHP supporta una varietà di database, tra cui MySQL, PostgreSQL, Oracle e molti altri. Ci
sono estensioni PHP disponibili per connettersi ai diversi database e manipolare i dati in modo sicuro.

Gestione delle sessioni e dei cookie: PHP offre funzionalità incorporate per la gestione delle sessioni
utente e dei cookie. Ciò consente di mantenere lo stato dell'utente tra le richieste e di memorizzare
informazioni sul client.

Programmazione orientata agli oggetti (OOP): PHP supporta la programmazione orientata agli oggetti,
consentendo agli sviluppatori di definire classi, creare oggetti e utilizzare concetti come l'ereditarietà,
l'incapsulamento e il polimorfismo.
1. Esistono numerose librerie e framework (è un'infrastruttura software che fornisce strumenti, librerie e
convenzioni di programmazione per semplificare lo sviluppo di applicazioni.)in PHP i più popolari che
semplificano lo sviluppo di applicazioni web complesse sono Laravel, Symfony, CodeIgniter e Zend
Framework.
2. Integrazione con HTML: PHP può essere facilmente integrato all'interno del codice HTML, consentendo di
creare pagine web dinamiche in cui il contenuto viene generato in modo dinamico in base alle variabili e ai
dati.

CREAZIONE CLASSE:

Una classe rappresenta un modello o una struttura che definisce le caratteristiche e i comportamenti di
un oggetto. Un oggetto è un'istanza di una classe e può avere delle proprietà, che rappresentano le
caratteristiche dell'oggetto, e dei metodi, che rappresentano i comportamenti o le azioni che l'oggetto può
compiere.

Class Carrello{

Var $articoli=array();

var $quantità=array();

Nel primo esempio, la classe "Carrello" rappresenta un modello di un carrello di acquisti. Ha due proprietà:
"$articoli" e "$quantità", entrambe dichiarate come array. Queste proprietà contengono rispettivamente
l'elenco degli articoli presenti nel carrello e la quantità di ciascun articolo.

Function aggiungi_carrello($articoli,$quantità){}

Nel secondo esempio, la funzione "aggiungi_carrello" è esterna alla classe "Carrello". Le funzioni esterne
possono essere utilizzate per effettuare operazioni specifiche e manipolare gli oggetti di una classe. Nel
caso specifico, la funzione "aggiungi_carrello" prende due parametri: "$articoli" e "$quantità". Questa
funzione potrebbe essere utilizzata per aggiungere nuovi articoli al carrello specificato.

Nel contesto di una classe, è comune utilizzare il riferimento "$this" per accedere alle proprietà e ai metodi
della stessa classe. Ad esempio, se desideri accedere alla proprietà "$articoli" all'interno di un metodo della
classe "Carrello", puoi utilizzare "$this->articoli". La notazione "->" indica l'appartenenza del metodo alla
classe.

class Carrello {

var $articoli = array();

function aggiungi_articolo($articolo, $quantità) {

// Aggiungi l'articolo al carrello

$this->articoli[] = $articolo;
$this->quantità[] = $quantità;

! Nel metodo "aggiungi_articolo" sopra, "$this->articoli[]" e "$this->quantità[]" consentono di aggiungere


l'articolo e la quantità specificati alle proprietà dell'oggetto "Carrello".

COSTRUTTORI DA PHP4 A PHP7

In PHP, il costruttore è un metodo speciale di una classe che viene chiamato automaticamente quando
viene creata un'istanza di quella classe. Il nome del costruttore è lo stesso della classe stessa.

● Nelle prime versioni di PHP, come PHP4, i costruttori venivano definiti con il nome della classe. Ad
esempio, se avevi una classe chiamata "Carrello", il suo costruttore avrebbe avuto il nome
"Carrello". Ecco un esempio:

class Carrello {

function Carrello() {

// Codice del costruttore

● Tuttavia, a partire da PHP5, è stata introdotta una nuova sintassi per i costruttori utilizzando il
metodo speciale "__construct". Questa sintassi è diventata la forma consigliata per definire i
costruttori. Ecco un esempio:

class Carrello {

function __construct() {

// Codice del costruttore

La sintassi "__construct" ha sostituito il vecchio stile di definizione del costruttore con il nome della classe.
È importante notare che se viene definito sia il costruttore nel vecchio stile che il costruttore utilizzando
"__construct", verrà utilizzato solo il costruttore definito con "__construct"

● Nella versione PHP7, viene utilizzata la parola chiave "public" per specificare che il costruttore è
accessibile pubblicamente. Tuttavia, è possibile utilizzare anche le parole chiave "private" o
"protected" per definire un costruttore con diversi livelli di visibilità a seconda delle esigenze.
ESEMPIO:

class Carrello {

public function __construct() {

// Codice del costruttore

Per quanto riguarda l'ereditarietà dei costruttori, in PHP è possibile definire un solo costruttore per una
classe. Ciò significa che una classe figlia eredita il costruttore della classe genitore. Se desideri aggiungere
funzionalità al costruttore della classe figlia, puoi utilizzare la parola chiave "parent" per richiamare il
costruttore della classe genitore. Ad esempio:

class ClasseGenitore {
function __construct() {
// Codice del costruttore della classe genitore
}
}

class ClasseFiglia extends ClasseGenitore {


function __construct() {
parent::__construct(); // Richiamo del costruttore della classe genitore
// Altre operazioni specifiche della classe figlia
}
}
}In questo esempio, la classe "ClasseFiglia" eredita il costruttore della classe "ClasseGenitore" utilizzando la
parola chiave "extends". Nel costruttore della classe figlia, viene richiamato il costruttore della classe
genitore utilizzando "parent::__construct()".

AJAX
Ajax (Asynchronous JavaScript and XML) è un insieme di tecnologie che consente di creare applicazioni
web interattive e dinamiche. L'obiettivo principale di Ajax è quello di migliorare l'esperienza dell'utente
consentendo di aggiornare parti specifiche di una pagina web senza doverla ricaricare completamente.

Le tecnologie coinvolte in Ajax includono:


1. JavaScript
2. HTML
3. CSS
4. DOM (Document Object Model)
5. XMLHTTPRequest, che consente al browser e al server di comunicare senza che la pagina venga
ricaricata
La richiesta XML è asincrona, il che significa che le richieste al server possono essere inviate e gestite in
background senza interrompere l'interazione dell'utente con la pagina. Tuttavia, negli ultimi anni, è
diventato più comune utilizzare il formato JSON (JavaScript Object Notation) per lo scambio di dati, poiché
è più leggero e facile da manipolare con JavaScript.

Una delle sfide di Ajax è la compatibilità tra i diversi browser. In passato, alcuni browser non supportavano
completamente le funzionalità di Ajax, richiedendo l'installazione di add-on o l'implementazione di
soluzioni alternative. Tuttavia, negli ultimi anni, il supporto per Ajax è diventato molto più diffuso e
praticamente tutti i browser moderni lo supportano senza bisogno di ulteriori aggiunte.

Un'altra cosa importante da notare è che Ajax non si limita solo a chiamate al server per ottenere dati. È
possibile utilizzare Ajax per inviare dati al server, ad esempio attraverso richieste HTTP POST, consentendo
all'utente di interagire con un modulo e inviare i dati al server senza ricaricare la pagina.

Inoltre, Ajax può essere utilizzato in combinazione con diverse tecnologie server-side, come PHP, per
elaborare le richieste del client e restituire le risposte appropriate in formato JSON o HTML.

Complessivamente, Ajax ha rivoluzionato il modo in cui le applicazioni web interagiscono con gli utenti,
consentendo un'esperienza più fluida e dinamica

FUNZIONAMENTO: Utilizza diverse tecnologie: HTML, CSS, DOM, XMLHTTPREQUEST.

La classe usata è XMLHTTPREQUEST, ma non va bene per tutti i browser. Le richieste vengono formulate
con il protocollo HTTP e la forma di variabile può essere di tipo GET e POST.

Siccome XML permette di effettuare richieste multiple indipendenti, questo tende a creare della latenza,
ossia il tempo di attesa, che rappresenta uno dei problemi di questa tecnologia.

COME FUNZIONA LA RICHIESTA?


● Richiesta aperta, ma i dati non vengono inviati (OPENED)
● Viene inviata la richiesta con il metodo SEND
● I dati vengono ricevuti e letti (LOADING)
● Operazione completa (DONE)

Esistono vari metodi principali:


● Open()
● Send()
● getResponseHeader()
● setRequestHeader()
Mentre i codici di stato principali sono:
● OnReadyStateChange: (gestore evento)
● ReadyState: (Stato corrente)
● Status: (200 -ok found 404 - not found)
Una delle prime applicazioni Ajax è stata Google Suggest.
CAPITOLO 4

SERVLET
I servlet sono componenti del lato server utilizzati per sviluppare applicazioni web dinamiche in Java. Le
servlet sono installate (dall'inglese "deployed") all'interno di un Servlet Container, ossia un particolare
ambiente di lavoro, detto container, che si occuperà di tutti i loro aspetti, gestendone l'intero ciclo di vita e
svincolando così il programmatore dalla loro gestione. I programmi che implementano le specifiche dei
servlet possono girare all'interno di qualunque Servlet Container e non sono vincolati ad un particolare
server. Lo standard delle servlet rientra all'interno di un vasto insieme di standard detto Java EE. Il package
che contiene classi e interfacce di riferimento è javax.servlet, se si utilizza sul web si usa invece
javax.servlet.http.HttpServlet.

Nella versione più recente, tutti i pacchetti javax.servlet sono stati rinominati in jakarta.servlet).

Ciclo di vita di una servlet

1. Init() viene chiamato durante l'istanziazione. Qui, la servlet istanza tutte le risorse, incluse le
variabili globali, che verranno poi utilizzate per gestire le richieste.
2. Service() viene usato subito dopo la chiamata del metodo init(). È incaricato di gestire le richieste
da parte del client.
3. Destroy() è utilizzato per chiudere la servlet. In prospettiva di un prossimo caricamento della
servlet, vengono effettuati salvataggi di informazioni.

Vediamo, come lavora una HttpServlet:


1. Un client invia una richiesta (request) per una servlet ad un web application server.
 Se si tratta della prima richiesta, il server istanzia e carica la servlet in questione avviando
un thread che gestisca la comunicazione con la servlet stessa.
 Nel caso in cui la Servlet sia già stata caricata in precedenza (cioè un altro client abbia
effettuato una richiesta antecedente quella attuale) allora verrà creato un ulteriore thread
che sarà associato al nuovo client, senza la necessità di ricaricare ancora la Servlet.
2. Il server invia alla servlet la richiesta pervenutagli dal client.
3. La servlet costruisce ed imposta la risposta (response) e la inoltra al server.
4. Il server invia la risposta al client.

Le richieste inviate dal client al server sono rappresentate dall’oggetto HttpServletRequest, con cui la
Servlet ottiene i parametri inviati dal client.

Le risposte create dalla Servlet per il client sono invece identificate dall’oggetto HttpServletResponse.

I vantaggi dell'utilizzo di una Servlet sono:


1. Efficienza: le servlet vengono istanziate e caricate solo alla prima invocazione. Tutte le successive
chiamate da parte di nuovi client vengono gestite creando dei nuovi thread.
2. Portabilità: Grazie alla tecnologia Java, le servlet possono essere facilmente programmate e
spostate da una piattaforma ad un'altra senza particolari problemi.
3. Persistenza: Dopo il caricamento, una servlet rimane in memoria mantenendo intatte determinate
informazioni anche alle successive richieste, come ad esempio la connessione ad un database.
4. Gestione delle sessioni: il protocollo HTTP è un protocollo stateless, quindi non in grado di ricordare
le precedenti richieste provenienti da uno stesso client. Le servlet sono in grado di superare questa
limitazione.

Invece, gli svantaggi riguardano:


1. La complessità del codice HTML: infatti è complicato dover includere le servlet e quindi il linguaggio
Java dentro un file HTML;
2. Le servlet uniscono la logica dell’applicazione con la presentazione;
3. Ogni modifica del codice richiede una ricompilazione esplicita, con il riavvio dell’applicazione o del
server.

I metodi più comuni utilizzati per le Servlet sono:


• doGet: gestisce le richieste HTTP di tipo GET. Viene invocato da service().
• doPost: gestisce le richieste HTTP di tipo POST. Viene invocato da service().
• doPut: viene invocato attraverso il metodo service() per gestire una richiesta HTTP di tipo PUT.
Tipicamente, una richiesta simile consente ad un client di inserire un file su un server.
• doDelete: viene invocato attraverso il metodo service() per consentire ad una Servlet di gestire una
richiesta di tipo HTTP DELETE, utilizzata per rimuovere un file dal server.
• getServletInfo: è utilizzato per ricavare una stringa contenente informazioni di utilità sulla Servlet, come il
nome di essa. La versione di default restituisce una stringa vuota.
•getOutputStream(): per inviare dati in forma binaria.
•getWriter(): per l’invio attraverso il canale ‘System.out’.
• request.getMethod(): restituisce il metodo HTTP utilizzato, solitamente GET o POST.
• request.getLocale(): restituisce il Locale predefinito dal client, visibile nel campo Accept-Language.
• request.getCharacterEncoding(): viene restituito il valore di codifica dei caratteri.
• request.getContentType(): restituisce il MIME type utilizzato.
• getInputStream() e getReader(): utilizzati per creare stream di input e quindi ricevere dati da una richiesta
http.
•getRequestURI(): restituisce l’URI richiesto.
• getRequestURL(): ritorna la sezione URL che precede il carattere ? (separatore della string di query).
• getQueryString(): ritorna la sezione URL dopo il carattere ?, ossia la string di query.

CAPITOLO 5
JAVA SERVER PAGES
Le Java Server Pages (JSP) sono una tecnologia utilizzata nello sviluppo web per la creazione di pagine
dinamiche. Esse permettono di combinare codice Java con il markup HTML per generare pagine web
dinamiche.
Le JSP sono simili alle pagine HTML tradizionali, ma consentono l'inserimento di codice Java all'interno del
documento, racchiuse all’interno del tag <%...%>. Questo codice viene eseguito lato server, consentendo la
generazione dinamica di contenuti.

A differenza delle servlet, la compilazione in JSP avviene in automatico, senza la necessità di compilare il
codice java e collocare il file .class nella directory classes.

In breve, la differenza principale tra le due è che le servlet separano il codice Java dalla presentazione
HTML, mentre le JSP permettono di incorporare il codice Java all'interno delle pagine stesse.

In molti casi, le JSP vengono utilizzate in combinazione con le servlet per ottenere il massimo delle
funzionalità.

Vantaggi delle JSP:

1. Facilità di utilizzo: le JSP utilizzano il markup HTML, che è familiare a molti sviluppatori web, e
consentono di incorporare il codice Java direttamente nella pagina.
2. Riutilizzabilità: il codice Java può essere organizzato in componenti riutilizzabili, come classi e
librerie, che possono essere utilizzate in più pagine JSP.
3. Separazione del ruolo: le JSP permettono di separare il markup HTML dalla logica di business,
facilitando il lavoro di sviluppatori e progettisti.
4. Scalabilità: le JSP possono gestire un grande volume di richieste concorrenti e possono essere
distribuite su più server per garantire l'alta disponibilità dell'applicazione.
5. Facilità di scrittura: per il programmatore risulta essere molto più agevole scrivere codice in questa
maniera poiché effettua un ragionamento analogo alla stesura di codice PHP. Il codice verrà poi
automaticamente convertito in servlet e visualizzato senza ulteriori interventi necessari .

Svantaggi delle JSP:

1. Complessità: l'integrazione del codice Java all'interno del markup HTML può portare a una
complessità maggiore rispetto a una pagina HTML statica.
2. Mancanza di separazione: se non viene adottata una corretta separazione dei ruoli, il codice Java
può essere mescolato con il markup HTML, rendendo il codice più difficile da leggere e mantenere.

SCRIPTING-ORIENTED TAG
1. Tag di scriptlet <% %>: I tag di scriptlet consentono di inserire codice Java all'interno di una JSP. Il
codice inserito all'interno di questi tag viene eseguito quando la JSP viene elaborata dal server
2. Tag di espressione <%= %>: I tag di espressione consentono di visualizzare il risultato di
un'espressione Java all'interno del markup HTML generato. Il risultato dell'espressione viene
convertito in una stringa e visualizzato nella pagina.
3. Tag di dichiarazione <%! %>: I tag di dichiarazione vengono utilizzati per dichiarare variabili, metodi
o altre costruzioni Java che saranno disponibili in tutta la JSP. Questi elementi vengono solitamente
inseriti nella sezione di definizione della JSP.
4. Tag di direttiva <%@ %>: I tag di direttiva forniscono istruzioni al container JSP, specificando
configurazioni e importazioni. Ad esempio, la direttiva page viene utilizzata per specificare attributi
come il tipo di contenuto, le direttive di inclusione e altre configurazioni globali.
5. Template text: tutte le parti di testo che non sono definite come elementi JSP sono copiate nella
pagina risultante.
6. Tag di azione: istruzioni specifiche che controllano il comportamento delle JSP.

CAPITOLO 6

Cos’è il Web Service?


Il web service rappresenta la disponibilità di un determinato servizio sul web.

Definizione di web service: piattaforma indipendente di comunicazione che permette a diverse


applicazioni di dialogare tra loro attraverso uno standard di comunicazione definito.

Nella comunicazione tra client e server è necessario avere;


● Un medium: strumento di comunicazione (Es. Http)

● Un formato: linguaggio interpretabile da diverse applicazioni (Es. XML o JSON)

La tecnologia Web Service tiene i dettagli implementativi nascosti da un’interfaccia in XML. Il sistema quindi
è utilizzato per far comunicare diversi elaboratori presenti in rete. Per fare ciò si associa all’applicazione
un’interfaccia software che permette di esporre il servizio offerto dal server, in questo modo il client che
desidera usufruire del servizio può collegarsi tramite l’interfaccia software.

Forma più semplice di un Web service:


Framework che fa comunicare due computer tra di loro utilizzando:
● Web Service SOAP (medium Http (POST) e formato XML)

● Web Service REST (medium Http (POST,GET,PUT,DELETE) e formato XML, JSON, Text)

Durante la creazione di un Web Service il programmatore si deve preoccupare di:


● Logica di funzionamento: ciò che il servizio deve offrire e la sua completezza

● Web container: dove verrà installato il servizio (Apache, tomcat...)

Nella definizione di un Web Service si usa come protocollo di trasporto l’HTTP mentre per la richiesta e la
risposta si utilizza XML.

NUOVO MODELLO BASATO SU XML: Architettura SOA


La Service Oriented Architecture (SOA) fornisce una piattaforma per costruire servizi applicativi che ha
queste caratteristiche:
● Loosely coupled: L’utente non deve preoccuparsi del servizio di comunicazione da usare, ci deve
pensare l’infrastruttura
● Location transparent: l’infrastruttura deve nascondere più dettagli sulle tecnologie al client

● Protocol indipendent: deve essere possibile aggiornare in qualsiasi momento le implementazioni senza
modificare le interfacce

Gli attori del SOA sono tre


1. Service Customer che ha le stesse funzioni del client
2. Server registry fornisce al customer il servizio migliore per la richiesta e il suo percorso
3. Service provider rende disponibile il servizio.

Per la creazione di Web Service esistono due approcci:

1. Simple Object Access protocol (SOAP): Per scambio di messaggi per l’invocazione di servizi remoti
2. Principi architetturali del web che si concentra sulla descrizione di risorse e sul modo di individuarle
nel web

REST e SOAP sono due diversi approcci alla trasmissione dei dati online. Nello specifico, entrambi
definiscono come creare interfacce di programmazione delle applicazioni (API) che consentono la
comunicazione dei dati tra applicazioni web.

Back-end e front-end (Divisione tra data base e logica, e parte grafica)

Il rest è il nuovo soap

1. Soap utilizza xml


2. Rest usa json

PROTOCOLLO SOAP
Protocollo per scambiare messaggi relativi al Web Service. È basato su XML per lo scambio di informazioni
su un ambiente distribuito. SOAP permette di eseguire chiamate a metodi di oggetti remoti, cioè oggetti
che risiedono su computer o dispositivi diversi all'interno di una rete. Questo protocollo consente di inviare
richieste e ricevere risposte da oggetti distribuiti su nodi remoti, consentendo la comunicazione tra
applicazioni software distribuite su reti eterogenee.

Il ciclo di vita di un Web Service SOAP si può riassumere in fasi:


1) Il server crea il servizio la cui descrizione è affidata ad un documento WSDL(Web Service Descriptor
Language), mentre la pubblicazione del servizio viene affidata ad un registro detto UDDI.
2) Il client interroga il registro UDDI
3) Se la ricerca ha esito positivo, il client chiede al registro il documento WSDL per individuare gli indirizzi
URI e i modi per interrogarlo.
4) Il client a partire dal WSDL crea uno strato di software che interagisce con lo strato software del
fornitore del servizio.
PILA DEL LINGUAGGIO SOAP (dall’alto verso il basso):
1. UDDI: registro contenente informazioni utili per la scoperta e l’accesso ai Web Service
2. WSDL: Descrive l’interfaccia esterna di un Web Service affinchè uno sviluppatore possa creare un client
capace di invocarlo
3. SOAP: Protocollo per lo scambio dei messaggi basato su XML che definisce i meccanismi, formato e
input e output
4. XML: è un formato per lo scambio dei dati nello strato di trasporto.

PROTOCOLLO REST
È un approccio alternativo al SOAP, a differenza sua è molto più leggero perché si basa sulla corrispondenza
diretta tra:
● oggetti remoti da leggere/scrivere individuati mediante Uniform Resource Identifiers(URI) (i comuni
link);
● comandi http da applicare agli oggetti(GET,PUT,POST;DELETE).

ARCHITETTURA REST

L’approccio REST i principi che rendono il web adatto a realizzare Web Service si possono riassumere in 5
punti:

1. identificazione delle risorse con l’URI in forma di directory.


2. Utilizzo esplicito dei metodi http;
3. Risorse autodescrittive;
4. Collegamenti tra risorse con interazioni stateless;
5. Comunicazione senza stato in XML,JSONo entrambi.

II formato utilizzato per mandare e ricevere informazioni con un sistema REST è il JSON; inoltre nell'header
della richiesta si possono aggiungere oggetti come token di autenticazione ed eventuali dati che devono
essere inviati in richieste PUT o POST,possono essere aggiunti come parametri della richiesta o nel body
della stessa. Una sessione attiva verrà eliminata dopo un certo lasso di tempo, forzando l'utente a ricreare
la sessione di tanto in tanto: tale autenticazione non va effettuata a ogni richiesta dato che l'utente può
fornire l'id di sessione nell'header e, quindi, mantenerla aperta.

DIFFERENZE REST-SOAP

1. Un WS REST è incentrato sulla risorsa, mentre WS SOAP è incentrato sul servizio;


2. Un WS REST gestisce risorse accessibili attraverso chiamate http, mentre un WS SOAP espone dei
metodi accessibili in remoto da parte di un client;
3. In REST si ha una riduzione della parte di configurazione e nei parametri di controllo.

I metodi HTTP standard vengono utilizzati per definire l'azione da


eseguire sulle risorse. Alcuni esempi di metodi comuni sono:

● GET: utilizzato per ottenere una rappresentazione della risorsa.

● POST: utilizzato per creare una nuova risorsa.

● PUT: utilizzato per aggiornare o sostituire una risorsa esistente.

● DELETE: utilizzato per eliminare una risorsa.

API
Le API (Application Programming Interface) sono un insieme di strumenti, regole e protocolli che
consentono a diverse applicazioni software di comunicare tra loro. Le API fungono da intermediari
consentendo a diverse applicazioni o servizi di scambiare informazioni e sfruttare le funzionalità offerte da
ciascuna parte.

Le API Maps, in particolare, si riferiscono alle interfacce di programmazione delle applicazioni che
consentono l'integrazione di funzionalità di mappe e geolocalizzazione all'interno di altre applicazioni o
servizi. Queste API forniscono agli sviluppatori un modo per accedere e utilizzare le funzionalità di
mappatura, come visualizzare mappe interattive, posizionare punti di interesse, calcolare percorsi o
indicazioni stradali e altro ancora.
Le API Maps sono solitamente fornite da provider di mappe come Google Maps, Bing Maps o Mapbox.
Queste API sono composte da un insieme di endpoint, metodi e parametri che gli sviluppatori possono
utilizzare per inviare richieste e ottenere risposte relative alle informazioni sulla mappa. Gli sviluppatori
possono integrare queste API all'interno delle loro applicazioni o servizi, consentendo agli utenti di
interagire con le mappe e le funzionalità di geolocalizzazione.

Le API Maps sono spesso basate su protocolli standard come HTTP e utilizzano formati dati come JSON
(JavaScript Object Notation) per la comunicazione tra le applicazioni client e i server delle API. I dettagli
specifici delle API Maps possono variare a seconda del provider scelto, ma di solito offrono una
documentazione dettagliata che descrive come utilizzare le varie funzionalità e forniscono esempi di codice
per facilitare l'integrazione.
SOAP E REST FATTO DA ME

REST è l'acronimo di Representational State Transfer (trasferimento di stato


rappresentativo) ed è una popolare API per i servizi web. Le API REST
funzionano con il protocollo HTTP e utilizzano formati di dati JSON per
aumentare la compatibilità con i browser.

SOAP è l'acronimo di Simple Object Access Protocol. SOAP L'API consente alle
applicazioni di comunicare messaggi anche se sono scritte in linguaggi di
programmazione diversi. È un protocollo più complesso in termini di sicurezza e
di comunicazione dei dati. Poiché questo protocollo si occupa di messaggi,
l'obiettivo principale è quello di impedire l'accesso non autorizzato attraverso la
sicurezza di WS.
Il Simple Object Access Protocol (SOAP) è un protocollo per l’implementazione di servizi
Web. Presenta una struttura ed uno schema ben preciso e si basa sull’XML, attraverso cui
avviene lo scambio dei dati e la gestione delle risposte.

Potrebbero piacerti anche