Per il server si è scelto di puntare sull'efficienza, intesa
sia come dimensione degli eseguibili, che, soprattutto, come occupazione
di risorse di sistema.
Da qui la scelta di scriverlo in C, con gli evidenti risultati
in snellezza ma portandoci ad un onere di programmazione non indifferente.
(All'interno del sito e' possibile vedere anche lo schema dei moduli
implementati per la sua gestione).
I due server sono al momento due eseguibili distinti di circa 60Kb ciascuno.
Per motivi di praticità e trasporto si è scelto di fare
linking statico includendo in entrambe gli eseguibili anche i moduli comuni.
Effettuando un linking dinamico 25Kb vengono condivisi, portando ad
una dimensione totale di circa 95Kb.
Alcune soluzioni tecniche mirate a tenere snella l'implementazione meritano attenzione:
Il file di configurazione, in stile Unix viene analizzato da un programma esterno per rendere più agevole la sua lettura. | ||
Le risorse grandi non vengono prese ed inviate attraverso il socket per intero. Vengono invece spezzettate: sia per limitare l'uso di ram nel prendere la risorsa dal disco, sia per evitare di riempire inutilmente il buffer del socket, se la comunicazione non e' abbastanza veloce |
Inoltre per renderlo quanto piu' vicino ad un server Web si sono implementati :
Logging | |
Gestione CGI (solo metodo GET) |
Documentazione Completa del codice in C |
Digrammi di transizione del server |
|
|
|
|
|
|
|
|