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 :

Conseils en Conception / Architecture


Sujet :

C++

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    577
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 577
    Points : 256
    Points
    256
    Par défaut Conseils en Conception / Architecture
    Bonjour,

    j'ai besoin d'un conseil concernant l'architecture d'un programme en C++.

    Ce Prog "prog_main" discute (sockets TCP/IP Client/Serveur) avec 3 types de programmes :
    - les "prog_type1"
    - les "prog_type2"
    - les "prog_type3"
    Le nombre d'instance de chacun de ces types de prog n'est pas défini à priori.
    Chacun de ces 3 types de prog a ses spécificités.

    Donc voilà comment j'ai abordé le truc.
    J'ai crée une Classe Interface CIntTypeX pour chacun des 3 types de prog, et une classe CTypeX pour chaque type de prog.
    Chacune des classes CTypeX dérive d'une classe CType, qui représente les données communes à chacun.

    Ainsi mon programme CMain appelle et utilise les 3 interfaces CIntType1, CIntType2 et CIntType3 (qui sont des singleton), et ce sont elles qui se chargent de gérer leur liste de CTypeX

    Exemple :

    Code : 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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
     
    class CType1 : CType
    {
    private:
    SOCKET m_skt;
    ....
    public:
    CType1() : CType(), m_skt(0) {};
    Init();
     
    //Envoi un message
    void SendMsg(const std::string& msg)
    {
         send(m_skt, msg.c_str, msg.size());
    }
     
    };
     
     
    class CIntCType1
    {
    private :
    std::list<CType1*> m_listCType1;
    int m_data1;
    CIntCType1() : m_data1(0) {}
     
    public:
    ~CIntCType1() {}
     
    static CIntCType1& GetInterface1 {
    static CIntCType1 inst;
    return inst;
     
    //Envoi un message au prog CType1 n° "num"
    void SendMsg(const std::string& msg, int num)
    {
    CType1* pProg = GetProg(num);
    pProg->SendMsg(msg);
    }
     
    //Récupère le prog CType1 n° num de la liste
    CType1* GetProg(int num)
    {
    //parcours de la liste avec un find_if + prédicat
    }
     
    ...
    ...
    };
    Est-ce que j'ai été assez clair ?

    Que pensez-vous de cette façon de faire par rapport à la situation ??
    Comment feriez-vous ?

    Merci par avance.
    @+

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    577
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 577
    Points : 256
    Points
    256
    Par défaut
    Bonjour,

    est-ce que j'ai mal exposé mon problème ?

    @+

  3. #3
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    tech lead c++ linux
    Inscrit en
    Août 2004
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : tech lead c++ linux

    Informations forums :
    Inscription : Août 2004
    Messages : 4 262
    Points : 6 680
    Points
    6 680
    Billets dans le blog
    2
    Par défaut
    Je ne comprends pas trés bien, mais en ce moment je ne suis pas en forme

    * Les programmes qui discutent avec ton prog_main doivent-ils discuter également entre eux?
    * Je ne comprend pas pourquoi tu as besoin de tout ce mécanisme d'héritage. Car si tes clients balancent leurs infos sur un port donné, et que le serveur récupère ces infos, je ne vois pas pourquoi tu as besoin d'en savoir plus.
    « L'effort par lequel toute chose tend à persévérer dans son être n'est rien de plus que l'essence actuelle de cette chose. »
    Spinoza — Éthique III, Proposition VII

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    577
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 577
    Points : 256
    Points
    256
    Par défaut
    Citation Envoyé par r0d
    * Les programmes qui discutent avec ton prog_main doivent-ils discuter également entre eux?
    --> Non

    Citation Envoyé par rOd
    * Je ne comprend pas pourquoi tu as besoin de tout ce mécanisme d'héritage. Car si tes clients balancent leurs infos sur un port donné, et que le serveur récupère ces infos, je ne vois pas pourquoi tu as besoin d'en savoir plus.
    Je comprends ton interrogation.
    Voilà, chaqun de ces clients à ses infos propres, et notamment son type de gestion C / S. Par exemple le client1 se gère en dialogue synchrone, alors que le client 2 se gère en asynchrone, avec création d'un thread de dialogue retour.

    Ensuite, il y a également un envoi de trames par le prog principal vers les progs satellites en fonction de certains évènement liés au programme lui-même.
    En effet, le prog principal réalise un pilotage d'un autocom au moyen de la norme TAPI, et en fonction de l'état de certains appels, il renvoie des "tickets" vers certains de ces prog satellites.


    Donc je ne peux pas simplement me limiter à récupérer des trames venant de ces clients et à les traiter sans chercher à en savoir +.

    J'espère que ça a un peu eclairé ...
    @+

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    577
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 577
    Points : 256
    Points
    256
    Par défaut
    Personne ne peut me conseiller ?

Discussions similaires

  1. [MySQL] Réaliser un script de statistiques : vos conseils pour l'architecture de la table ?
    Par MaTHieU_ dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 26/08/2006, 00h46
  2. Comment réaliser une GUI ? (conception, architecture)
    Par Ange_de_coren dans le forum API graphiques
    Réponses: 33
    Dernier message: 21/08/2006, 12h39
  3. [Debutant] Conseils pour l'architecture objet d'une appli
    Par etiennegaloup dans le forum Langage
    Réponses: 4
    Dernier message: 09/04/2006, 19h16
  4. [I18N] Conseil pour l'architecture
    Par Alec6 dans le forum API standards et tierces
    Réponses: 5
    Dernier message: 11/10/2005, 23h49
  5. [N-Tier] Problème conception architecture 3-tiers
    Par Royd938 dans le forum Autres
    Réponses: 3
    Dernier message: 17/06/2005, 11h47

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