# SINGLE PAGE APPLICATIONS
Da Wikipedia:
Con Single-page application (in italiano: applicazione su singola pagina) o in sigla SPA si intende una applicazione web o un sito web che può essere usato o consultato su una singola pagina web con l’obiettivo di fornire una esperienza utente più fluida e simile alle applicazioni Desktop dei sistemi operativi tradizionali. In un’applicazione su singola pagina tutto il codice necessario (HTML, JavScript e CSS) è recuperato in un singolo caricamento della pagina o le risorse appropriate sono caricate dinamicamente e aggiunte alla pagina quando necessario, di solito in risposta ad azioni dell’utente. La pagina non si ricarica in nessun punto del processo, né lascia il controllo in un’altra pagina, sebbene moderne tecnologie web (come la API pushState() di HTML5 può fornire la percezione e la navigabilità in pagine logiche separate nell’applicazione). L’interazione con una applicazione a singola pagina spesso coinvolge una comunicazione dinamica con il web server.
Il termine ha cominciato ad essere usato a partire dal 2012 e Genropy può considerarsi un precursore di questa tecnologia dato che a partire dal 2006 sono stati consegnati ai clienti i primi applicativi realizzati con il framework e che anticipavano proprio questo approccio. Le applicazioni web tradizionali, infatti, prevedono che il server generi delle pagine HTML che invia al client e quest’ultimo si limita poi a presentarle all’utente fornendo un minimo di logica locale tramite Javascript.
Con Genropy invece la chiamata ad una pagina rende sempre la stessa pagina HTML che al suo interno costruisce una vera e propria applicazione in Javascript che dialoga con la sua controparte in Python sul server tramite RPC e Websocket. L’adozione di questo approccio (per il 2006 davvero inconsueto) ha consentito di sperimentare per molti anni questa tecnologia che ora è molto matura ed adatta ad essere usata per creare applicazioni in grado di garantire agli utenti una straordinaria velocità di uso in grado di non fare rimpiangere i classici applicativi desktop.
Per chi utilizza un’applicazione per tutto il giorno il risparmio di pochi decimi di secondo su ogni singola operazione può rappresentare un vantaggio competitivo anche importante. Se un utente di un sito pubblico e che usa un’applicazione per pochi minuti è disposto ad accettare un’interfaccia anche non perfetta, chi lavora tutto il giorno su un sistema professionale deve essere messo in grado di svolgere il proprio compito nel modo più completo e veloce possibile.
Questo si traduce anche nel disegno di una GUI standardizzata dove ogni elemento funzionale è sempre posizionato nello stesso punto e dove ogni dettaglio è studiato per risparmiare tempo e fatica. Questo è molto diverso dai siti pubblici dove invece si predilige spesso l’aspetto estetico anche a scapito della funzionalità.
# LE CARATTERISTICHE DI GENROPY
Tutto Python (o quasi)
La realizzazione di applicazioni web implica anche l’utilizzo di Javascript, CSS e HTML ma grazie all’approccio “tutto Python” di Genropy gli sviluppatori possono utilizzare principalmente Python nella definizione delle interfacce. Genropy è scritto in Python e può funzionare con diversi database. Esitono adapters per sqlite, postgres, mysql, microsoft sql ed oracle. Anche tutte le operazioni sul database possono essere scritte direttamente Python, usando API molto semplici.
Bag e strutture
Genropy si basa sul concetto di Bag, un contenitore gerarchico la cui sintassi si presta molto facilmente a descrivere strutture di dati, di widget, di elementi in stampa. Le Bag sono usate sia in Python che in javascript e questa dualità di uso rende molto facile per lo sviluppatore avere sia sul server che sul client le stesse API. Una Bag è molto di più che un contenitore: è infatti un oggetto in grado di eseguire chiamate per popolarsi e di reagire ad eventi eseguendo della logica interna.
Gli store
Genropy utilizza estesamente il paradigma MVC sia sul client che sul server. Prendiamo ad esempio una pagina che gestisca un archivio: una volta caricata in memoria con tutti gli elementi di interfaccia (View) e tutta la logica (Controller), si limiterà di volta in volta a popolare lo store locale (Model) con i dati di un particolare record e questo minimizza la quantità di dati che transita sulla rete rendendo caricamento e salvataggio di un record estremamente veloce.
Il path relazionale
Le chiamate SQL di Genropy si basano sul concetto di path relazionale: un modo intuitivo e logico di definire delle colonne in un database. Query anche complesse possono essere scritte in pochi istanti con una sintassi assolutamente semplice e senza avere l’appesantimento, anche in termini di prestazioni, che i classici ORM spesso comportano.
In produzione
Per la distribuzione di prodotti realizzati con Genropy si suggerisce una modalità in cloud. In particolare esistono degli script configurare in modo automatico una distribuzione tramite NGINX – GUNICORN – TORNADO gestendo anche i certificati tramite CERTBOT.
Genropy include tutto il necessario per utilizzare i servizi Amazon AWS
# CHE VANTAGGI OFFRE AGLI SVILUPPATORI?
Ambiente di sviluppo rapido ed integrato
Adozione del paradigma MVC sul client e sul server
Sviluppo modulare con riutilizzo del codice
Customizzazioni del applicativo
Gestione preferenze
Debugger integrato
Integrazione PostgresSQL, MySql, e altri
Importazione automatica da database legacy
Gestione delle chiamate SQL in Python
Gestione utenti, tag autorizzazioni
Applicazioni multidatabase
Gestione batch con creazione di termometri.
Sistema di generazione PDF
Gestione mail ingresso e uscita
Strumenti per pagine collaborative
Sistema di documentazione RST
Gestione allegati
# CHE VANTAGGI OFFRE AGLI UTENTI?
Interfaccia coerente ed intuitiva
Caricamento dati veloce e assistito
Creazione query complesse in pochi click
Memorizzazione query anche con parametri
Generazione viste personalizzate
Interfaccia drag&drop
Gestione template per stampe e mail
Archiviazione dati obsoleti
Analisi statistiche
Mail in ingresso ed uscita
Posta certificata
Possibilità di creare campi custom
Chat integrata
Gestione carte intestate
Compatibilità con dispositivi mobile
Gestione allegati
Gestione annotazioni e azioni da eseguire
Gestione Task periodici
# DA DOVE INCOMINCIARE?
Innanzitutto potresti iniziare a utilizzare le interfacce utente di Genropy entrando in sandbox.genropy.org: un sito di demo dove è servito un semplice applicativo d’esempio. Per capire come funzionano gli elementi di interfaccia grafica messi a disposizione dal framework e le potenzialità che essi offrono, consulta il Manuale utente degli applicativi Genropy.