Appunti TPS PDF
Document Details
Uploaded by Deleted User
Tags
Summary
Questi appunti forniscono una panoramica su API, Web Services, SOAP e REST, tecnologie utilizzate nello sviluppo di software. Spiegano come funzionano, i loro punti di forza e di debolezza e le differenze tra di loro. Il documento è adatto a studenti universitari di informatica.
Full Transcript
**API (Application Programming Interface)** Le API sono strumenti che permettono a software diversi di comunicare tra loro. - **Come funzionano?** 1. Ricevono richieste da un\'applicazione. 2. Inoltrano le richieste al sistema. 3. Restituiscono una risposta con i dati o il risu...
**API (Application Programming Interface)** Le API sono strumenti che permettono a software diversi di comunicare tra loro. - **Come funzionano?** 1. Ricevono richieste da un\'applicazione. 2. Inoltrano le richieste al sistema. 3. Restituiscono una risposta con i dati o il risultato richiesto. - **Esempi:** 1. **API del browser:** accedono a risorse del browser (es. DOM o geolocalizzazione). 2. **API di terze parti:** permettono di usare servizi esterni (es. Google Maps API). - **Vantaggi:** 1. Consentono di riutilizzare il codice, risparmiando tempo e costi. 2. Favoriscono la comunicazione tra sistemi diversi. **Web e Web Services** - **Web:** usa il protocollo HTTP per far comunicare un client (es. browser) e un server. - Le pagine web sono destinate agli utenti e usano HTML. - **Web Services:** sono API che trasmettono dati tra due sistemi, non per uso umano diretto. - I dati sono in formati come **JSON** o **XML** e viaggiano su HTTP. - **Vantaggi:** - Utilizzano metodi standard, per superare le diversità delle singole applicazioni. - Rendono semplice la condivisione di risorse. - Favoriscono lo sviluppo di applicazioni distribuite. **SOAP (Simple Object Access Protocol)** SOAP è un protocollo standard per inviare messaggi tra applicazioni attraverso Internet, definito dal W3C. - **Caratteristiche principali:** - Usa **XML** per formattare i messaggi. - Si appoggia a **HTTP** per la trasmissione, ma aggiunge un \"involucro\" (envelope) che rende il protocollo più complesso. - Definisce l\'interfaccia delle operazioni disponibili tramite **WSDL** (Web Services Description Language). - **Vantaggi:** - È maturo e offre molte funzionalità avanzate. - Garantisce un alto livello di standardizzazione. - **Svantaggi:** - Dipende da linguaggi e protocolli specifici. - È più lento e complicato rispetto ad altre alternative moderne (es. REST). - Non è adatto a client basati su browser. **Evoluzione:**\ SOAP ha sostituito lo standard **XML-RPC**, ma a sua volta è stato in gran parte superato da **REST** e **JSON** grazie alla loro semplicità e velocità. **REST (Representational State Transfer)** REST non è un protocollo ma un\'architettura per progettare Web Services. - **Caratteristiche principali:** - Utilizza solo **HTTP** per il trasferimento di dati. - Supporta formati come **JSON** (leggero e leggibile) o **XML** (più strutturato e machine-readable). - Le risorse vengono identificate da un **URI** univoco. - Le operazioni di base (CRUD: Create, Read, Update, Delete) sono mappate sui metodi HTTP: - **GET**: recupera dati. - **POST**: crea nuove risorse. - **PUT**: aggiorna risorse esistenti. - **DELETE**: elimina risorse. - **Principi fondamentali:** 1. **Statelessness (assenza di stato):** - Ogni richiesta è indipendente e contiene tutte le informazioni necessarie. - Non richiede al server di mantenere traccia dello stato del client. - **Vantaggi:** semplicità e scalabilità (le richieste possono passare attraverso proxy e cache). 2. **URI intuitive:** - Gerarchiche, simili a percorsi di file, e autoesplicative. 3. **Trasferimento dati:** - Predilige **JSON** per la leggerezza e la semplicità. - Supporta anche **XML** per esigenze più complesse. - **Vantaggi:** - Maggiore velocità rispetto a SOAP. - Facilita la progettazione e distribuzione. - Scalabilità migliorata grazie alla sua struttura stateless. - **Svantaggi:** - Meno adatto a operazioni che richiedono sicurezza avanzata o transazioni complesse (dove SOAP eccelle). **Confronto tra SOAP e REST** **Caratteristica** **SOAP** **REST** ----------------------------- ------------------------------ ------------------------------- **Tipo di architettura** Service-Oriented Stile architetturale semplice **Formato dati** Solo XML JSON (preferito), XML, altri **Protocollo** Proprietario, basato su HTTP Usa solo HTTP **Velocità** Più lento Più veloce **Funzionalità avanzate** Completo e standardizzato Minimalista **Semplicità** Complesso Più semplice **Adattabilità ai browser** Non adatto Ideale per applicazioni web **SOA (Service-Oriented Architecture)** SOA è un modello architetturale progettato per gestire la complessità dei sistemi distribuiti, basandosi sull\'idea di scomporre un\'applicazione in un insieme di **servizi indipendenti** e interoperabili. I servizi comunicano tra loro tramite protocolli standard, offrendo flessibilità e modularità. **Componenti principali di SOA:** 1. **Fornitori di servizi:** - Entità che offrono unità funzionali autonome per eseguire compiti specifici. - Definiscono i termini d'uso dei servizi e li registrano in un catalogo accessibile agli utenti. 2. **Bus di servizi (Enterprise Service Bus - ESB):** - Il canale di comunicazione tra i servizi. - Garantisce lo scambio di messaggi e la trasformazione dei dati, utilizzando protocolli standard. - **Funzionalità principali:** - Gestione del **routing** dei messaggi tra i servizi. - Conversione tra **formati diversi** dei dati. - Gestione di **errori** e **sicurezza**. - Agisce come punto centrale per l\'accesso ai servizi ma introduce un potenziale punto di fallimento centrale, richiedendo un\'attenta gestione e configurazione. 3. **Registro dei servizi:** - Un catalogo centralizzato che descrive i servizi disponibili e le loro funzionalità. - Consente agli utilizzatori di individuare e sfruttare i servizi più adatti alle loro esigenze. 4. **Utilizzatori (client):** - Applicazioni o sistemi che richiedono e utilizzano i servizi messi a disposizione dai fornitori. **Principi fondamentali di SOA:** 1. **Modularità:** - Ogni servizio è autonomo e svolge una funzione specifica. 2. **Riutilizzabilità:** - I servizi possono essere utilizzati da più applicazioni, riducendo duplicazioni e costi di sviluppo. 3\. Interoperabilità: 4\. Scalabilità: \- Nuovi servizi possono essere aggiunti senza modificare quelli esistenti. **Vantaggi di SOA:** \- Flessibilità: \- Manutenzione semplificata: \- Integrazione semplificata: \- Consente la connessione tra sistemi diversi, anche eterogenei. \- Riutilizzo: \- Riduzione dei costi di sviluppo grazie alla riutilizzabilità dei servizi esistenti. **Svantaggi di SOA:** \- Complessità: \- Sicurezza: \- È necessario gestire attentamente i dati sensibili trasmessi tra i servizi. \- Prestazioni: \- Governance: