Server e Client per il Web

Servers

Server Dedicati

Questa piccola lista enumera solo servers disponibili con una licenza Open Source, garanzia di qualità e trasparenza.

Apache Web Server

Apache-logo

Scritto in Linguaggio C. Sorgenti disponibili sul sito di Apache e su https://github.com/apache/httpd.

Nato circa nel 1995, storicamente il più usato.

Solido e potente, supporta ogni feature del mondo Web.

Più del 40% dei siti mondiali.

Nginx

Nginx-logo

Pronunciato Engine-ex.

Scritto in Linguaggio C. Sorgenti disponibili, p.es. su https://github.com/nginx/nginx.

Sviluppato dal 2002, originariamente da Igor Sysoev, quindi passato ad una comunità di sviluppatori volontari.

Circa il 30% dei siti mondiali.

Apache Tomcat

Tomcat-logo

Scritto in Java. Codice donato alla Apache dalla Sun Microsystem. Sorgenti disponibili su, p.es. https://github.com/apache/tomcat.

La sua funzione primaria è come contenitore di oggetti servlet dell'universo Java. Funziona benissimo anche come normale server web.

Circa l'1% dei siti mondiali.

Lighttpd

Lighttpd-logo

Pronunciato Lightly.

Scritto in Linguaggio C. Sorgenti della versione 2 disponibili, p.es. su https://github.com/lighttpd/lighttpd2.

Leggero e con meno requisiti di risorse degli altri.

Non così completo come altri servers.

Circa lo 0,1% dei siti mondiali.

NOTA

Il motivo per cui la somma d'uso dei server elencati non si avvicina al 100% è che vi sono anche server non Open Source.

Server Programmati

La maggior parte dei linguaggi di programmazione permette di costruire dei server che gestiscono il protocollo HTTP e altri aspetti del mondo Web.

La complessità, e le corrispondenti prestazioni e possibilità operative variano enormemente.

Una menzione va a Node.js.

Node.js

Nodejs-logo

E' in essenza un linguaggio di programmazione JavaScript lato server.

Consente quindi di redigere interi server web dal comportamento dinamico.

La sua principale limitazione, oltre che usare il JavaScript, è l'azzenza totale di parallelismo: è single-threaded di natura.

Clients

Browsers Grafici

Il primo browser grafico prodotto fu Viola, di Pei-Yuan Wei di Taiwan, e basato sull'innovativo sistema grafico X Window. L'autore lavorava sul concetto di hyperlink, con spunti da Apple Hypercard, e si dice che in realtà sia stato lui ad inventare il concetto di World Wide Web, invece di Tim Berners-Lee.

Marc Andreesen, nuovo impiegato del National Center for Supercomputing Applications (Urbana, Illinois), sviluppò a partire dai primi anni '90 il browser grafico, Mosaic.

Mosaic

Questo rese il nuovo ambiente WWW molto usabile da un utente comune e determinò il rapido successo del web.

Ora non più in uso, Mosaic si è presto evoluto in un nuovo (per allora) prodotto, proprietario ma gratuito, Netscape Navigator.

Netscape

La Netscape ha introdotto per il suo Navigator, e per i server web, il protocollo Secure Socket Layer.

Navigator si è successivamente evoluto e gli è stato dato il nome del progetto originale di Marc Andreesen, Mozilla. Mozilla è diventata un'entità giuridica indipendente, ed ha prodotto il moderno browser Firefox.

Ad oggi di browser grafici ve ne è un numero considerevole, tra cui:

  • Mozilla Firefox
  • Google Chrome
  • Brave
  • Vivaldi
  • Opera
  • Apple Safari
  • Microsoft Edge

Command Line Interface

Comandi da terminale, non grafici, che compiono un collegamenteo al server web col protocollo HTTP.

Il primo browser a caratteri si chiamava letteralmente www, inventato da Tim Berners-Lee stesso, ed era molto primitivo.

Altri notevoli browser a caratteri furono Lynx per i primi Linux, e MacWWW (Samba) per gli antichi Apple MacIntosh.

Vi è oggi una rinascita del CLI, sia per interazioni batch, p.es. comandi inseriti in procedure shell, sia con la diffusione di Docker e Kubernetes che mal supportano ambienti grafici.

Queste utility sono spesso usate nel testing e debugging di API REST basate su server web.

wget

Usato tipicamente per il download in modo batch di file rappresentati da una URL.

Spesso usato come web crawler, per lo scraping (download ricorsivo) di interi siti web.

curl

Un vero è proprio coltellino svizzero, usato non solo per interazioni HTTP, ma praticamente qualsiasi protocollo applicativo TCP/IP basato sull'interscambip di messaggi ASCII.

HTTPie

Comando: http. Numerose opzioni.

Flessibile nell'inviare ogni tipo di richiesta HTTP. Interazione molto amichevole.