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

Windows Forms Discussion :

.net 2, architecture plugins communication entre plugin et host


Sujet :

Windows Forms

  1. #1
    Membre expérimenté Avatar de bossun
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 359
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 359
    Points : 1 443
    Points
    1 443
    Par défaut .net 2, architecture plugins communication entre plugin et host
    Salut,

    Je tente de mettre en place une architecture de plugin pour mon appli.

    Je suis encore au stade expérimental mais ça se passe plutôt bien jusqu'ici.

    Je suis confronté à un problème.
    Mon application hôte doit renvoyer un paramètre à chaque plugin chargé.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        public interface IPlugin
        {
            ToolStripMenuItem[] GetMenuItems();
            Form ParentMDI { get;set; }
            string PluginName { get;set; }
            string Environnement { get;set;}
     
        }

    Quelle est la meilleure pratique pour faire ça?

    Merci d'avance
    il vaut mieux prendre son pied que de se prendre la tête!!

    http://bossun.noxblog.com

  2. #2
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 195
    Points
    5 195
    Par défaut
    salut

    une solution que j'ai implémentée la semaine dernière dans mon application plug-in

    Tu définis une interface de type IEventYesWeCan

    Du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public delegate void OnGenericEvent(string.., object..);
     
    public interface IEVentYesWeCan
    {
       event OnGenericEvent SendEvent;
       void HandleEvent(string eventName, object value);
    }
    Et ton hote peut implémenter aussi cette interface

    Ne reste plus qu'ensuite à faire abonnée chaque plug-in à l'event des autres plug-in (tu peux ajouter un boolean pour dire si un plug-in veut s'abonner).. et ensuite, suffit de lever l'event

    L'interet de faire ainsi est que tu autorises un plug-in à lever un event qui sera écouté par un autre plug-in sans que les deux plug-in ne se connaissent (attention après au type d'objet que tu passeras en paramètre)..

    Perso, ca marche nickel dans mon appli multi-plug-in

    Cela dit, dans cet appli, j'ai un plug-in qui gere le log pour tous les plug-in (en passant une référence sur un logger qui implémenter une interface ILogger), de meme pour les traductions etc...
    The Monz, Toulouse
    Expertise dans la logistique et le développement pour
    plateforme .Net (Windows, Windows CE, Android)

  3. #3
    Membre expérimenté Avatar de bossun
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 359
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 359
    Points : 1 443
    Points
    1 443
    Par défaut
    Salut,

    Merci pour ton message theMonz,

    aurais-tu un exemple un peu plus concret avec un bout de codE?
    il vaut mieux prendre son pied que de se prendre la tête!!

    http://bossun.noxblog.com

  4. #4
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 195
    Points
    5 195
    Par défaut
    non, peut pas trop donner le code de l'entreprise (meme si j'en suis en grande partie responsable )

    Par contre, avec ce que j'ai dit, tu devrais pouvoir "facilement" conceptualiser le truc

    L'idée, quand tu charges les plug-ins dans l'hote, tu parcours chaque plug-in chargé pour voir si il implémente l'interface d'évenement, et si c'est le cas, tu reparcours cette meme liste (hors celui en cours) pour voir quels autres plug-in implémente cette interface et souhaite s'abonner à l'évènement proposé pour le plug-in en cours de traitement...

    Tu fais la même chose pour les plug-in suivant

    genre en algo:
    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
     
     
    foreach(IPlugIn plug in ListOfPlugin)
    {
       if( plug is IEvent...)
       {
         foreach(IPlugIn plug2 in ListOfPlugin)
         {
             if( plug2 != plug)
             {
                 if( plug2 is IEvent...)
                 {
                         plug.TheEvent += plug2.EventHandler;
                 }
             }
         }
       }
    }
    et voilà
    The Monz, Toulouse
    Expertise dans la logistique et le développement pour
    plateforme .Net (Windows, Windows CE, Android)

Discussions similaires

  1. Communication entre un plugin web et une application
    Par justfab dans le forum Autres langages pour le Web
    Réponses: 0
    Dernier message: 25/04/2014, 17h28
  2. Communication entre logiciel C++ et plugin firefox
    Par watchinofoye dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 15/05/2013, 15h48
  3. Architecture et communication entre deux projets
    Par Patoche_c dans le forum VB.NET
    Réponses: 2
    Dernier message: 05/10/2009, 16h16
  4. Communication entre plugins
    Par scorbo dans le forum Général Java
    Réponses: 7
    Dernier message: 22/10/2007, 10h28
  5. communication entre plugin
    Par loic_86 dans le forum Eclipse Platform
    Réponses: 11
    Dernier message: 08/11/2006, 17h58

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