








Studia grazie alle numerose risorse presenti su Docsity
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Prepara i tuoi esami
Studia grazie alle numerose risorse presenti su Docsity
Prepara i tuoi esami con i documenti condivisi da studenti come te su Docsity
Trova i documenti specifici per gli esami della tua università
Preparati con lezioni e prove svolte basate sui programmi universitari!
Rispondi a reali domande d’esame e scopri la tua preparazione
Riassumi i tuoi documenti, fagli domande, convertili in quiz e mappe concettuali
Studia con prove svolte, tesine e consigli utili
Togliti ogni dubbio leggendo le risposte alle domande fatte da altri studenti come te
Esplora i documenti più scaricati per gli argomenti di studio più popolari
Ottieni i punti per scaricare
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Il programma effettuato contiene: SISTEMA DISTRIBUITO, HTTP, APPLICAZIONE DI RETE, ARCHITETTURE PER LE APPLICAZIONI DI RETE, SERVIZI OFFERTI DALLO STRATO DI TRASPORTO ALLE APP DI RETE ,FAMIGLIE SOCKET, TIPI DI SOCKET, TRASMISSIONE UNICAST E MULTICAST, GESTIONE DEI GRUPPI , APPLICAZIONI LATO SERVER(PROGRAMMAZIONE SERVER-SIDE), JAVA SERVLET, DEPLOYMENT DI UN’APPLICAZIONE WEB, DEPLOYMENT DESCRIPTOR , Linguaggio XML
Tipologia: Appunti
1 / 14
Questa pagina non è visibile nell’anteprima
Non perderti parti importanti!









