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

C++ Discussion :

[Framework] comment faire discuter un exe C++ et un exe Java


Sujet :

C++

  1. #1
    Nouveau membre du Club
    Inscrit en
    Août 2003
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 55
    Points : 28
    Points
    28
    Par défaut [Framework] comment faire discuter un exe C++ et un exe Java
    Bonjour,
    je ne sais pas trop si c'est le meilleur endroit pour poser cette question, mais bon. Au pire on deplacera

    Voila mon probleme,
    je dois faire discuter un serveur C++ avec une application Java (RMI).
    De preference si on peut passer des Objets, comme en Com.

    Si vous avez des idées, voir même des liens sympa ou des exemples de codes, je ne serais pas contre.

    Merci d'avance

    Yann

  2. #2
    Membre habitué Avatar de BigNic
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    195
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 195
    Points : 154
    Points
    154
    Par défaut
    Qu'entends tu par communiquer ?
    à travers un réseau ? Ou 2 applis distinct qui tourne sur la même machine ?
    sur qu'elle type de machine ?

    Sinon pour ma part je ne vois que des solutions très "système" sans vrai possibilité de passage d'objet. Par exemple mémoire partagée + sérialisation des données de ta classes dans la shm et de l'autre coté reconstruction de la class équivaltente avec les données extraites dela shm. C'est assez rigide comme solution car ça t'oblige d'avoir une liste fini de classe C++ et JAVA "qui ce connaissent".
    Je sais aussi que dans ma boite on à une appli qui fait des appels de fonction C dans du code Java, mais je ne sais pas comment ça s'appelle, ni comment ça marche, ni c'est adapé au C++ (appelle sur des méthode d'instance de classe).

    je suis pas sur que ça t'avance beaucoup, mais bon....

  3. #3
    Nouveau membre du Club
    Inscrit en
    Août 2003
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 55
    Points : 28
    Points
    28
    Par défaut
    exemple de communication.
    Je recois sur mon serveur C++ via reseau une trame avec une info : "Ouvrir porte".
    Le probleme c'est que ce qui controle ma porte c'est une serveur Java.

    Ce que je voudrais c'est que mon serveur C++ dise a mon serveur Java : "Ouvre la Porte"

    Apres ca tourne sous du windows server 2000
    C++ VC6 Unicode en mode service
    Java JDK 1.4.2 sous JBuilder

    ensuite c'est clair que je prefererais un passage d'objet, je pense qu'il faut qu'il soit connu des deux côtés.

    Yann

  4. #4
    Membre averti Avatar de xxiemeciel
    Inscrit en
    Juin 2005
    Messages
    371
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 371
    Points : 352
    Points
    352
    Par défaut
    Salut,

    Le plus simple je pense serais d'utiliser un systeme standard de fichier de communication. Tu dialogues entre tes application JAVA et C++ par des fichiers XML par exemples.

    Ensuite chacune des tes applications auras son propres interpreteur du fichier XML.

    Ou bien si tu veux quelquechose de plus rapide utilise un system de numero connu des 2 applications, mais ca ne seras pas adaptable par contre.

    XXiemeciel
    XXiemeciel

  5. #5
    Nouveau membre du Club
    Inscrit en
    Août 2003
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 55
    Points : 28
    Points
    28
    Par défaut
    mais y a pas un truc un peu comme COM ?

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    394
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 394
    Points : 473
    Points
    473
    Par défaut
    Pour ce qui est de faire communiquer les deux applications, la meilleure solution reste d'utiliser une communication via socket. C'est assez standard, facilement portable beaucoup moins pénible que des solutions type 'système' comme les SHM ou les pipes nommés. Coté JAVA, il n'y a pas de développement à faire, les sockets font partie de l'API de base. Coté C++, il existe un tas de bibliothèques multiplateforme ou non.

    Le deuxième problème c'est de transmettre des objets d'un application à l'autre.
    La je vois plusieures solution, assez dépendante du contexte. La base commune, c'est que la connaissance de la forme sérialisée des données est connue des 2 applis.

    1/ Utiliser une description XML des objets, et utiliser une API de binding
    Le prinicpe: on défini le modèle de sérialisation de chaque objet en XML et on utilise
    un système automatique qui construit la représentation objet du document.
    Pour Java, cette solution est gratuite (cf. JAXB), en revanche je ne connais pas de solution gratuite pour C++.
    L'avantage, c'est principalement le peu de code à écrire, et la maintenabilité de l'ensemble.

    2/ Utiliser une description commune, et implanter manuellement la conversion de cette forme sérialisée de chaque côté (C++ et JAVA). C'est une version un peu dégradée de la solution précédente, qui requiert un poil plus de travail. Néanmoins, si les objets sont simple, c'est assez simple à mettre en place.

    3/ Construire une petite bibliothèque qui partant de la forme sérialisée d'un objet construit sa représentation en mémoire (à l'aide de bibliothèque de sérialisation existante), le tout en C++. Construire ensuite une classe type proxy en Java qui en utilisant JNI assurera l'interface entre cette bibliothèque et l'appli Java. L'appli C++ l'exploitera directement.

    4/ Sortir la grosse artillerie et utiliser CORBA. Enfin, la faut vraiment avoir de gros besoins, parce sinon c'est franchement overkill.

    Promis, c'est du vécu. Personnellement j'avais opté pour la soluce 3, mais jaxb n'éxistait pas à l'époque. Si tu veux plus d'info, on peut en parler en MP si tu le souhaites.

  7. #7
    Nouveau membre du Club
    Inscrit en
    Août 2003
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 55
    Points : 28
    Points
    28
    Par défaut
    merci
    oki je te mail

Discussions similaires

  1. Réponses: 4
    Dernier message: 15/03/2013, 21h56
  2. Réponses: 1
    Dernier message: 05/10/2006, 17h21
  3. Réponses: 9
    Dernier message: 07/08/2006, 15h06
  4. Dephi Business Object Framework comment faire ?
    Par phplive dans le forum Bases de données
    Réponses: 6
    Dernier message: 17/11/2004, 16h05
  5. comment faire fonctionner l'exe sur une autre machine
    Par brian79 dans le forum C++Builder
    Réponses: 8
    Dernier message: 28/05/2004, 14h00

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