1. Programmazione di rete.
Cos’è? È la disciplina che studia come realizzare applicazioni che comunicano attraverso una rete (LAN, WAN, Internet) mediante protocolli standard.
Modelli di comunicazione principali.
Modello client-server.
È il modello più diffuso.
- Client
- richiede servizi
- invia richieste al server
- Server
- fornisce servizi
- gestisce più client contemporaneamente
Esempi:
- browser → server web
- app → database remoto
Modello peer-to-peer (P2P).
Ogni nodo può essere sia client sia server.
Caratteristiche:
- distribuzione del carico
- maggiore resilienza
- complessità gestionale superiore
Comunicazione tramite socket.
Le socket sono interfacce software che permettono la comunicazione tra processi su rete.
Tipi principali.
TCP (Transmission Control Protocol)
- connessione affidabile
- controllo errori
- consegna ordinata dei dati
- usato per:
- HTTP
- FTP
- SMTP
UDP (User Datagram Protocol)
- senza connessione
- veloce, ma non garantisce consegna
- usato per:
- streaming
- VoIP
- gaming online
Linguaggi usati nella programmazione di rete.
Linguaggi general purpose.
- Java
- Python
- C#
- C/C++
- Go
- JavaScript (Node.js)
Quasi tutti forniscono librerie per:
- gestione socket
- protocolli di rete
- servizi web
2. Servizi di rete avanzati.
Sono servizi applicativi che operano sopra i protocolli di base.
Tipologie principali.
Servizi Web.
Permettono la comunicazione tra applicazioni via Internet.
Si distinguono in:
REST (Representational State Transfer).
È lo standard più diffuso oggi.
Caratteristiche:
- utilizza HTTP
- dati in JSON o XML
- architettura stateless
Operazioni HTTP:
- GET → lettura dati
- POST → creazione
- PUT/PATCH → modifica
- DELETE → eliminazione
SOAP (Simple Object Access Protocol).
- basato su XML
- più strutturato
- usato in contesti enterprise
Servizi cloud.
Consentono di distribuire applicazioni su infrastrutture remote.
Modelli principali:
- IaaS (Infrastructure as a Service)
- PaaS (Platform as a Service)
- SaaS (Software as a Service)
Esempi:
- AWS
- Azure
- Google Cloud
Microservizi.
Architettura moderna in cui:
- l’applicazione è suddivisa in servizi indipendenti
- ogni servizio comunica via API
Vantaggi:
- scalabilità
- manutenzione semplificata
- sviluppo modulare
3. Linguaggi e tecnologie per servizi di rete.
Tecnologie lato server.
Node.js
- runtime JavaScript lato server
- molto usato per API REST
- framework diffusi:
- Express
- NestJS
Java.
Framework:
- Spring Boot
- Jakarta EE
Molto diffuso in ambito enterprise.
Python.
Framework:
- Django
- Flask
- FastAPI
Usato per:
- servizi web
- applicazioni scientifiche
- intelligenza artificiale
PHP.
Framework:
- Laravel
- Symfony
Storicamente molto usato per siti dinamici.
.NET (C#).
Framework:
- ASP.NET Core
Molto utilizzato in ambienti Microsoft.
Tecnologie lato client.
Servono per interfacciarsi con i servizi web.
- HTML5
- CSS
- JavaScript
Framework moderni:
- React
- Angular
- Vue.js
Formati di scambio dati.
JSON.
- leggero
- facile da leggere
- standard nelle API REST
XML.
- più strutturato
- usato nei servizi SOAP
4. Piattaforme di sviluppo per servizi di rete.
Server Web.
Software che gestiscono richieste HTTP.
Esempi:
- Apache
- Nginx
- IIS
Application Server.
Gestiscono logica applicativa.
Esempi:
- Tomcat
- WildFly
- Node.js runtime
Containerizzazione e virtualizzazione.
Docker.
Permette di:
- isolare applicazioni
- facilitare deploy e portabilità
Kubernetes.
Gestisce cluster di container:
- scalabilità automatica
- orchestrazione servizi
5. Progettazione di applicazioni orientate ai servizi web.
Fasi principali.
Analisi dei requisiti.
Definizione:
- utenti
- funzionalità
- vincoli
- sicurezza
Progettazione architetturale.
Scelta tra:
- monolite
- microservizi
- architettura SOA (Service Oriented Architecture)
Progettazione API.
Include:
- definizione endpoint
- struttura dati
- autenticazione
- versionamento API
Strumenti:
- OpenAPI / Swagger
Implementazione.
Scrittura codice:
- backend
- database
- interfacce client
Testing.
Tipologie:
- unit test
- integration test
- test di carico
Deploy.
Distribuzione su:
- server fisici
- cloud
- container
6. Sicurezza nei servizi di rete.
Aspetto fondamentale.
Include:
- HTTPS e TLS
- autenticazione (OAuth, JWT)
- gestione accessi
- protezione da attacchi:
- SQL injection
- XSS
- CSRF
7. Competenze richieste nel laboratorio (riassunto operativo).
Devi saper:
– progettare architetture client-server
– utilizzare protocolli TCP/IP e HTTP
– sviluppare API REST
– usare framework server-side
– gestire database e scambio dati JSON/XML
– deployare servizi su server o cloud
– applicare tecniche di sicurezza
– testare e documentare servizi web
