Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Conserver une variable en mémoire pour toute l'application ??

9 réponses
Avatar
LB
Bonjour,

Mon application est divisé en plusieurs parties (partie client et partie
serveur) et je dois ajouter une variable
dont je devrais accéder à tout moment autant du côté client que du côté
serveur. Je suis débutante en vbnet et j'aimerais
savoir comment je peux m'y prendre... Est-il possible d'avoir une variable
globale ou bien une variable en mémoire
qui est conservé par l'application sans que j'ai toujours à la passer en
paramètres ce qui n'aurait aucun bon sens...

Merci de m'aider.

9 réponses

Avatar
Patrice
Explique plutôt ce que tu veux faire sur le plan logique et quelqu'un aura
peut-être une suggestion...

Une variable est au mieux globale à un programme. Il faudra la transmettre.
--
Patrice

"LB" a écrit dans le message de
news:
Bonjour,

Mon application est divisé en plusieurs parties (partie client et partie
serveur) et je dois ajouter une variable
dont je devrais accéder à tout moment autant du côté client que du côté
serveur. Je suis débutante en vbnet et j'aimerais
savoir comment je peux m'y prendre... Est-il possible d'avoir une variable
globale ou bien une variable en mémoire
qui est conservé par l'application sans que j'ai toujours à la passer en
paramètres ce qui n'aurait aucun bon sens...

Merci de m'aider.




Avatar
LB
J'ai plusieurs fonctionnalités coté client qui font appels à diverses
fonctions d'un service Web qui lui même
appel diverses DLLs qui elles même appeles d'autres DLLS, etc.... C'est une
très grosse application.

Donc,

MENU -> Pages - > Services Web -> Dlls -> Dlls, etc....

À partir du menu principal, j'ai une variable boolean que je dois lire à
divers endroits autant du coté client (menu et pages) que du coté
du serveur (Dlls appelés par le service WEB).

Je ne peux pas passer cette variable en paramètres à chacune des fonctions
car ca n'aurait pas d'allure, c'est trop gros et trop compliqué.
Je veux donc une variable que je vais conserver en mémoire pour la durée de
vie de l'application et que je serai en mesure de lire à tout
moment. J' avais pensé à APPDOMAIN, mais lorsque je traverse dans mon
service Web, je la perd...

J'espère que c'est plus clair...


"Patrice" a écrit dans le message de news:

Explique plutôt ce que tu veux faire sur le plan logique et quelqu'un aura
peut-être une suggestion...

Une variable est au mieux globale à un programme. Il faudra la
transmettre.
--
Patrice

"LB" a écrit dans le message de
news:
Bonjour,

Mon application est divisé en plusieurs parties (partie client et partie
serveur) et je dois ajouter une variable
dont je devrais accéder à tout moment autant du côté client que du côté
serveur. Je suis débutante en vbnet et j'aimerais
savoir comment je peux m'y prendre... Est-il possible d'avoir une
variable
globale ou bien une variable en mémoire
qui est conservé par l'application sans que j'ai toujours à la passer en
paramètres ce qui n'aurait aucun bon sens...

Merci de m'aider.








Avatar
Francois Muller
Bonsoir

"LB" a écrit dans le message de news:

J'ai plusieurs fonctionnalités coté client qui font appels à diverses
fonctions d'un service Web qui lui même
appel diverses DLLs qui elles même appeles d'autres DLLS, etc.... C'est
une très grosse application.




Il n'est pas rare de devoir utiliser une variable globale. Les variables
associées à l'objet Application remplissent parfaitement cet office.

Application("MyGlobalVariable") = Value

C'est accessible de partout.

Un conseil : si tu as beaucoup d'élément de ce type, (ce qui ne serait pas
très normal sur un plan conceptuel), crée une classe dans le style

Class MyGlobalClass
Var1 as String
......
VarN as string
end Class

Instancie la, et stocke l'instanciation au niveau de Application :

MyGlobalObject as MyGlobalClass
MyGlobalObject = new MyGlobalClass()
MyGlobalObject.Var1 = "GlobalInfo1"
...
Application("MyGlobalObject") = MyGlobalObject

En espérant que cela puisse t'aider

F.
Avatar
Kawaman
Bonjour.
Une petite question sur le sujet, on en sait jamais assez... par contre
ca n'a pas trop de rapport avec la question originale.
En lisant de la doc j'ai survolé des types d'IPC, les fichiers mappés ou
la memoire partagee. Avec ce genre de trucs on peut partager des
informations entre plusieurs processus non?

Patrice a écrit :
Explique plutôt ce que tu veux faire sur le plan logique et quelqu'un aura
peut-être une suggestion...

Une variable est au mieux globale à un programme. Il faudra la transmettre.


Avatar
Patrice
Oui et quand et à quelle fréquence change la valeur de cette variable ? A
quoi sert elle ?

Si elle ne change pas :
- il suffit de la lire une fois pour toute, chacun à sa variable et elles
ont la même valeur

Si le client la change :
- il suffit d'appeler une fonction permettant de notifier le serveur de ce
changement

Si c'est le serveur :
- j'imagine que le serveur change la valeur suite à un appel du client. Dans
ce cas, il serait peut-être possible de la retourner dans les résultats à
chaque fois que cet appel est susceptible de l'avoir changé. Sinon c'est
sans doute plus difficile (web service dans l'autre sens ce qui est je crois
possible même sans IIS ?)




--

"LB" a écrit dans le message de
news:
J'ai plusieurs fonctionnalités coté client qui font appels à diverses
fonctions d'un service Web qui lui même
appel diverses DLLs qui elles même appeles d'autres DLLS, etc.... C'est


