Avete bisogno di creare una finestra di dialogo di connessione 4D personalizzata? Siete interessati a collegare la vostra applicazione client a diversi server? Questi sono due scenari che 4D v18 vi permette di gestire. Questo post del blog è dedicato a chi desidera creare una finestra di dialogo di connessione remota personalizzata e collegarla a server 4D uniti. Continuate a leggere!
Perché dovrei scrivere una finestra di dialogo di connessione personalizzata?
Ci sono diversi casi d’uso per modificare la finestra di dialogo di connessione integrata di 4D:
- PERSONALIZZAZIONE
Si desidera personalizzare la finestra di dialogo standard per le connessioni remote al server.
- FILIALI MULTIPLE
Quando si distribuisce l’applicazione e si creano diversi database distinti. Ad esempio, un database diverso per ogni filiale di un gruppo. Nel database delle connessioni, è possibile gestire i server e i database a cui gli utenti possono connettersi e consentire loro di connettersi direttamente.
- DATABASE DI ARCHIVIO
Un altro modo di utilizzare una finestra di dialogo personalizzata è quello di scegliere il database dell’anno fiscale archiviato a cui gli utenti possono accedere.
- PORTALE DELLE APPLICAZIONI
Se si distribuiscono diversi prodotti e si desidera che gli utenti utilizzino un’unica applicazione “portale” per connettersi a ciascun prodotto.
Caso d’uso
Un editore di software ha una server farm ospitata nel cloud e ogni server corrisponde a una specifica esigenza aziendale. In precedenza, il numero di applicazioni remote distribuite era pari al numero di utenti che potevano accedere ai server. Ora possono distribuire un’unica applicazione remota per tutti i server con un database “directory”. Utilizzando le richieste HTTP o i datastore remoti, ogni server invia le proprie informazioni di stato e di connessione al server “directory”. L’applicazione collegata può quindi interrogare il database della directory, visualizzare un elenco di server disponibili e connettersi a uno di essi.
Come fare?
CREAZIONE DEL DATABASE DELLE CONNESSIONI
Per prima cosa, è necessario creare un database di connessione contenente la propria finestra di dialogo di connessione. Il comando OPEN DATABASE è stato esteso per consentire la connessione a un server 4D. Generate un file 4DLink contenente la posizione e la porta del server, quindi passatelo come parametro al comando. L’applicazione standalone interromperà automaticamente il suo codice e si connetterà al server, diventando una tipica applicazione remota.
Ecco uno snippet di codice da una finestra di dialogo per la selezione del server, dove Form.selectedServer contiene le informazioni sul server 4D:
If (Form.selectedServer#Null)
C_TEXT ($xml)
C_OBJECT ($link)
$xml :="<?xml version="1.0\" encoding="UTF-8\"?><database_shortcut is_remote="true\" server_database_name="FA_RemoteConnexionServ\" server_path=""+Form.selectedServer.IP+": "+Form.selectedServer.portID+"\"/>"
$link :=Folder(fk user preferences folder).file("server.4dlink")
$link .setText($xml)
OPEN DATABASE ($link.platformPath)
End if
Quando il database di connessione è pronto, è sufficiente creare un database compilato.
FUSIONE DEL DATABASE DI DESTINAZIONE
Solo le applicazioni client unite possono connettersi ai server uniti. Pertanto, abbiamo sviluppato un nuovo meccanismo nel processo di compilazione dell’applicazione per consentire l’incorporazione del database delle connessioni nell’applicazione client unita.
Abbiamo creato le nuove chiavi BuildApp, DatabaseToEmbedInClientWinFolder e DatabaseToEmbedInClientMacFolder, per contenere i percorsi del database di connessione compilato. In questo modo, durante la creazione dell’applicazione client/server finale, il processo di creazione dell’applicazione incorporerà il database delle connessioni compilato nell’applicazione client e ne cambierà il nome.
Questa applicazione può essere eseguita senza un file di dati o una licenza. Tuttavia, se è necessario un file di dati, è possibile inserire un file “Default Data.4DD” in una cartella “Default Data” vicino alla struttura compilata. In questo caso, la licenza per un’applicazione unita standalone viene integrata durante il processo di compilazione dell’applicazione.
Questa è la struttura di un’applicazione client unita senza un database incorporato (“client legacy”):
Questo è un esempio di chiavi BuildApp per incorporare un’applicazione di connessione:
<DatabaseToEmbedInClientMacFolder>
::connectionApp_Build:Database compilato:connectionApp:
</DatabaseToEmbedInClientMacFolder>
Questo è un database di connessione compilato:
Infine, questa è la struttura dell’applicazione client unita:
COME FUNZIONA?
Al momento dell’esecuzione, l’applicazione client unita aprirà il database di connessione incorporato e consentirà all’utente di selezionare il server unito a cui connettersi. Se viene utilizzato un file di dati predefinito, questo è in modalità di sola lettura.
Si noti che il processo di aggiornamento automatico dal server unito è ancora disponibile. Quando l’applicazione di connessione unita si connette al server, se la sua versione non rientra nell’intervallo del server, viene lanciato un aggiornamento automatico come se l’applicazione fosse un’applicazione client unita standard!