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 :

Architecture d'une application avec Plugins + WinForms


Sujet :

C#

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 78
    Points : 41
    Points
    41
    Par défaut Architecture d'une application avec Plugins + WinForms
    Bonjour à tous,

    Je suis en train de développer une application très classique dans son fonctionnement, mais je cale sur un petit problème de conception. Voici son l'idée:

    1. Chargement de l'application (fenêtre principale)
    2. L'utilisateur charge un projet
    3. Les plugins (des dlls) définis dans le projet sont chargés
    4. L'utilisateur ouvre un autre projet
    5. Les plugins définis dans cet autre projet sont chargés


    Un plugin est capable d'ajouter des composants graphiques à l'application:
    • Boutons dans la barre de menu
    • Fenêtres dockables
    • ...


    J'aimerai que lorsque l'utilisateur charge un autre projet les plugins qui sont devenus inutiles soient déchargés. Sachant qu'il n'est pas possible de décharger des dlls qui ont été loadées, j'ai identifié les scénarios suivants:

    • Tout charger dans un même AppDomain et ne libérer que la mémoire utilisée par les plugins en appelant une méthode de nettoyage.
    • Charger chaque plugins dans un AppDomain différent (mais à ce moment là je n'arrive pas à faire charger les WinForms par l'application).
    • Utiliser une petite fenêtre qui permet de choisir son projet et charger à ce moment là l'application et les plugins spécifiques dans un AppDomain qui est détruit puis reconstruit au prochain chargement de projet.


    Est-ce qu'à votre connaissance il existe une méthode plus efficace pour traiter ce genre d'applications? En regardant dans les solutions professionnelles, j'ai quand même l'impression qu'aucun soft ne se prend la tête à faire une liste de plugins différente par projet chargé...

    Bonne journée à tous,

    Merci d'avance pour vos retours.

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 136
    Points : 12 235
    Points
    12 235
    Par défaut
    Le plus sain est de charger chaque plug-in dans un AppDomain distinct.
    Cela règle, par exemple, les problèmes d'incompatibilité entre les versions d'assemblies utilisés par plusieurs plug-Ins en même temps.

Discussions similaires

  1. Réponses: 9
    Dernier message: 26/01/2015, 22h58
  2. Réponses: 2
    Dernier message: 05/08/2012, 08h53
  3. Réponses: 0
    Dernier message: 25/07/2011, 17h45
  4. cross compilation d'une application avec plugins
    Par vpoulailleau dans le forum Débuter
    Réponses: 3
    Dernier message: 21/04/2010, 23h06
  5. [VB6]Fermer une application avec VB
    Par Mylou dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 04/04/2003, 21h32

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