Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Bonjour,
ce qui peut être amusant quand on travaille avec un environnement limité, c'est d'essayer de repousser les limites pour continuer à faire évoluer des projets en restant avec cet environnement. J'ai déjà réussi à ajouter des tableaux associatifs, les expressions rationnelles, des listes à PB (risible quand on compare aux possibilités au hasard de Java ); là je cherche des idées pour avoir une persistance d'objets.
Si certains d'entre vous font du java (ou du .NET, je pense qu'il y a aussi cette notion), en gros je cherche à sérialiser des données structurées.
Il semble clair que le fonctionnement de PB ne me laisserait pas stocker directement des userobjects pour les recharger plus tard (dans une autre session de mon application)[1].
Par contre j'ai réussi un premier test en utilisant une structure dont je récupère les données par un RtlMoveMemory dans un blob qui est dimensionné à la bonne taille, il est ensuite possible de sauver ce blob dans une colonne binary / long binary d'une table (le but étant de sauver sous forme d'objet pré-compilé des expressions (= calculs) en format texte et qui sont interprétées habituellement par l'application à chaque exécution). On arrive à faire l'opération inverse et à recoller les octets dans la structure avec un RtlMoveMemory dans l'autre sens.
En discutant, on a aussi évoqué l'idée de stocker ces informations sous une autre forme, dans une datawindow / datastore et d'utiliser l'import / export xml pour sauver l'état de cette DW/DS.
Auriez-vous d'autres suggestions pour sauver l'état d'objets de la manière la plus compacte possible ? Je souhaite éviter au maximum les allers/retours entre mon application et sa base.
[1] en fait il y aurait peut-être une piste avec corba qui permet de transmettre des objets à d'autre processus (éventuellement distants et écrits dans d'autres langages) ? Mais je n'ai jamais fait de corba, et encore moins en PB et je ne sais pas si ça pourrait s'utiliser dans le même processus.
Dernière modification par seki (21-11-2011 12:17:03)
Hors ligne
Bonjour,
En fait, tu peux parfaitement créer des userobjets écrit en powerbuilder et les déployer sur EASERVER (les objets peuvent être "stateless" ou "stateful"). L'objet distant est effectivement invoqué en utilisant le protocole CORBA, mais c'est complétement transparent, il n'est aucunement nécessaire de connaître le protocole CORBA à part quelques notions de bases (stub/skeleton).
Les méthodes GetFullState/SetFullState, GetFullStateBlob, ... sont différentes méthodes te permettant de synchroniser les données entre la datawindow de ton application cliente et la datastore de ton objet distant.
....
Hors ligne