Creare una finestra di dialogo personalizzata per la connessione remota

Tradotto automaticamente da Deepl

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:
blank

Infine, questa è la struttura dell’applicazione client unita:
blank

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!

Avatar
- Product Owner -Damien Fuzeau è entrato a far parte del team 4D Product nel febbraio 2019. In qualità di Product Owner, si occupa di scrivere le storie degli utenti e di tradurle in specifiche funzionali. Il suo lavoro consiste anche nell'assicurarsi che le implementazioni delle funzionalità fornite soddisfino le esigenze dei clienti.Damien si è laureato all'Università di Nantes in ingegneria del software. Ha trascorso più di 23 anni nella sua precedente azienda, prima come sviluppatore (scoprendo 4D nel 1997), poi come responsabile dell'ingegneria e architetto software. Questa azienda è un partner OEM di 4D e ha distribuito software aziendali basati su 4D per migliaia di utenti, su centinaia di server. Damien è quindi abituato allo sviluppo e alla distribuzione di 4D in un contesto multilingue.