Architettura - madbob/GASdotto GitHub Wiki

GASdotto e' una applicazione web client/server. Il client e' rappresentato da un blocco di Javascript (in verita': e' implementato in Java e compilato in Javascript per mezzo del Google Web Toolkit) eseguito nel browser dell'utente, che gestisce tutta l'interfaccia grafica, mentre il server e' implementato in PHP e provvede a leggere e scrivere il database. I due componenti comunicano per mezzo di chiamate asincrone formattate in JSON.

In GASdotto e' implementato un semplice object-relational mapping, percui tutti gli "oggetti" logici essenziali (fornitori, prodotti, ordini...) sono letti dal database, serializzati in JSON, deserializzati nel client, modificati, serializzati, deserializzati e scritti usando sempre le stesse funzioni implementate nella classe FromServer. Ogni tipo di oggetto e' implementato lato client e lato server, in Java e PHP, estendendo la suddetta classe FromServer, esplicitando nome e datatype di ogni attributo, ed occasionalmente ridefinendo alcune funzioni trattate in modo speciale.

La costruzione dell'interfaccia grafica sul client sfrutta pesantemente la struttura omogenea che accomuna tutti gli oggetti: per ogni datatype sono definiti uno o piu' widgets (solitamente, almeno uno editabile ed uno solo per la visualizzazione), aggregati in interfacce Java, ed ogni pannello e' definito come un agglomerato di essi cui sono assegnati i nomi degli attributi con cui devono essere popolati. Tutta la gestione di prelievo delle informazioni dalla componente server (il database) e formattazione dei contenuti all'interno dei form avviene secondo euristiche basate su tale nozione essenziale.