In pratica, si resta sempre con la struttura di base formata da un client nativo + web server, ma cio` che cambia e` CHE TIPO di web server si va ad usare. Se e` per gestire come il piu` delle volte succede, entro le 10 postazioni, come DB basta Sqlite (basta e` un eufemismo visto che ne potrebbe gestire benissimo 1000 o anche 10000 in base a come lo si usa) e come web server (premesso che un apache e` di fatto portable e quindi si potrebbe pure usare quello), ora si puo` pure usare PHP 5.4 (sopra ho sbagliato a scrivere 5.3) che ha gia` all'interno un web server. Questo significa che aggiungendo al proprio applicativo una cartella con dentro PHP 5.4 (che ovviamente non necessita installazione), l'applicazione basta che lanci php come un qualsiasi altro comando shell (tenendo presente che NON termina) e si ritrova un web server attivo sulla propria macchina, in grado di rispondere a richieste http.
Nella fattispecie il comando e`
che ritorna
Server is listening on localhost:8000... Press CTRL-C to quit.
Volendo essere leggermente piu` professionali basta comunque portarsi dietro una cartella con un qualsiasi webserver lite. Ce ne sono a bizzeffe, tutti senza install, basta lanciare 1 comando e restano li' in ascolto. Potrei menzionare lighttpd, Litespeed che usato con PHP e` 1,5 volte piu` veloce di Apache (http://litespeedtech.com/), nginx, ecc.
In questo modo il client nativo (es. scritto in Lazarus) non usa connessioni a DB classiche, ma si comporta come un browser specifico che chiama il webserver locale.
Un sistema cosi` (non ho parlato della business logic che e` la parte forse piu` importante e complicata, ma per ora non importa) permette alla ditta che lo usa di passare da app simil stand alone da 50 euro, a 10 postazioni in lan senza fare una mazza, e ha gia` tutto la possibilita` di funzionare anche da remoto aprendo il router sulla porta del web server (es. lavorare da casa con i dati nell'ufficio), ed in finale, il giorno che deve super-scalare perche' e` diventata la FIAT, si sposta il web server dell'ufficio che neanche sapevano di avere, su un server che sta in hosting in una webfarm dove non hanno problemi di banda come ha invece l'ADSL dell'ufficio e tutto prosegue come prima.
La stessa cosa non potrebbe essere fatta con un collegamento diretto a DB per vari motivi aggirabili e non
1) Difficilmente in hosting danno accesso diretto ad un DB con connessione classica.
2) La connessione classica, statica, prevede l'occupazione di una porta fino a quando non si chiude il programma, cosa che potrebbe portare problemi di quantita` di porte disponibili e di consumo di ram sul server. I sistemi invece tipicamente usati in unione ai web server sono connessioni mordi e fuggi: connessione->query->sconnessione. Questo mangia qualche mS ma il gioco vale la candela
3) Chi ci dice che altri tipi di clients possano accedere ad un determinato DB? Se invece il dialogo avviene in forma di web service (da envelope soap a piu` semplici pacchetti custom con xml o json o piu` semplici API web dedicate con json come sistema di dialogo) la risposta e` usabile pure da una lavatrice! ;D
E qui si passa al punto piu` importante: la business logic.
Pero` ne parlo piu` tardi o domani perche' bisogna che mi metta al lavoro.
Guida all’installazione ed all’uso di Thinfinity VirtualUI by Cybele software
1. Effettuare il download dei files .exe all’indirizzo http://www.cybelesoft.com/download/#tvui della versione che ci occorre in basa al nostro sistema operativo windows di sviluppo 32/64bit – requisiti sistema: https://www.cybelesoft.com/thinfinity/virtualui/requirements/
Nei requisiti sviluppo manca lazarus ma funziona lo stesso con le procedure di Delphi.
2. Eseguire il file appena scaricato per installare le librerie di sviluppo ed il server web proprietario, come si può vedere dai requisiti, il server web sarà disponibile solo con win8, win10, win_server2012 e win_server2016, nei sistemi precedenti il serverino non girerà ma potremo debugare l’applicazione contramite un serverino integrato nell’ambiente di sviluppo che aprirà il vostro browser predefinito automaticamente se vorrete.
3. A seconda di quale Sistema avete 32 o 64 bit le librerie saranno in “C:\Program Files\Thinfinity\VirtualUI\dev” oppure in “C:\Program Files (x86)\Thinfinity\VirtualUI\dev”
4. nella cartella “dev” ci saranno le cartelle per le librerie dei vari ambienti di sviluppo, a noi interessa la cartella “Delphi” che conterrà solo 4 files di sorgenti in Pascal (4 Unit) che dovremo copiare e caricare nel nostro progetto, comunque nel nostro piccolo applicativo ciao mondo ne basteranno 2!
5. Creare un progettino in lazarus (project1) con una semplice Form (unit1) salviamo in una cartella a piacere e copiare i files delle unit omonime VirtualUI_AutoRun.pas e VirtualUI_SDK.pas della cartella di project1.
6. Aggiungere i 2 files delle unit suddette a Project1
7. Aggiungere alla clausola uses del file project1.lpr il nome della unit VirtualUI_AutoRun
8. Modificare la form aggiungendo un pulsante che scriverà “ciao mondo” in un controllo Label e tutti gli altri controlli che vorrete testare…
9. Eseguite in modalità debug (F9)
10. Si aprirà una form di Thinfinity che vi chiederà se desiderate che si apra direttamente il browser (mostrandovi anche indirizzo e porta per farlo manualmente) ed ecco come si comporterà la vostra applicazione quando darete in pasto al server virtualUI il suo eseguibile che altrimenti potrà essere eseguito normalmente anche in desktop mode.