Composto da una singola macchina dove al suo interno ci sono dati e applicazioni che girano su una singola CPU che è un componente autonomo che viene condiviso tra vari utenti (le decisioni vengono prese da una singola autorità centrale, che può distribuire compiti e risorse secondo le sue priorità e obiettivi) è composto da una singola macchina dove all’interno ha dati e applicazioni che girano soltanto sulla singola CPU della macchina che viene condiviso dai vari utenti e dai vari processi che sono in elaborazione
è un insieme di macchine connesse tra loro, ognuna di esse è indipendente e connesse tramite la rete. In un sistema decentralizzato, i nodi lavorano insieme in modo autonomo per raggiungere un obiettivo comune senza bisogno di un'autorità centrale che li coordini. Si ha questo tipo di sistema quando si verificano 2 condizioni:
Ai Guasti: Nasconde il guasto e ripristino di una risorsa Alla Migrazione: Nasconde lo spostamento di una risorsa su un processo Alle Prestazioni : Nasconde all'utente finale le operazioni di riconfigurazione del sistema Di Scalabilità: Espande il sistema senza interrompere il servizio ECONOMICITÀ: I sistemi distribuiti offrono un rapporto qualità prezzo migliore rispetto ai servizi centralizzati APERTURA: Un sistema distribuito favorisce un'apertura verso componenti hardware e/o software a fornitori diversi per avere: Inter-operabilità: Implementazioni diverse sul pc di diverso tipo in modo da creare un unico sistema Portabilità: Una operazione per un sistema operativo può funzionare su un altro con la stessa interfaccia Ampliabilità: Ampliare il sistema tramite l'aggiunta di nuovi componenti hardware o software CONNETTIVITÀ E COLLABORAZIONE: La capacità del sistema distribuito di condividere risorse hardware e software in modo da arricchire ogni utilizzatore PRESTAZIONI E SCALABILITÀ: L'aggiunta di nuovi sensori e risorse nel sistema distribuito determina l'aumento delle prestazioni per sostenere le richieste TOLLERANZA AI GUASTI: Se in un sistema distribuito c'è un componente guasto questo non deve influenzare il corretto funzionamento del sistema SVANTAGGI DEI SITEMI DISTRIBUITI PRODUZIONE DI SOFTWARE: I programmatori si devono sempre tenere aggiornati sui linguaggi di programmazione COMPLESSITÀ : Aumenta sia sul punto di vista hardware e software SICUREZZA: Con lo sviluppo delle reti Internet hanno dovuto sviluppare sistemi di sicurezza per la prevenzione e garantire la privacy delle persone COMUNICAZIONE: Con lo sviluppo del sistema distribuiti il numero degli utenti che lo utilizzano è aumentato, viene richiesta più banda di trasferimento di dati ARCHITETTURE DISTRIBUITE HARDWARE Nel corso degli anni sono state fatte varie definizioni di architetture di sistemi distribuiti, quella di Flynn è la più importante dove si ricavano più combinazioni tra flusso di istruzioni e flusso di dati. SISD (Single instruction single data): è una combinazione a monoprocessore, che esegue un'istruzione alla volta in modo sequenziale su un unico flusso dati SIMD (Single instruction multiple data): è una combinazione multi-processore, che eseguono un singolo flusso di istruzioni su più flussi dati. Usata nelle macchine per il calcolo matriciale e vettoriale MISD (multiple instruction single data): è una combinazione multi-processore vengono eseguite più istruzioni su uno stesso flusso dati MIMD (multiple instruction multiple data): Ogni processore legge le proprie istruzioni ed opera su propri dati. Questa traspirazione si differenzia su come viene gestita la memoria: Memoria fisica condivisa: Architettura che ha in comune un unico spazio di indirizzamento fra i processori, ciò comporta uno scambio di dati fra processori molto più veloce e semplice, ma può portare a problemi di accesso -> integrare sistemi di sincronizzazione Memoria privata: Ogni processore possiede una propria area di memoria privata e della comunicazione tra processi avviene tramite scambio di messaggi SISTEMI DISTRIBUITI PERVASIVI Sono dispositivi che hanno alla base una connessione wireless come i sistemi domestici e reti di sensori. Devono avere alcuni requisiti: Cambi di contesto: Può variare in qualsiasi momento l'ambiente. Composizione ad-hoc: un nodo può essere usato in maniera molto diversa da diversi utenti
---> Usa modello Client-Server ● Client -> Browser Web -> richiede e riceve risorse -> attività attiva ● Server -> elabora richieste e risponde al Client -> attività passiva = sempre in ascolto per eventuali comunicazioni Ha due versioni: si DIFFERENZIANO principalmente da come vengono scambiate delle sequenze di messaggio
Header entità -> Forniscono informazioni sul body del messaggio o sulla risorsa richiesta
ORGANIZZAZIONE A LIVELLO E A STRATI -> (elaborazione lato server) il modello a livelli corrisponde spesso a quello a strati L'architettura client - server è organizzata a livelli. Ogni livello fa da Client per i server a livello inferiore e da server per i Client a livello superiore. Le applicazioni di rete si dividono in tre strati di funzionalità: ● front-end -> interfaccia verso l’utente ● logica applicative ( o middleware) ● back-end -> accesso alle risorse nel DB stessa cosa si può fare per le applicazioni informatiche: Presentation Layer, bussiness logic layer e resource management layer EVOLUZIONE ARCHITETTURA A LIVELLI -> avvenuta con il miglioramento delle macchine nel tempo 1° LIVELLO -> caratterizzato da un mainframe al quale erano collegati molti terminali, avevano il compito di effettuare operazioni di input e output 2° LIVELLO -> dagli anni 80 -> architettura client-server -> ci sono due sottocategorie ● THIN-CLIENT-> Server si occupa logica applicativa e gestione dati -> Client software presentazione ● THICK-CLIENT-> Server si occupa gestione dati -> Client software presentazione e logica applicativa PROBLEMA ---> Scalabilità 3° LIVELLO -> dagli anni 90 l'architettura client-server si divide in tre livelli: front-end, logica applicativa(usando il middleware) e back-end. Middleware= è una serie di tecnologie che aiutano lo sviluppatore nella gestione delle complessità. ha lo scopo di realizzare comunicazioni e interazioni fra i componenti software di un sistema distribuito. VANTAGGI - > maggiori prestazioni, sicurezza, tolleranza ai guasti SVANTAGGI - > difficoltà di progettazione, sviluppo e amministrazione n-Livelli -> generalizzazione del modello client server a 3 livelli vengono inseriti n livelli nel mezzo APPLICAZIONE DI RETE (o Sistema Distribuito)--> pk si ha un’elaborazione su + macchine diverse Eseguite a livello applicazione dove vengono messi a disposizione i protocolli che fanno comunicare le app con host remoti È un insieme di processi eseguiti su 2 o + computer contemporaneamente interagendo tra loro condividendo risorse comuni (accesso al DB di un server). ● USER-AGENT --> fa da interfaccia tra utente e aspetti comunicativi ● IMPLEMENTAZIONE DEI PROTOCOLLI --> fanno interagire l’applicazione con la rete ARCHITETTURE PER LE APPLICAZIONI DI RETE
Architettura che si basa sulla comunicazione fra una coppia di host (ognuno di essa fornisce una risorsa), che condividono risorse distribuite. Non devono passare per forza da un server per comunicare ● P2P Decentralizzato: _un peer funzione Server e Client, _si adatta ad un continuo cambiamento della rete _Per localizzare i peer non localizzati con gli indirizzi IP, ma viene usata una tecnologia più elevata ● P2P Centralizzato: è presente un Server centrale che conserva le informazioni dei peer ed esegue ricerche di una risorsa centralizzata per segnalare la posizione della risorsa all’host richiedente ● P2P Ibrido: Sono presenti super-peer determinati dinamicamente, tramite un algoritmo di elezione, che hanno anche la funzione di indicizzazione: gli altri nodi, sono anche chiamati leaf peer. SERVIZI OFFERTI DALLO STRATO DI TRASPORTO ALLE APP DI RETE
un Host può unirsi o abbandonare un gruppo può appartenere a più gruppi diversi contemporaneamente un host per inviare un messaggio ad un altro Host in un gruppo non ha l'obbligo di essere dentro APPLICAZIONI LATO SERVER(PROGRAMMAZIONE SERVER-SIDE) Il meccanismo che genera in formato HTML, in seguito a un’elaborazione dal processo Web server in esecuzione sul server, dinamicamente la risposta in funzione della richiesta fatta dal client. elaborazione server-side -> capacità del server di eseguire operazioni e di elaborare richieste provenienti da un client (ad esempio, un browser web) senza richiedere che il client stesso esegua il codice programmazione server-side -> si riferisce al processo di creazione di servizi web che vengono eseguiti su un server e forniscono funzionalità ai client. Ci sono diverse tecnologie di programmazione server-side si differenziano per: ● Linguaggi di sviluppo che sono supportati ● L’ambito applicativo per cui sono stati concepiti ● Meccanismi di connessione al server web ● Server web supportati I linguaggi usati lato server si dividono in: ● Codice separato associato ad un URL : CGI e Java Servlet ● Codice embedded in HTML: PHP CGI (Common Gateway Interface) -> è una tecnologia che consente ai server web di eseguire programmi esterni e di restituire i loro risultati come pagine web dinamiche. Sono scritti con più linguaggi diversi. Richiesta di una risorsa da un client ad un server I programmi CGI vengono eseguiti sul server web ogni volta che un client (ad esempio, un browser web) invia una richiesta HTTP. Quando il server riceve una richiesta per un programma CGI, il server esegue il programma e utilizza il suo output per generare una pagina web da restituire al client.
CGI-> eseguiti da SO collaborando con il server WEB e per questo meno portabili, vengono caricati ed eseguiti per ogni richiesta alzando tempi di latenza Servlet -> + portabili pk scritte in Java ed eseguite dalla JVM, sono caricate una sola volta e viene creato un thread ad ogni richiesta, possono essere usate per qualsiasi servizio richiesto al server basato su un’architettura Client-Server, Persistenza JAVA SERVLET-> usate per risposte multiple in modo concorrente, manipolare dati in un DB remoto… Una servlet è un componente software scritto con il linguaggio Java che viene eseguito sul server e gestisce le richieste e le risposte di un'applicazione web. Le servlet vengono utilizzate per generare contenuti dinamici per il client. Le servlet sono gestite interamente da un container (esempio Tomcat), software java, che viene caricato ed eseguito su un server web occupandosi del ciclo di vita di una servlet. COMUNICAZIONE TRA CLIENT WEB E SERVER WEB Il ciclo di vita di una servlet è gestito dal Servlet Container, che è il software server che fornisce l'ambiente di runtime per l'esecuzione delle servlet.
La realizzazione di una servlet in Java prevede la creazione di una classe Java che estende la classe HttpServlet e l'implementazione dei metodi service(), doGet() e/o doPost() per gestire le richieste HTTP inviate alla servlet. Le servlet implementano due package principali: ● Package javax.servlet è la base per API servlet che definiscono: le interfaccie, le classi per comunicazione, i metodi per gestione ciclo di vita e esecuzione operazioni. ● Package javax.servlet.http; estensione funzionalità di base con caratteristiche protocollo http di request e response. Classe HttpServlet -> classe astratta estende la classe generica Servlet -> questa classe astratta estende la classe generica Servlet, implementa il metodo service() (per interpretare richiesta client e invocare metodi opportuni ) e fornisce una serie di metodi per gestire le richieste http, metodi doGet() e doPost(). Classe httpServletRequest, estende ServletRequest, questa interfaccia rappresenta una richiesta HTTP in arrivo e fornisce metodi per accedere ai parametri inviati dal client Classe httpServletResponse, estende ServletResponse, questa interfaccia rappresenta una risposta HTTP in uscita e fornisce metodi per impostare i parametri che il client riceve dopo l’elaborazione della servlet
prima richiesta (invocato 1 sola volta)
volta)
DEPLOYMENT -> è composto da una serie di passaggi per poter eseguire una servlet sul server. I passaggi previsti dal deployment sono: la definizione del run time environment di una application web (WEP), stabilire il posizionamento di tutti i file, mappare con un URL delle servlet, definire le impostazioni di default, configurare i vincoli di sicurezza Va scelto il nostro container per le servlet da poter installare, nel nostro caso Tomcat che dovrà preoccuparsi di fornire un ambiente di esecuzione alla nostra servlet. Dopo aver configurato Tomcat, quest’ultimo richiede per ogni WAP una particolare strutturazione delle directory collocate a partire dalla cartella principale webapps, che è la top level directory di tutte le applicazioni, che deve essere rispettata dal programmatore: ● creiamo la root directory -> contiene tutti i file e le risorse necessarie all'esecuzione dell'applicazione web ● dentro alla root directory creiamo una subdirectory WEB-INF dove memorizziamo il file web.xml ( file che contiene le definizioni delle servlet). WEB-INF si divide in due sottocartelle classes e lib o WEB-INF/ classes -> contiene i file .class delle servlet o WEB-INF/lib -> contiene i file di libreria .jar delle servlet
import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /**
PROVA
Nome: cognome