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 :

Application distribué pour traitement d'images


Sujet :

C++

  1. #1
    Membre habitué Avatar de sylvain.cool
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2006
    Messages
    242
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2006
    Messages : 242
    Points : 158
    Points
    158
    Par défaut Application distribué pour traitement d'images
    Bonjour,

    Je suis actuellement en stage et je dois développer une application distribuée. Cette application doit faire du traitement d'image.

    Dans ma boite, il existe une plateforme permettant à des techniciens d'utiliser de traiter des photos numériques. Comme ils utilisent des PC de bureautique, les calculs sont assez lents. Le but est donc de déplacer le calcul sur des PC plus puissants via le réseau.
    Le problème réside aussi dans le fait que je ne connais pas à l'avance mes serveurs. Je m'explique. J'ai potentiellement 3 PC qui peuvent accueillir le calcul. Mais seul ceux qui ne sont pas déjà utilisé peuvent vraiment calculer. Donc j'ai potentiellement 3 même objets sur 3 PC différents. Et ca je ne sais pas comment le gérer.

    On travaille sous Windows XP et en C++.

    Après quelques recherches, je m'oriente sur plusieurs pistes:
    - Web services
    - DCOM
    - CORBA
    - Ice

    Le problème, c'est que je n'arrive pas à faire trop la différence entre toutes ces solutions et à en choisir une.

    J'ai lu que les Web services étaient assez chiant à mettre en place. Surtout que je ne suis pas familier du XML.
    Pour CORBA, n'est-ce pas compliquer de faire passer des images allant jusqu'à 40Mo?
    Ice à l'air pas mal, mais personne ne l'utilise.
    J'ai pas trouvé d'infos précisent sur DCOM.

    Si quelqu'un a un avis ou des pistes à suivre, j'en suis friand.

    Merci.

  2. #2
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    DCOM est porté par Microsoft
    J'aurai tendence à dire que Corba commence à être un peu vieillot
    Pour avoir utilisé XML et Web services, c'est très souple
    Ice, je connais pas

    Je pense qu'aucune de ces techno n'est simple à mettre en oeuvre et qu'il va falloir d'abord que tu te passes du temps à faire un framework bien bien pensé par rapport à ton besoin. Une fois que cela sera fait, cela ne devrait plus poser de problèmes.

    Mon choix (mais c'est personnel et je ne connais pas trop ton contexte)
    1/ XML et Web services
    2/ DCOM
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  3. #3
    Membre habitué Avatar de sylvain.cool
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2006
    Messages
    242
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2006
    Messages : 242
    Points : 158
    Points
    158
    Par défaut
    Après d'autres recherche, j'ai écarté DCOM. J'ai lu sur internet que ce n'était développable qu'avec VC++ or je travaille avec c++builder.
    La version Web Service ne m'attire pas trop, je connais pas trop le XML. Mais bon quand faut y aller...
    Ice est un dérivé de CORBA, créé par des boss de CORBA, mais en simplifié et beaucoup plus jeune. Il faut encore que je me documente dessus.
    Je continue mes recherches et je posterai si j'ai du nouveau. N'hesitez pas si vous en savez plus.
    Merci pour ta réponse.

  4. #4
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Citation Envoyé par sylvain.cool Voir le message
    Après d'autres recherche, j'ai écarté DCOM. J'ai lu sur internet que ce n'était développable qu'avec VC++ or je travaille avec c++builder.
    J'ai des doutes, là... De GROS doutes...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Membre habitué Avatar de sylvain.cool
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2006
    Messages
    242
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2006
    Messages : 242
    Points : 158
    Points
    158
    Par défaut
    C'est possible que ce que j'ai lu était faux.
    Ça vient d'un ppt fait un prof d'info... je pensais que c'était une bonne source... mais pas sur.
    Par contre je ne trouve aucune infos sur DCOM.
    DCOM c'est pas un librairie, ni un outil.... enfin la encore je crois pas.
    Comment faire pour développer de çà? J'arrive pas trop à comprendre.

  6. #6
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    DCOM est principalement une extension de COM.
    COM lui-même est un standard de Microsoft.

    Il me semble qu'à partir du moment où tu peux développer un composant COM et le marshalling qui va avec, tu peux:
    • En faire un programme exécutable plutôt qu'une bibliothèque,
    • Le régler pour l'utiliser sur un autre poste plutôt qu'en local.


    Avec .Net, il est assez facile de faire un composant COM (il suffit de faire un programme "COM-Visible"). Mais pour l'utiliser en mode distant, je ne sais plus trop ce qu'il faut faire exactement. Mais ça doit se configurer assez facilement en utilisant dcomcnfg.exe...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  7. #7
    Membre habitué Avatar de sylvain.cool
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2006
    Messages
    242
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2006
    Messages : 242
    Points : 158
    Points
    158
    Par défaut
    Question à laquelle je n'ai pas trouvé de réponse :

    Peut-on avec CORBA ou DCOM transporté des Objets complexe (des implementations de classe de mon cru)?

    Ou peut-on simplement passer des types classiques comme des int ou des string?

  8. #8
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    À ma connaissance, on ne peut pas transférer un objet dont la classe est chez toi en CORBA ou COM (il faudrait transférer toute la DLL, en supposant qu'elle soit compatible, pour que le destinataire puisse en faire quoi que ce soit. Java RMI sait faire ça).
    Par contre, tu peux envoyer une référence distante vers un objet à toi (mais donc, les méthodes appelées depuis le poste distant s'exécuteront chez toi, et ton poste retournera les résultats au poste distant)...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  9. #9
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Exemple
    Code pseudo, interfaces : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    interface IObjetServeur
    {
    	virtual int UneMethodeServeur(IObjetClient*, int);
    }
    interface IObjetClient
    {
    	virtual int UneMethodeClient(void);
    }
    Code pseudo, client : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    class MonObjetClient : IObjetClient
    {
    	virtual int UneMethodeClient(void)
    	{
    		return 10;
    	}
    }
     
    int main(void)
    {
    	IObjetServeur * pSrv = ConnecteServeur();
    	IObjetClient * pMonObj = new MonObjetClient;
    	int ret = pSrv->UneMethodeServeur(pMonObj, 5);
    	cout << ret;
    	delete pSrv;
    	delete pMonObj;
    	return 0;
    }
    Code pseudo, serveur : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    class MonObjetServeur : IObjetServeur
    {
    	int UneMethodeServeur(IObjetClient *pObj, int n)
    	{
    		return pObj->UneMethodeClient() + 42 + n;
    	}
    }
    Ce code doit afficher 57 (42+15).
    Mais ce que je veux mettre en évidence, c'est que l'objet MonObjetClient n'est pas transféré: Seule une référence distante passe, et la fonction UneMethodeClient() sera exécutée sur le client, bien que ce soit le serveur qui l'appelle.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  10. #10
    Membre habitué Avatar de sylvain.cool
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2006
    Messages
    242
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2006
    Messages : 242
    Points : 158
    Points
    158
    Par défaut
    Ok.
    Par contre dans ta méthode cliente, ta fonction retourne un int, donc ça va.
    Dans mon cas, je travaille sur des images. Donc ça va pas le faire.
    Je vais réfléchir et je vais surement revenir te demander de l'aide.
    En tout cas ça fais plaisir que tu réponde si vite et si bien.
    Merci

  11. #11
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Si tu veux transmettre une image, il faudra la sérialiser d'abord.

    Sous COM, tu peux typiquement sérialiser n'importe quoi sous une certaine forme de string (BSTR, qui contient la longueur et donc peut contenir des données arbitraires), ou de tableau de bytes (ou de SAFEARRAY de bytes), pour envoyer les données sérialisées au serveur.
    Ainsi, tu peux transférer des fichiers, même entiers, mais tu ne peux pas envoyer un objet contenant des pointeurs, par exemple.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  12. #12
    Membre habitué Avatar de sylvain.cool
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2006
    Messages
    242
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2006
    Messages : 242
    Points : 158
    Points
    158
    Par défaut
    Tu dis que je ne peux pas envoyer d'objets avec des pointeurs,
    mais qu'en est-il pour un objet sans pointeurs ???
    Du style de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    class Transformation{
       float rotationX,rotationY;
       float translationX,translationY;
     
       Point execTrans(Point);
    };
    Si la réponse est non, je n'ai donc aucun moyen de passer des instance de classe d'un PC à un autre? Je suis obligé d'en créer des nouveaux et de les initialiser avec les mêmes paramètres que ceux que je voulais envoyer?

  13. #13
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    Citation Envoyé par sylvain.cool Voir le message
    je n'ai donc aucun moyen de passer des instance de classe d'un PC à un autre? Je suis obligé d'en créer des nouveaux et de les initialiser avec les mêmes paramètres que ceux que je voulais envoyer?
    Non, il faut réinstancier l'objet sur la machine distante (et cela me parait logique et normal, il faut bien que l'appli distante travaille sur l'objet et comme le partage de pointeur mémoire entre PC n'a pas de sens, il faut recopier).

    De plus, si tu veux transférer un objet "complexe", il faut le sérialiser. Le terme que tu trouveras en techno COM/DCOM est "marshalling".
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  14. #14
    Membre habitué Avatar de sylvain.cool
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2006
    Messages
    242
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2006
    Messages : 242
    Points : 158
    Points
    158
    Par défaut
    Citation Envoyé par Médinoc Voir le message
    J'ai des doutes, là... De GROS doutes...
    Effectivement, on peut très bien faire du COM avec C++Builder.
    Il y a un type de projet prédéfinis: ActiveX -> Objet COM

  15. #15
    Membre habitué Avatar de sylvain.cool
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2006
    Messages
    242
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2006
    Messages : 242
    Points : 158
    Points
    158
    Par défaut
    Toutes ces méthodes se vantent d'être multilangages et multiplateforme.
    Mais en fait ça ne correspond pas vraiment à ce que je recherche.
    Mon application ne tourne que sous Windows et qu'en C++.
    N'y aurait-il pas plus simple?

  16. #16
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    28
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 28
    Points : 38
    Points
    38
    Par défaut
    Je ne m'y connais pas trop en Vindoze. J'ai effectué ce genre d'application sous Linux en utilisant des posix threads pour le serveur et pour la communication des sockets tout bêtement ... ptét que tu devrais utiliser ca (des threads windows et des winsocket ...). Mais c'est bas niveau quoi, tu vas te taper tout le boulot !!

  17. #17
    Membre habitué Avatar de sylvain.cool
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2006
    Messages
    242
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2006
    Messages : 242
    Points : 158
    Points
    158
    Par défaut
    Ce n'est pas vraiment plus simple que le reste.
    Je pense que je vais m'orienter vers DCOM vu que c'est quand même spécialisé pour Windows.
    Merci pour toutes vos réponses.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 29/10/2010, 11h30
  2. interface graphique pour traitement d'image
    Par spinalrock dans le forum Interfaces Graphiques
    Réponses: 29
    Dernier message: 10/06/2008, 14h49
  3. librairie pour traitement d'image
    Par isoman dans le forum Traitement d'images
    Réponses: 4
    Dernier message: 21/03/2008, 17h09
  4. [SPM2] Pour traitement d'images IRM
    Par larimoise dans le forum Images
    Réponses: 0
    Dernier message: 25/07/2007, 22h49
  5. API ou OCX gratuites pour traitement d'image
    Par uranium-design dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 02/09/2006, 16h03

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