GNT sans publicité, site mobile, fonctionnalitées exclusives...

Communication entre 2 applications .NET

Le
Gilles TOURREAU
Bonjour,

J'ai 2 applications que j'ai réalisé en .NET (App1 et App2).

Je voudrais piloter App1 via App2 (Un peu comme une application .NET
qui pilote Excel).

Existe-il un moyen de récupérer une instance d'une classe d'une autre
application .NET ?
Pour information, je peux modifier les codes sources de mes 2
applications si nécessaire

En vous remerciant par avance de vos lumières !

Cordialement

--
Gilles TOURREAU
Responsable Informatique
gilles.tourreau@pos.fr

Société P.O.S
Spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr
Lire les 10 réponses

Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Olivier
Le #12208191
Bonjour,

Les technologies COM devraient répondre au problème. Il faudra
modifier les 2 codes sources.
http://msdn.microsoft.com/library/d...s/csref/ht ml/vcwlkCOMInteropPart1CClientTutorial.asp

Olivier

On 24 jan, 11:49, Gilles TOURREAU
Bonjour,

J'ai 2 applications que j'ai réalisé en .NET (App1 et App2).

Je voudrais piloter App1 via App2 (Un peu comme une application .NET
qui pilote Excel).

Existe-il un moyen de récupérer une instance d'une classe d'une autre
application .NET ?
Pour information, je peux modifier les codes sources de mes 2
applications si nécessaire...

En vous remerciant par avance de vos lumières !

Cordialement

--
Gilles TOURREAU
Responsable Informatique


Société P.O.S
Spécialiste en motoculture depuis + de 30 ans !http://www.pos.fr


Patrick Philippot
Le #12208181
Gilles TOURREAU wrote:
J'ai 2 applications que j'ai réalisé en .NET (App1 et App2).

Je voudrais piloter App1 via App2 (Un peu comme une application .NET
qui pilote Excel).

Existe-il un moyen de récupérer une instance d'une classe d'une autre
application .NET ?



L'utilisation de COM n'est pas dans la philosophie .Net et devrait être
évitée sauf contrainte forte. Là où l'on parlait de COM dans le monde Win32,
on parle de .Net Remoting dans le monde .Net, voire de Web Services. Le
choix entre Web Services et .Net Remoting dépend de nombreux critères mais
pour une communication en local entre 2 applications, .Net Remoting fait
parfaitement l'affaire.

http://www.dotnet-tech.com/tutoriels/remoting/
http://www.c2i.fr/code.aspx?IDCodeX9

Vous pouvez également utiliser pour la communication entre les 2 applis, les
mécanismes d'IPC habituels: sockets, pipes,... Mais pour parler d'objet à
objet, .Net Remoting est mieux adapté.

--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr
Merlin
Le #12208071
> J'ai 2 applications que j'ai réalisé en .NET (App1 et App2).
Je voudrais piloter App1 via App2 (Un peu comme une application .NET qui
pilote Excel).



il faut faire du Remoting puisque les deux applis sont .Net c'est le
plus naturel. Si le pilotage doit pouvoir se faire aussi depuis des
softs non .net il faut alors préférer la technique des web service.

Maintenant il existe aussi des tas d'autres possibilités comme utiliser
les named pipes, ou une liaison tcp/ip.

--

///\3rL1n____
Michael Moreno
Le #12208051
La technologie Remoting mentionnee permet cela mais elle a les manques
suivants par rapport a COM :
- Sous DCOM si le second exe n'est pas lance, la creation d'un objet
lancera automatiquement l'exe. C'est tres pratique. La il va falloir
gerer le cas de qui lance l'exe, si c'est toi il faudra connaitre le
chemin de ce fichu exe, etc.
- sous DCOM la gestion des identites, cest a dire sous quel compte est
lance l'exe, est plus simple pour le cas mentionnee.
- sous DCOM on s'emmerde pas la vie si un port TCP/IP est deja pris par
une autre appli. Je sais qu'on peut mettre cela dans un fichier config
mais en pratique les fichiers config c'est vite la pagaille et on finit
par quasiment tout foutre dans une base de donnees => plus de dev. Le
choix d'une channel IPC est a envisager mais cela veut dire qu'il faut
absolument que les 2 exes soient toujours sur la meme machine.
- C'est infiniment plus lent que COM.
- + divers problemes que tu trouveras tres vite.

--
Michael
----
http://michael.moreno.free.fr/
http://port.cogolin.free.fr/
Gilles TOURREAU
Le #12208041
Le Mon, 29 Jan 2007 10:47:44 +0100, Michael Moreno

La technologie Remoting mentionnee permet cela mais elle a les manques
suivants par rapport a COM :
- Sous DCOM si le second exe n'est pas lance, la creation d'un objet
lancera automatiquement l'exe. C'est tres pratique. La il va falloir
gerer le cas de qui lance l'exe, si c'est toi il faudra connaitre le
chemin de ce fichu exe, etc.
- sous DCOM la gestion des identites, cest a dire sous quel compte est
lance l'exe, est plus simple pour le cas mentionnee.
- sous DCOM on s'emmerde pas la vie si un port TCP/IP est deja pris par
une autre appli. Je sais qu'on peut mettre cela dans un fichier config
mais en pratique les fichiers config c'est vite la pagaille et on finit
par quasiment tout foutre dans une base de donnees => plus de dev. Le
choix d'une channel IPC est a envisager mais cela veut dire qu'il faut
absolument que les 2 exes soient toujours sur la meme machine.
- C'est infiniment plus lent que COM.
- + divers problemes que tu trouveras tres vite.




Je vous remercie pour votre réponse (ainsi que pour les autres réponses
des autres personnes)...
Mais en fait je cherche quelque de très simple :

J'ai 2 applications .NET (En Forms pour être précis) qui sont executés en
local.
Il n'y aura pas de communication entre ces 2 applications via un réseau
quelconque...

L'application App1 se lance et créer une instance de la classe "App1Class".

L'application App2 se lance :
- Essaye de voir si l'application App1 est lancé (si pas lancé, message
d'insulte à l'utilisateur)
- Récupère l'instance App1Class qui a été crée par App1
- Utilise les méthodes public de App1Class...

Je cherche juste à faire ceci...

Je trouve que Remoting et le WebService demande trop de programmation
supplémentaire (sérialiser des objets...etc)

Par contre (là je n'y connais pas grand chose) le COM ne nécessite pas
aussi de "formater" les méthodes de façon à ce qu'elle puisse être appellé
depuis n'importe quel autre type d'application ? Ne faut'il pas en plus
ajouter "un proxy" pour appeler ce service ?

En vous remerciant par avance de vos lumières...

Cordialement

--
Gilles TOURREAU
Responsable Informatique


S.A.R.L. P.O.S
Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr
Publicité
Suivre les réponses
Poster une réponse
Anonyme