Communication entre des applications

Signaler
Messages postés
1
Date d'inscription
mardi 31 mai 2011
Statut
Membre
Dernière intervention
22 novembre 2011
-
Messages postés
3874
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
7 novembre 2014
-
bonsoir
mes amis nous nous intéressons au mécanisme DDE développé par Microsoft pour échanger des données entre des applications tournant dans un environnement Windows. Ceci est souvent nécessaire lorsqu’on veut accéder à une base donnée à partir d’une application client écrite en (VC, VC, JAVA, …). La méthode la plus simple est de passer par Excel. La première application accède à une page Excel pour écrire ou lire (Application client serveur DDE) et la deuxième application accède à la même page Excel pour récupérer les données chargées par la première application et en même temps elle envoie un accusé de réception à la première application lui indiquant que les données ont été récupérées. Cet accusé de réception peut être sous la forme d’une variable true False échangée entre les deux applications afin de synchroniser les échanges.
comment on va résoudre ce problème et merci.

2 réponses

Messages postés
570
Date d'inscription
jeudi 28 novembre 2002
Statut
Membre
Dernière intervention
18 janvier 2021
2
Etrange question contennt la réponse.Excel est un serveur DDE (DDEML).
Il suffit de lui "acrocher" un client.
Un exemple tout fait ne doit pas être très dure à trouver.
Messages postés
3874
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
7 novembre 2014
13
Bonjour,

Certains considèreraient certainement DDE comme une antiquité.
Lancer excel pour échanger des données entre deux applications, c'est quand même ultra moche (Performances déplorables, peu de portabilité...)

Bref, il existe à peu près 17 millions de méthodes pour échanger des données entre deux processus, et une autre que DDE serait probablement plus appropriée à votre cas.

Après, c'est sûr que si c'est pour échanger entre du java et du C ou C++, c'est plus chiant et sa limite les possibilités.
D'un côté java est plus ou moins prévu pour être portable et pas du tout lié à un système d'exploitation. Tout ce qui est communications inter process se fait via des usines à gaz style rmi ou un esb....
De l'autre le C peu exploiter toutes les api proposées par Windows (Mémoire partagées, pipes, messages, mutexs...).

Il est possible de passer par jni pour utiliser du C depuis le java. De cette manière, tu peux accéder à une shared memory gérer par une autre appli en C.

Il y a aussi des protocoles d'échanges standardisés style CORBA, ou les services web, qui sont censé gérer tous ces problèmes de communication d'un langage vers un autre.

Mais si c'est pour échanger 3 types de données et demi dans un format simple entre une appli C et une appli java, je te conseillerais vraiment de passer par de bête socket. Après un peu de réflexion pour définir ce qui doit transiter, tout se fera sans problème vu que les sockets sont très bien supportées en java comme en C. Les perfs seraient entre les mémoire partagées et les usines à gaz. Et c'est une méthode très éprouvée, notamment dans les entreprises (Exemple, serveur java et client vb6 tous les deux capable d'interrogé un serveur C, qui peut d'ailleurs se trouver sur une autre machine).