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 :

Système de greffons et choix d'implémentation


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 99
    Par défaut Système de greffons et choix d'implémentation
    Bonjour à tous!

    Je commence un nouveau projet. Je suis en pleine phase de conception.

    Ce projet doit proposer une fonctionnalité de base qui est "Visualiser les données". C'est très simple et c'est ainsi pour ne pas dérouter les premiers utilisateurs du logiciel qui n'ont besoin que de consulter les données.
    Mais il doit être possible d'étendre les fonctionnalités du logiciel pour les utilisateurs avancés (modifier telle donnée, supprimer, ajouter etc...) tout en utilisant la même base (visualiser), pour éviter d'avoir à maintenir deux logiciels différents faisant la même chose à la base.
    Alors j'ai pensé à un système de plugin, mais je suis toujours débutant en C/C++ et là on touche à des choses de bas niveau avec lesquelles je ne suis pas familier. Je ne vois pas comment procéder. J'ai les contraintes suivantes:

    -Il y a une interface graphique :wxWidgets.
    -Il y a de la 3D: OpenGL.
    -Il y a du XML et du DOM: Xerces.
    -Les greffons peuvent modifier l'IHM pour y rajouter leurs fonctionnalités.
    -Le logiciel sera d'abord utilisé sous Windows. Mais Mac et Linux sont envisageables à court terme. La solution doit donc être multi-plateforme.

    Comment répondriez-vous à ces contraintes pour la réalisation du système de greffons? Existe-t-il des patrons de conception pour cela?

    J'envisage une fonction qui cherche les greffons dans un répertoire particulier du programme. Ces greffons seraient des librairies dynamiques, déclarant une fonction "register_me(pointeur_vers_wxFrame)". Est-ce une bonne piste ou un très mauvais point de départ? Est-ce portable?

    J'ai besoin de vos lumières!
    Merci

    Cordialement
    Daniel

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    wxWidgets propose une classe pour encapsuler de manière portable le chargement explicite de bibliothèques dynamiques (donc les greffons) :
    wxDynamicLibrary

    Ensuite il faut effectivement que tes greffons exportent une fonction qui permet de les relier au programme de base, par exemple un register_me comme tu l'as proposé. Pour être un peu plus flexible tu peux faire une fonction qui ne fait que renvoyer une instance du plugin (en général on les encapsule dans une classe qui dérive d'une base abstraite) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    extern "C" Plugin* CreatePlugin()
    {
        return new MyPlugin;
    }
    Après tu peux fournir les fonctions dont peuvent avoir besoin les greffons via ta classe de base Plugin. C'est elle qui sert de pont entre l'application et le greffon.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 99
    Par défaut
    Bonjour et merci pour la réponse rapide!

    Effectivement, ce qui me chagrinait particulièrement c'était l'interaction avec wxWidgets. La classe wxDynamicLibrary semble être ce qu'il me faut! Je vais explorer cette voie et effectivement, encapsuler les greffons en les généralisant, j'y aurait pensé mais bien trop tard!

    Merci pour ces pistes! Je continue de plancher dans cette voie.
    Daniel

Discussions similaires

  1. [Élaboration] Choix d'implémentation en C++
    Par lephotographe dans le forum Architecture
    Réponses: 0
    Dernier message: 26/08/2009, 21h55
  2. choix d'implémentation corba
    Par cdm1024 dans le forum CORBA
    Réponses: 1
    Dernier message: 30/01/2009, 14h32
  3. Pilotage par PC d'un système d'aide au choix
    Par Dolphy35 dans le forum Automation
    Réponses: 0
    Dernier message: 25/10/2008, 11h47
  4. Choix d' implémentation
    Par Naeco dans le forum Langage
    Réponses: 23
    Dernier message: 04/04/2007, 09h29
  5. [BDD/Système de requêtes] Quels choix de deploiement ?
    Par christophe44 dans le forum Décisions SGBD
    Réponses: 4
    Dernier message: 12/01/2006, 14h52

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