Après windows pour les nuls, voici PB pour les bons (ou presque).

Le forum (ô combien francophone) des utilisateurs de Powerbuilder.

Recherche rapide

Annonce

Certaines rubriques, dont des cours, sont uniquement visibles par les membres du forum ^^.
Dans la rubrique Liens & Références, vous avez accès à un sommaire de téléchargement, profitez-en !
Il existe maintenant un nouveau TOPIC "Votre CV en Ligne" accessible uniquement par demande.

#1 21-11-2011 12:13:43

seki  
0x73656B69
Award: bf
Lieu: Laquenexy & Luxembourg
Date d'inscription: 20-11-2008
Messages: 1120
Pépites: 4,296,080,217
Banque: 9,223,372,036,854,776,000
Site web

Persistance d'objets ?

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)


The best programs are the ones written when the programmer is supposed to be working on something else. - Melinda Varian

Mes réponses PB sur StackOverflow
http://stackoverflow.com/users/flair/317266.png

Hors ligne

 

#2 21-11-2011 17:30:17

buck  
Modérateur
Lieu: Dijon
Date d'inscription: 31-07-2008
Messages: 748
Pépites: 1,028,846
Banque: 171,170,849,654

Re: Persistance d'objets ?

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

 

Pied de page des forums

Propulsé par FluxBB 1.2.22