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 :

[RPC] Appels distants : remplacer des objets COM


Sujet :

C++

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 103
    Points : 48
    Points
    48
    Par défaut [RPC] Appels distants : remplacer des objets COM
    Bonjour à tous,

    je vais tenter d'être le plus clair possible, bien que le problème ne soit pas simple à expliquer (je n'ai pas encore toutes les infos concernant le projet...bref !).

    Je viens d'être intégré à un gros projet qui utilise des objets COM (Component Object Model) pour réaliser les appels de procédures distantes, et ma mission est de virer tous les objets COM et de les remplacer par quelque chose qui rende le projet indépendant de l'OS...

    En effet, avec les objets COM, le projet ne pourrait pas se passer de la base de registre pour fonctionner.

    Néanmoins, le but final de ma mission étant de rendre le projet "portable" (comme "portable_firefox" ou "portable_openOffice" par exemple), je dois trouver LA solution d'appel de procédure distante adéquate. J'ai jeté un oeil sur SOAP et XML-RPC, mais j'ai des doutes quand au fait qu'ils correspondent réellement à ce que je cherche.

    Pouvez-vous me dire quels autres techniques d'appels de procédure distante je pourrai envisager (le projet est un projet VisualC++) ?

    Sinon, serait-ce possible, à votre avis, de développer un module qui fasse le même travail que les objets COM, mais sans passer par la base de registre (en travaillant dans le répertoire source de l'application, avec des fichiers XML, par exemple) ?

    Je ne sais pas si je suis très clair...

    Mais merci d'avance (rien que pour avoir lu ce message).

    @ bientôt !

  2. #2
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 279
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 279
    Points : 11 015
    Points
    11 015
    Par défaut
    CORBA ? La philosophie est un peu différente, mais au moins on retrouve le côté appel distant sur un objet (et pas une fonction).
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  3. #3
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 752
    Points : 10 682
    Points
    10 682
    Billets dans le blog
    3
    Par défaut
    COM a été porté sous UNIX (mainsoft...), voir:
    http://www.developpez.net/forums/viewtopic.php?t=300013
    Ca peut être intéressant.
    Pour info, les RPC Windows/Linux ne sont pas compatibles.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 103
    Points : 48
    Points
    48
    Par défaut
    suite à vos réponses, je me suis renseigné sur CORBA.

    Il semblerait que cela serait une solution envisageable, mais son implémentation va être très lourde (je rappel que mon but est de remplacer les COM par autre chose). De plus, je n'avais pas mentionné CORBA dans mon premier post car je pensais que c'était une solution vieillotte (un peu "old school") et peut être un peu dépassée, c'est pourquoi je suis à la recherche de nouvelles techniques faisant le même travail.

    Néanmoins, CORBA a un énorme avantage : il est indépendant de la plate-forme...chose que je recherche aussi....je vais donc continuer mes recherches sur CORBA.

    Mais si vous connaissez encore une autre solution (autre que XML-RPC, SOAP, ou CORBA) n'hésitez pas à m'en faire part



    En ce qui concerne "MainSoft"...c'est hors-sujet car mon but n'est pas de faire fonctionner mes objets COM sous Unix

  5. #5
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 752
    Points : 10 682
    Points
    10 682
    Billets dans le blog
    3
    Par défaut
    Je sais pas si tu as regardé, mais il me semble que Open Office a un espèce de COM maison. Je me demande même si c'est pas basé sur COM sous Windows.

    CORBA, RPC, les web services etc... c'est pour des appels inter-machines, cross platform.
    Tu as besoin de cette fonctionnalité, ou ça se limite juste à réutiliser des composants logiciels sur une même machine ?

  6. #6
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 279
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 279
    Points : 11 015
    Points
    11 015
    Par défaut
    CORBA n'est pas plus vieillot que cela. Par contre, cela va effectivement être lourd. Très lourd. Il peut valoir le coût d'investir dans une formation si vous n'avez pas cette expérience en interne.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 103
    Points : 48
    Points
    48
    Par défaut
    En effet, j'ai besoin de faire des appels entre machines différentes (malheureusement )...

    En ce qui concerne CORBA, une formation n'est pas envisageable, faute de temps...J'ai une deadline fixée à dans 5 mois et beaucoup d'autres choses à faire avant ça (notamment remplacer la base de registre par des fichiers XML sans perturber le fonctionnement du projet).

    Bon, je sais que CORBA serait le top du top, mais sachant que j'ai peu de temps, je devrais peut-être me tourner plutôt vers SOAP, non ?

    Quelles seraient les différences majeures ? Serait-ce plus au niveau des performances ou bien de la sécurité ? N'y aurait-il pas des problèmes de firewall qui viendraient avec SOAP (vu que cela utilise le protocole HTTP) ?

    Bref, tant de questions auxquelles je ne peux répondre pour le moment !!!


    Tiens d'ailleurs, faut que je me renseigne sur le fonctionnement d'Open Office aussi, du coup

    Sur ce, bonne soirée à tous, et merci encore pour vos réponses. Ca fait chaud au coeur de voir qu'on est pas tout seul

  8. #8
    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
    Est-ce que tu es vraiment dans une architecture répartie, ou bien plutôt client serveur ?
    Les différents composants s'échange-t-il des données simples où complexes ?

  9. #9
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 279
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 279
    Points : 11 015
    Points
    11 015
    Par défaut
    Citation Envoyé par pataguillon
    En ce qui concerne CORBA, une formation n'est pas envisageable, faute de temps...
    Ceci est un faux argument. Etrangement répandu de surcroit. Tu perdras moins de temps avec une formation, même d'une semaine, que si tu te jetais à l'eau avec trois malheureux bouquins, aussi excellents soient-ils. Maintenant faut-il encore que cela soit la solution retenue.
    Je sais avoir perdu des semaines entières avec le mélange CORBA + C++, et je pense qu'il m'en reste à perdre -- CORBA et COM gérant assez différemment les durées de vie des divers objets.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 103
    Points : 48
    Points
    48
    Par défaut
    Citation Envoyé par VoidSeer
    Est-ce que tu es vraiment dans une architecture répartie, ou bien plutôt client serveur ?
    Les différents composants s'échange-t-il des données simples où complexes ?
    Il s'agit d'une architecture composée de multiples clients/serveurs

    Je n'ai pas d'infos sur les données échangées, actuellement.

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 103
    Points : 48
    Points
    48
    Par défaut
    Citation Envoyé par Luc Hermitte
    Citation Envoyé par pataguillon
    En ce qui concerne CORBA, une formation n'est pas envisageable, faute de temps...
    Ceci est un faux argument. Etrangement répandu de surcroit. Tu perdras moins de temps avec une formation, même d'une semaine, que si tu te jetais à l'eau avec trois malheureux bouquins, aussi excellents soient-ils. Maintenant faut-il encore que cela soit la solution retenue.
    Je sais avoir perdu des semaines entières avec le mélange CORBA + C++, et je pense qu'il m'en reste à perdre -- CORBA et COM gérant assez différemment les durées de vie des divers objets.
    Evidemment qu'une formation me faciliterait les choses, mais une formation ce n'est pas gratuit et je me vois mal demander une formation alors que cela fait moins d'un mois que je suis dans l'entreprise

    Non, je pense qu'il va me falloir mettre les mains dans le cambouis, quitte à ce que j'y passe plus de temps.

    Mais oui, je suis d'accord qu'une formation serait l'idéal

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 103
    Points : 48
    Points
    48
    Par défaut
    En me renseignant sur le contenu de la version portable d'OpenOffice (OpenOfficeForU3), j'ai découvert qu'ils utilisaient des objets "XPCOM"...

    Apparemment, XPCOM est techno similaire à COM développée par l'équipe de Mozilla : http://www.mozilla.org/projects/xpcom/

    Cela m'a l'air pas mal...vous en pensez quoi ?

    Cela serait peut-être plus simple de passer de COM à XPCOM, que de passer de COM à CORBA ou SOAP, non ?


    D'ailleurs, j'ai vu un truc pas génial concernant SOAP : toutes les données étant transmises en XML, on peut tout lire...à moins de crypter les données du XML, bref.

  13. #13
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 752
    Points : 10 682
    Points
    10 682
    Billets dans le blog
    3
    Par défaut
    Citation Envoyé par pataguillon
    Bon, je sais que CORBA serait le top du top, mais sachant que j'ai peu de temps, je devrais peut-être me tourner plutôt vers SOAP, non ?
    je crois justement que c'est une raison du succès des web services sur DCOM/CORBA, car ça transite par HTTP et donc c'est beaucoup plus facile à déployer que les autres. Par contre c'est en texte, et donc il faut prendre les perfs en compte.

    Pour XPCOM, je crois que c'est ça qui utilise COM sous Windows (à vérifier). Mais je te fais remarquer que c'est pas COM qu'il te faut, mais DCOM...

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 103
    Points : 48
    Points
    48
    Par défaut
    Citation Envoyé par Aurelien.Regat-Barrel
    Pour XPCOM, je crois que c'est ça qui utilise COM sous Windows (à vérifier). Mais je te fais remarquer que c'est pas COM qu'il te faut, mais DCOM...
    Evidemment que c'est de DCOM dont je parle....excusez mon imprécision à ce propos.

    En ce qui concerne XPCOM, je me suis un peu trompé car ce n'est pas ça qui permet de remplacer DCOM (c'est son nom qui m'a induit en erreur)...néanmoins, cela m'a permis de découvrir XPFE, le framework développé par Mozilla

  15. #15
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Points : 16 213
    Points
    16 213
    Par défaut
    Comme ça n'a pas encore été mentionné, je cite le Remoting.NET, qui impose de programmer en .NET (ce qui se marie mieux avec le C++ depuis le C++/CLI). Ca existe sous windows, et il me semble qu'un port de .NET nommé Mono existe sous linux(/unix ?) et je crois (à valider) que la partie Remoting fait partie des choses portées.
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  16. #16
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 103
    Points : 48
    Points
    48
    Par défaut
    Citation Envoyé par JolyLoic
    Comme ça n'a pas encore été mentionné, je cite le Remoting.NET, qui impose de programmer en .NET (ce qui se marie mieux avec le C++ depuis le C++/CLI). Ca existe sous windows, et il me semble qu'un port de .NET nommé Mono existe sous linux(/unix ?) et je crois (à valider) que la partie Remoting fait partie des choses portées.
    Ca m'intéresse, mais je n'arrive pas à savoir précisément si ce Remoting.NET est bien indépendant du système d'exploitation...est-ce qu'il utilise simplement des DLL (pour pouvoir fonctionner sur la clé usb) ?

  17. #17
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 752
    Points : 10 682
    Points
    10 682
    Billets dans le blog
    3
    Par défaut
    C'est du .Net donc sous Windows le framework doit être installé, ce qui n'est pas forcément le cas.

  18. #18
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 103
    Points : 48
    Points
    48
    Par défaut
    Citation Envoyé par Aurelien.Regat-Barrel
    C'est du .Net donc sous Windows le framework doit être installé, ce qui n'est pas forcément le cas.
    Donc on ne peut pas embarquer ça sur une clé usb et utiliser l'appli n'importe où...donc ça ne me conviendra pas.

    Pour l'instant, ma solution préférée est XML-RPC (version SOAP, ou bien à la sauce Mozilla.org). J'aurais juste à crypter mes données avant de les transmettre car n'importe qui peut intercepter du xml et le lire.

  19. #19
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 103
    Points : 48
    Points
    48
    Par défaut
    Me revoilà !

    Bon, bah niveau performances, il s'avère que toutes les solutions de RPC qui passent par HTTP seront trop lentes, à priori...donc je vais devoir laisser tomber mon favori : XML-RPC.

    C'est ennuyeux car cela aurait été le plus simple à mettre en oeuvre.

    Là, j'ai jeté un oeil sur ICE, qui semblerait au moins aussi performant que CORBA mais en étant plus simple...mais bon, rien n'ai moins sur !

    Citation Envoyé par Aurelien.Regat-Barrel
    CORBA, RPC, les web services etc... c'est pour des appels inter-machines, cross platform.
    Tu as besoin de cette fonctionnalité, ou ça se limite juste à réutiliser des composants logiciels sur une même machine ?
    Je serais intéressé de savoir ce que tu avais derrière la tête en me posant cette question...

    Si je t'avais dit que je ne fais pas d'appels inter-machines, tu m'aurais proposé quoi ? :

  20. #20
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 752
    Points : 10 682
    Points
    10 682
    Billets dans le blog
    3
    Par défaut
    Au truc d'Open Office. Je découvre que ça fonctionne aussi par le reseau:
    http://udk.openoffice.org/
    Mais je sais pas du tout ce que ça vaut.

Discussions similaires

  1. Réponses: 6
    Dernier message: 08/07/2009, 21h38
  2. COMate - Contrôle des objets COM
    Par comtois dans le forum PureBasic
    Réponses: 4
    Dernier message: 28/04/2009, 10h50
  3. Utilisation des objets COM
    Par jdelges dans le forum Général Dotnet
    Réponses: 1
    Dernier message: 26/01/2007, 23h52
  4. Comment débuguer des objets COM ?
    Par WebPac dans le forum Delphi
    Réponses: 5
    Dernier message: 14/10/2006, 19h28
  5. debugguer des objets COM
    Par alex181 dans le forum Delphi
    Réponses: 2
    Dernier message: 22/06/2006, 18h32

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