IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Flex Discussion :

Garder en mémoire des résultats sans BDD


Sujet :

Flex

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Février 2010
    Messages : 61
    Points : 37
    Points
    37
    Par défaut Garder en mémoire des résultats sans BDD
    Bonjour,

    Je m'interroge sur la possibilité de réaliser ce dont j'ai envie..

    J'ai une appli, qui apelle des servlets pour remplir des trees et des datagrid..
    Tout marche comme il faut...!
    Mon appli se lance grâce à un bouton "run" qui prend en donnée le choix de l'utilisateur par une combobox..

    Ce que j'aimerais savoir, c'est s'il est possible de conserver les résultats obtenus pour pouvoir les réutiliser plus tard..

    Qu'est ce que j'entends par là..?

    Exemple : L'utilisateur choisi le domaine "personne" lance l'appli avec run..
    Celle ci, charge tout ce qu'il faut avec un laps de temps non-négligeable ( se compte en secondes voire minutes)..
    Il change ensuite de domaine...qui donne les résultats appropriés...
    Si l'utilisateur revient sur le domaine "personne"...il faudrai que l'application ai gardé en mémoire les différents résultats, c'est à dire, qu'elle ne requestionne pas les servlets et affiche directement les données escomptées...

    Est ce réalisable sans Base de Données..? Ou est ce une pure utopie..?

    Je vous remercie!

    [edit] Peut être une mise en cache est possible..?

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Août 2006
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2006
    Messages : 141
    Points : 118
    Points
    118
    Par défaut
    Bonjour,

    Je ne comprends pas ta question. Bien sur que tu peux garder un objet en mémoire. Pourquoi serat-il perdu ?
    je vois pas ce qui te pose problème.

    Bien à toi

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Février 2010
    Messages : 61
    Points : 37
    Points
    37
    Par défaut
    Bah je me demande juste, si l'utilisateur aura besoin de réintéroger les servlets à chaque fois qu'il changera de domaine, ou ceux qu'il aura parcouru précédemment seront connus donc chargés directement!!

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Mai 2006
    Messages
    895
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 895
    Points : 1 710
    Points
    1 710
    Par défaut
    Tu veux conserver l'historique c'est ça ?
    Si c'est le cas tu peux regarder HistoryManager cela pourrait peut être te convenir. Perosnellement, je ne l'ai jamais testé.

    ++

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Février 2010
    Messages : 61
    Points : 37
    Points
    37
    Par défaut
    The Flex History Manager lets users navigate through a Flex application by using the web browser's back and forward navigation commands. For example, a user can navigate through several Accordion container panes in a Flex application, and then click the browser's Back button to return the application to its previous states.
    C'est pas vraiment ce à quoi je pensais...

    History Manager permet d'agir comme un navigateur internet..or c'est plus au systeme de cache d'un navigateur, que ce je désire faire ressemble...
    C'est à dire éviter d'appeler plusieurs fois les servlets pour télécharger des données déjà téléchargées (et donc identique)...!

  6. #6
    Membre expérimenté

    Profil pro
    Inscrit en
    Mai 2006
    Messages
    895
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 895
    Points : 1 710
    Points
    1 710
    Par défaut
    Tu peux faire un singleton contenant les objets que tu dois mémoriser.
    Je sais que la partie model Cairngorm fonctionne comme ça. Je ne te dis pas forcément d'utiliser Cairngorm mais plutôt d'en comprendre le fonctionnement pour pouvoir t'en inspirer.

    ++

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Février 2010
    Messages : 61
    Points : 37
    Points
    37
    Par défaut
    Pendant que je me renseigne sur Cairngorm ... j'ai fait une appli pour vous montrer mon problème..

    Je vous la donne donc, pour que vous ayez une idée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    <?xml version="1.0" encoding="utf-8"?>
    <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" 
        layout="absolute" horizontalAlign="left"
        initialize="addcheck()">
     
     
     
    		<s:HTTPService id="srv4"  result="test()" resultFormat="e4x"/>
     
     
    	<mx:Script>
    		<![CDATA[
    			import mx.controls.CheckBox;
    			import mx.collections.ArrayCollection;
     
    			var myCheck:CheckBox;
    			public function addcheck():void 
    			{  
    				myHbox.removeAllChildren();
     
     
    				for (var i:int=1; i<4; i++)
    				{
    					var myCheck:CheckBox = new CheckBox;
    					myCheck.label = ("algo" + String(i));
    					myCheck.id = String(i);
    					myCheck.addEventListener(MouseEvent.CLICK,check); 
    					myHbox.addChild(myCheck);   
    				}
    			}
     
    			public function check(e:Event):void
    			{
     
     
    				if (e.currentTarget.selected == true)
    				{ 
    					mydg1.dataProvider.removeAll();
    					PB.visible = true;
    					var algo:String = e.currentTarget.id;
    					srv4.url = String("http://*****/yam/match?action=match&schema=biology&algo=algo"+algo);
    					srv4.send();
    				}		
    			}	
     
     
    			private var myArr:ArrayCollection = new ArrayCollection(); 	
    				public function test():void
    				{
     
    					PB.visible = false;
    					var testdg:Boolean = true;
     
     
    					var test1:String = String(srv4.lastResult);
    					var myPattern:RegExp = / = /g;  
    					var usd = test1.replace(myPattern, ";");
    					var re:RegExp = /\n|;/;
    					var result1:Array = usd.split(re);
     
    					for(var i:int=0; i<result1.length; i++)
    					{
    						if (testdg == true)
    						{var newObj:Object = {} ;
    							newObj["test"] = result1[i]; 
    							testdg =false;
    						}
    						else
    						{
    							newObj["test2"] = result1[i]; 
    							testdg =true;
    							myArr.addItem(newObj);
    						}
    					}
     
    				}
     
    		]]>
    	</mx:Script>
     
    	<mx:HBox id="myHbox" x="128" y="34" width="382"/>
    	<mx:DataGrid x="115" y="122" dataProvider="{myArr}" id="mydg1" width="460" height="167">
    	 <mx:columns>
    		<mx:DataGridColumn  headerText="Label1" dataField="test"  />
    		<mx:DataGridColumn  headerText="Label2" dataField="test2"  />
    	</mx:columns>	 
    	</mx:DataGrid>
     
    	<mx:ProgressBar x="329" y="218" label="Chargement" visible="false" labelPlacement="center" id="PB"/>
     
    </mx:Application>
    Donc voilà, si l'utilisateur clique sur la checkbox 1, le tableau se charge, si ensuite il clique sur la checkbox 2, le tableau va se charger de la même manière..
    Mais s'il reclique sur la checkbox 1, au lieu d'avoir de nouveau un chargement, ce que je souhaiterais faire, c'est que les résultats apparaissent directement (puisqu'ils sont déjà connus..)

    Voilà ^^

    Ps: je sais que le tableau se rempli mal...

  8. #8
    Expert éminent
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 494
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 494
    Points : 6 065
    Points
    6 065
    Par défaut
    Citation Envoyé par MrVentouse Voir le message
    Bonjour,

    Je m'interroge sur la possibilité de réaliser ce dont j'ai envie..

    J'ai une appli, qui apelle des servlets pour remplir des trees et des datagrid..
    Tout marche comme il faut...!
    Mon appli se lance grâce à un bouton "run" qui prend en donnée le choix de l'utilisateur par une combobox..

    Ce que j'aimerais savoir, c'est s'il est possible de conserver les résultats obtenus pour pouvoir les réutiliser plus tard..

    Qu'est ce que j'entends par là..?

    Exemple : L'utilisateur choisi le domaine "personne" lance l'appli avec run..
    Celle ci, charge tout ce qu'il faut avec un laps de temps non-négligeable ( se compte en secondes voire minutes)..
    Il change ensuite de domaine...qui donne les résultats appropriés...
    Si l'utilisateur revient sur le domaine "personne"...il faudrai que l'application ai gardé en mémoire les différents résultats, c'est à dire, qu'elle ne requestionne pas les servlets et affiche directement les données escomptées...

    Est ce réalisable sans Base de Données..? Ou est ce une pure utopie..?

    Je vous remercie!

    [edit] Peut être une mise en cache est possible..?
    Si tu places tes informations dans un objet et que t'y touche pas, c'est à dire que tu ne l'écrase pas. Ils seront toujours présent et toujours consultable. Sinon, il me semble qu'il existe SQLLite dedans.

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Février 2010
    Messages : 61
    Points : 37
    Points
    37
    Par défaut
    Oui mais, disons que j'enregistre les premiers résultats..dans un objet...
    Si je veux enregistrer d'autres résultats...je vais forcément toucher à l'objet et écraser ceux enregistrés...

  10. #10
    Expert éminent
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 494
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 494
    Points : 6 065
    Points
    6 065
    Par défaut
    Citation Envoyé par MrVentouse Voir le message
    Oui mais, disons que j'enregistre les premiers résultats..dans un objet...
    Si je veux enregistrer d'autres résultats...je vais forcément toucher à l'objet et écraser ceux enregistrés...
    Ha ha ha jeune apprentie tu ne connais pas la technique de la griffe du loup .
    collectionne tes objets. Tu places tes objets dans un tableau.
    Chaque index de ton tableau à ton objet et a chaque objet qui arrive tu le place tu incrémentes ton tableau. Ainsi tu peux transporter ta variable de type array partout ou tu le souhaite.
    Ton tableau devient en quelque sorte ta source de donnée.

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Février 2010
    Messages : 61
    Points : 37
    Points
    37
    Par défaut
    Citation Envoyé par berceker united Voir le message
    Ha ha ha jeune apprentie tu ne connais pas la technique de la griffe du loup .
    Alors d'abord : "Lol!"

    Ensuite...j'avais envisagé tout ça, le tableau et tout...mais alors
    Quand l'utilisateur va revenir sur "domaine" qu'il a visité, et donc où les résultats seront connus...
    Comment savoir s'il faut utiliser l'adresse basique (comme lors du premier passage) ou le tableau, et surtout à quel indice ..?

  12. #12
    Expert éminent
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 494
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 494
    Points : 6 065
    Points
    6 065
    Par défaut
    Citation Envoyé par MrVentouse Voir le message
    Alors d'abord : "Lol!"

    Ensuite...j'avais envisagé tout ça, le tableau et tout...mais alors
    Quand l'utilisateur va revenir sur "domaine" qu'il a visité, et donc où les résultats seront connus...
    Comment savoir s'il faut utiliser l'adresse basique (comme lors du premier passage) ou le tableau, et surtout à quel indice ..?
    En faite, il faut parcourir à chaque fois le tableau pour récupérer l'objet concerné en faisant une comparaison de attributs de l'objet avec l'url si l'url est un attribut de ton objet.
    Le souci avec le technique de la collection d'objet c'est qu'elle peut être gourmande en mémoire si c'est une grosse collection avec chaque objet énorme.

  13. #13
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Février 2010
    Messages : 61
    Points : 37
    Points
    37
    Par défaut
    Citation Envoyé par berceker united Voir le message
    En faite, il faut parcourir à chaque fois le tableau pour récupérer l'objet concerné en faisant une comparaison de attributs de l'objet avec l'url si l'url est un attribut de ton objet.
    Quitte à comparer les attributs de l'url à l'url elle même, celà prendra autant de temps de questionner l'url directement...
    De plus, l'url n'est spécifié nulle part dans les résultats...donc

    Citation Envoyé par berceker united Voir le message
    Le souci avec le technique de la collection d'objet c'est qu'elle peut être gourmande en mémoire si c'est une grosse collection avec chaque objet énorme.
    En l'occurence les résultats sont assez lourd (puisque long à charger)..donc s'il faut tous les stocker...(même si je doute qu'un utilisateur les stockent tous!)

  14. #14
    Membre éclairé
    Homme Profil pro
    Consultant Angular / Java J2EE
    Inscrit en
    Novembre 2008
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Consultant Angular / Java J2EE
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2008
    Messages : 545
    Points : 875
    Points
    875
    Par défaut
    Tu n'auras guère le choix je pense :
    Soit te trimbaler un/plusieurs tableau(x) de données, soit un utiliser une Db...
    Ou bien éventuellement utiliser un fichier externe (xml par exemple) disponible sur le server.

  15. #15
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 124
    Points : 156
    Points
    156
    Par défaut
    Pourquoi ne pas utiliser un objet Dictionary qui te servira de cache ?
    En clé de ton Dictionary tu mets ton nom de domaine.

    Ensuite c'est simple, quand l'utilisateur change de domaine, tu vérifies un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    if (dict[key] != null){
      return dict[key];
    }else{
      // Ici tu va charger tes données distantes et tu les mets dans ton dictionary
    }
    Si tu veux limiter le nombre de domaines que tu gardes en mémoire, tu peux coupler ce Dictionary avec une List dans laquelle tu conserves par exemple les noms des 5 derniers domaines visités. Si l'utilisateur choisit un domaine qui n'est pas dans la liste alors que la liste contient déjà 5 éléments, tu prends le premier nom de domaine de la liste (le plus ancien chargé donc) et tu va shooter la clé correspondante de ton Dictionary avant de charger et d'ajouter le nouveau domaine.

    Charles.

  16. #16
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Février 2010
    Messages : 61
    Points : 37
    Points
    37
    Par défaut
    Hello,

    Aprés plusieurs jours de tests du dictionary, je dois dire que la solution est intéressante...
    Mais je la trouve un peu "bancale" pour mon application, puisque a l'interieur des domaines, il faut vérifier d'autres facteurs etc...

    De plus, la compensation vis à vis des HTTPService (puisque c'est à ça que ça me sert...éviter de recharger des HTTPS)...marche moyennement...

    'Fin bon, je garde quand même l'idée
    Merci



    PS: ou alors c'est que je m'en sers trés mal, ce qui est une option à envisager!

  17. #17
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 124
    Points : 156
    Points
    156
    Par défaut
    Qu'entends-tu par 'autres facteurs' sur les domaines ?
    Rien ne t'empêche d'utiliser une clé de Dictionary un peu plus complexe que juste le nom de domaine pour affiner un peu. Genre "sousDomaineX-Critere1".

    Quant à la 'compensation' c'est pareil je ne vois pas de quoi tu parles ? De performance ? Dans le cas du Dictionary déjà tu ne sollicite pas ton serveur si l'entrée existe déjà. Par ailleurs, ta structure de données est déjà traitée. Bref, je ne vois pas comment tu peux être perdant, si ce n'est en charge mémoire coté client.

Discussions similaires

  1. Ranger des images sans BDD
    Par Mr_PHP59 dans le forum Langage
    Réponses: 3
    Dernier message: 26/10/2011, 17h48
  2. Garder en mémoire des données
    Par Roud9 dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 03/11/2010, 18h35
  3. Garder en mémoire des variables
    Par Mandjames dans le forum ASP.NET
    Réponses: 3
    Dernier message: 11/05/2009, 15h40
  4. garder en mémoire des valeurs postées
    Par boriskov dans le forum Langage
    Réponses: 1
    Dernier message: 21/08/2008, 11h43
  5. Réponses: 4
    Dernier message: 18/09/2007, 16h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo