Echange de données entre Serveur et Client

Actuellement fait par passage dans une variable process puis LIRE VARIABLE PROCESS

Y a t’il un nouveau moyen d’échanger une collection provenant du serveur et de la récupérer sur le poste client :?:

NB: Le Storage ou autres objets partagés ne conviennent pas puisque limités à une machine.

:idea: Une option pour lire le Storage du Serveur sur les clients ?

Tu peux faire cela avec une méthode qui a la propriété “Execute on server” et qui retourne un objet ou collection dans $0.

Comment est géré la synchronicité dans ce cas ?
4D gère l’attente de la réponse de la méthode exécuté sur le serveur ?
cela fige l’execution du coté client ?
N’est-ce pas trop risqué ? par rapport à la simple lecture à postériori c’est pas exactement la même chose.

Une méthode avec l’attribut “Execute on server” est synchrone et le client attend la réponse est est donc figé le temps d’execution de la méthode coté serveur.
!!! Attention à ne pas avoir d’erreur coté serveur et à toujours bien installer un erreur handler dans ce genre de méthode !!!

Je ne voit pas le risque que tu mentionne.

Regardons un example simple.

Méthode avec l’attribut “Execute on server” :

<code 4D>
C_COLLECTION($0)

$0:=Storage.myCollection
//or
$0:=myCollection
//or
$0:=<>myCollection
//or
$0:=JSON Parse(Document to text("<my_server_path>/myCollection.json"))
</code 4D>

Quand tu appelle cette méthode depuis le client, la méthode va être executer sur le server et a donc accès aux variables coté server. Le client attend l’execution du code et reçoit en retour la collection stocké coté serveur.

Dans ce cas de figure, tu as bien pris ma demande à la lettre qui est de simplement lire le Storage du serveur; mais, on pourrait aussi imaginer d’executer une méthode qui s’execute sur le serveur pour obtenir l’information directement mais que celle-ci prenne un certain temps à s’executer.

Il faut que je prévois que du coté serveur l’information soit bien stockée dans le Storage AVANT de la lire sur les clients.

La lecture (du Storage), elle, est instantanée et retourne le résultat à l’instant T.

C’est 2 approches qui au final donnent le même résultat mais c’est pas la même organisation.

Effectivement cela va dépendre de ce que tu as réellement besoin de faire et comment tu doit gérer la synchronisation du client et du serveur.

Si la tâche coté serveur est grande et peut prendre du temps et que tu fait cela dans un process dédié, tu peux imaginer un système de callback qui renvoie quelque chose au client via la commande EXECUTE ON CLIENT quand le processus est terminé et lui retourné la fameuse collection.

Dans ce cas la tu fait de l’asynchrone et le client n’est plus figé. Mais cela peut aussi comporter certains risques.