Objet unique [Résolu]

Signaler
Messages postés
1107
Date d'inscription
mercredi 15 juin 2011
Statut
Membre
Dernière intervention
10 juillet 2018
-
Messages postés
1107
Date d'inscription
mercredi 15 juin 2011
Statut
Membre
Dernière intervention
10 juillet 2018
-
Bonjour,

Je suis en .NET 1.1
Je me suis basé sur le snipper singleton de Nikoui mais ca ne marche pas.

Ce que je veux, en gros, c'est un singleton multiprocess.

J'ai créé une DLL qui fait plein d'opérations (scrutation du réseau, lecture d'un fichier de conf .....).
J'aimerais lancer plusieurs IHM, et je voudrais n'avoir qu'une seule instance de ma DLL pour avoir les memes valeurs dans toutes les IHM.
Autre problème, mes IHM ne sont pas obligatoirement de mêmes type. Je m'explique, dans l'idéal (vu que je scrute un réseau) je voudrais avoir mon IHM (WinForm) et aussi une réprésentation de mon réseau dans l'exporateur de Windows (avec les Shell Extension). Donc 2 IHM qui affichent les mêmes données en temps réel.
J'ai choisi MVC (Model View Controller) pour résoudre la problématique d'affichage des données en temps réel sur plusieurs IHM. Le Modèle et le Contrôleur étant dans la DLL.

Donc comment faire pour que toutes les IHM voient le même objet sans qu'il soit dupliqué pour chaque IHM ? Et bien sûre, est-ce possible ?

Merci.

6 réponses

Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
47
Salut

Je pense que tu peux te tourner vers le Remoting

Petite piste :
http://www.dotnet-tech.com/tutoriels/remoting/

Mx
MVP C# 
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
86
Salut,

Tu trouveras ici des informations sur les méthode d'IPC disponibles sous Windows : Interprocess Communications
Pour le firewall, tu devrais limiter les dégats en ne demandant l'écoute des connexions entrantes que sur le localhost, la plupart des firewalls logiciels ont dû prendre en compte le fait que beaucoup d'applications utilisent ce mode d'IPC.

/*
coq
MVP Visual C#
CoqBlog
*/
Messages postés
1107
Date d'inscription
mercredi 15 juin 2011
Statut
Membre
Dernière intervention
10 juillet 2018
4
Ok merci, je vais explorer cette piste.
J'avais regarde .NET Remoting pour d'autres choses. C'est du client/serveur, ce qui veut dire, dans mon cas, que la DLL est le serveur, il faut donc que je la transforme en EXE ?
Et si je ne veux pas que mon réseau soit scruté sans IHM, il faut que je lance et que j'arrête le serveur à partir des IHM.
Je me trompe ?
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
47
Oui, il va falloir avoir un executable qui tourne en serveur et qui utilise ta dll.
Ou alors faire qu'une des tes 2 IHMs embarque le serveur, et l'autre s'y connecte.
Ou encore, un service qui demarre avec une de tes 2 applications.

C'est a toi de voir ce qui te conviendrait le mieux.

Mx
MVP C# 
Messages postés
1107
Date d'inscription
mercredi 15 juin 2011
Statut
Membre
Dernière intervention
10 juillet 2018
4
Dernière petite question et pas des moindres qui peut remettre en question le reste.
C'est une application grand public et se pose le problème de Mme Michu qui va installer mon soft.
Mon chef veut éviter l'ouvert de port ethernet(tpc ou udp) pour éviter tout problème avec les firewall, en gros Mme Michu bloque le port (parce son mari lui a dit de ne rien autoriser) et hop mon appli ne marche plus .
Dans mon cas tout est en local sur un PC, et dans l'hypothèse que ma DLL soit dans le futur un EXE. A part .NET Remoting, comment peut-on faire de la communication inter-processus sur une même machine sans ouvrir de port. Est ce possible ?
Sinon, je vais essayer de faire plier mon chef et lui dire que c'est pas possible et qu'il faut ouvrir un port.

(Excusez mon ignorance )

Merci.
Messages postés
1107
Date d'inscription
mercredi 15 juin 2011
Statut
Membre
Dernière intervention
10 juillet 2018
4
Merci pour votre aide.

C'est vai que Google retourve des exemples de comm inter process à la pelle (mais sous Linux).