Programmazione di rete, servizi di rete avanzati, linguaggi, tecnologie e piattaforme per la realizzazione di servizi di rete.

Network Concept
Concettualizzazione della Rete in 3D.

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

** Se puoi sostenere il mio lavoro, comprami un libro | Buy me a book! **
** ISCRIVITI ALLA NEWSLETTER ! **

About the Author

Sergio Mauri
Blogger, autore. Perito in Sistemi Informativi Aziendali, musicista e compositore, Laurea in Discipline storiche e filosofiche e in Filosofia. Premio speciale al Concorso Claudia Ruggeri nel 2007; terzo posto al Premio Igor Slavich nel 2020. Ha pubblicato con Terra d'Ulivi nel 2007 e nel 2011, con Hammerle Editori nel 2013 e 2014, con PGreco nel 2015 con Historica Edizioni e Alcova Letteraria nel 2022 con Silele Edizioni (La Tela Nera) nel 2023 e con Amazon Kdp nel 2024 e 2025.