une
très grosse application.

Donc,

MENU -> Pages - > Services Web -> Dlls -> Dlls, etc....

À partir du menu principal, j'ai une variable boolean que je dois lire à
divers endroits autant du coté client (menu et pages) que du coté
du serveur (Dlls appelés par le service WEB).

Je ne peux pas passer cette variable en paramètres à chacune des fonctions
car ca n'aurait pas d'allure, c'est trop gros et trop compliqué.
Je veux donc une variable que je vais conserver en mémoire pour la durée


de
vie de l'application et que je serai en mesure de lire à tout
moment. J' avais pensé à APPDOMAIN, mais lorsque je traverse dans mon
service Web, je la perd...

J'espère que c'est plus clair...


"Patrice" a écrit dans le message de news:

> Explique plutôt ce que tu veux faire sur le plan logique et quelqu'un


aura
> peut-être une suggestion...
>
> Une variable est au mieux globale à un programme. Il faudra la
> transmettre.
> --
> Patrice
>
> "LB" a écrit dans le message de
> news:
>> Bonjour,
>>
>> Mon application est divisé en plusieurs parties (partie client et


partie
>> serveur) et je dois ajouter une variable
>> dont je devrais accéder à tout moment autant du côté client que du côté
>> serveur. Je suis débutante en vbnet et j'aimerais
>> savoir comment je peux m'y prendre... Est-il possible d'avoir une
>> variable
>> globale ou bien une variable en mémoire
>> qui est conservé par l'application sans que j'ai toujours à la passer


en
>> paramètres ce qui n'aurait aucun bon sens...
>>
>> Merci de m'aider.
>>
>>
>
>




Avatar
Francois Muller
"Kawaman" a écrit dans le message de news:
432a7cf1$0$14848$

Une petite question sur le sujet, on en sait jamais assez... par contre ca
n'a pas trop de rapport avec la question originale.
En lisant de la doc j'ai survolé des types d'IPC, les fichiers mappés ou
la memoire partagee. Avec ce genre de trucs on peut partager des
informations entre plusieurs processus non?



Il existe en gros quatre mécanismes principaux pour partager des infos entre
processus, que ce soit en local ou a distance :
- le RPC (le SOAP peut être considéré comme une implémentation particulière
du RPC)
- les "Pipes"
- les "MailSlots"
- les "File Mappings"

Chacun possède ses avantages et inconvénients.

Dans sa description, il y a quelque chose qui me choque, c'est sa notion de
variable partagée entre client et serveur, ce qui est un non-sens
conceptuel.
(dans ma réponse supra, j'avais zappé ce point là : je ne m'en suis aperçu
que après)

F.
Avatar
Patrice
Je crois qu'ici c'est sur deux machines différentes. Après même peut-être
des fichiers mappés (si utilisables à partir de plusieurs machines ce que
j'ignore) "simuleraient" au mieux la présence en mémoire de valeurs
identiques sur chacune des deux machines (comme par exemple le fournisseur
SQL ou Service Windows qui permet de faire voir les "mêmes" variables de
session sur plusieurs machines).

Pour revenir à la question, je cherche à comprendre le besoin pour essayer
de suggérer la solution la plus simple...

--
Patrice

"Kawaman" a écrit dans le message de
news:432a7cf1$0$14848$
Bonjour.
Une petite question sur le sujet, on en sait jamais assez... par contre
ca n'a pas trop de rapport avec la question originale.
En lisant de la doc j'ai survolé des types d'IPC, les fichiers mappés ou
la memoire partagee. Avec ce genre de trucs on peut partager des
informations entre plusieurs processus non?

Patrice a écrit :
> Explique plutôt ce que tu veux faire sur le plan logique et quelqu'un


aura
> peut-être une suggestion...
>
> Une variable est au mieux globale à un programme. Il faudra la


transmettre.
Avatar
Francois Muller
"Patrice" a écrit dans le message de news:

Je crois qu'ici c'est sur deux machines différentes. Après même peut-être
des fichiers mappés (si utilisables à partir de plusieurs machines ce que
j'ignore)



Non, le fileMapping n'est pas utilisable pour cela.

Pour revenir à la question, je cherche à comprendre le besoin pour essayer
de suggérer la solution la plus simple...



Idem.

F.
Avatar
PetitTrot
"Francois Muller" wrote in message
news:%

"Kawaman" a écrit dans le message de news:
432a7cf1$0$14848$

> Une petite question sur le sujet, on en sait jamais assez... par contre


ca
> n'a pas trop de rapport avec la question originale.
> En lisant de la doc j'ai survolé des types d'IPC, les fichiers mappés ou
> la memoire partagee. Avec ce genre de trucs on peut partager des
> informations entre plusieurs processus non?

Il existe en gros quatre mécanismes principaux pour partager des infos


entre
processus, que ce soit en local ou a distance :
- le RPC (le SOAP peut être considéré comme une implémentation


particulière
du RPC)
- les "Pipes"
- les "MailSlots"
- les "File Mappings"

Chacun possède ses avantages et inconvénients.

Dans sa description, il y a quelque chose qui me choque, c'est sa notion


de
variable partagée entre client et serveur, ce qui est un non-sens
conceptuel.
(dans ma réponse supra, j'avais zappé ce point là : je ne m'en suis aperçu
que après)

F.



C'est bien votre information sur les 4 mécanismes. A partir de ça j'ai
trouvé
l'information suivante:

Interprocess Communications

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/ipc/base/interprocess_communications.asp