none
System.Addin : Bon choix pour une application modulaire ? RRS feed

  • Question

  • Bonjour à tous.

    Je développe actuellement en c# sous Visual Studio Pro 2008 (.net 3.5), le tout en WPF.

    Je souhaite créer une application permettant d'accueillir des plugins qui seront hosté dans mon application.

    Chaque plugins comporte une interface graphique devant être chargé dans l'hôte.

    Ma question est la suivante, le mieux est-il d'utilisé les domaines d'applications et de charger les assembly ou de passer par le nouveau système de gestion des Addins (System.Addin) ?

    Merci d'avance pour les réponses que vous pourrez m'apporter.

    Bonne journée à tous.
    mardi 22 juillet 2008 09:00

Réponses

  • Bonjour,

     

    Le mieux est d'utiliser l'espace de nom System.Addin qui est vraiment conçu pour çà !

    D'ailleurs il me semble que l'on peut cloisonner les Addin, via les AppDomain...

     

    Cordialement

    mardi 22 juillet 2008 11:30
    Modérateur

Toutes les réponses

  • Bonjour,

     

    Le mieux est d'utiliser l'espace de nom System.Addin qui est vraiment conçu pour çà !

    D'ailleurs il me semble que l'on peut cloisonner les Addin, via les AppDomain...

     

    Cordialement

    mardi 22 juillet 2008 11:30
    Modérateur
  • Bonjour,

    Merci pour votre réponse, j'ai testé le système de gestion des Addins et le chargement directement via createInstance (domaine d'application), et j'ai remarqué que le chargement d'une interface graphique (contenu dans mon assembly) est plus lent avec la bibliothèque System.Addin.

    Concernant la possibilité de cloisonner, tu as peut être une adresse à me donner sur le sujet ?

    Merci d'avance.

    mardi 22 juillet 2008 11:47
  • Bonjour,

     

    Il me semble que c'est la méthode AddInToken.Active(AppDomain) :

    http://msdn.microsoft.com/fr-fr/library/bb298165.aspx

    qui permet de mettre les add-ins dans différents AppDomain et de réaliser votre propre cloisonnage...

     

    Cordialement 

    samedi 26 juillet 2008 09:07
    Modérateur
  • Bonjour,

    Merci pour ton aide.

    Juste une dernière question, j'ai remarqué que chargé que chargé un FrameWorkElement (UI)  est très long.

    Je cherche donc un moyen d'accélérer ce chargement ou de le faire de façon asynchrone.

    J'ai essayé les threads mais le problème c'est qu'un élèment graphique ne peut pas être chargé depuis une autre thread (Thread safe).

    Merci d'avance.


    dimanche 3 août 2008 15:31
  • Je ne sais pas si le BackgroundWorker pourrait t'aider pour ton problème?
    lundi 4 août 2008 20:03
    Modérateur
  • Bonjour et merci pour votre réponse.

    Je m'excuse pour le temps de réponse j'étais en vacance Smile.

    Donc j'ai essayé ce que vous m'avez proposé, le problème est qu'il sagit de chargement d'interface graphique (UI) donc il ne peut pas être fait dans une thread différente de celle ou il va être appelé.

    Il a donc naturellement provoqué une exception avec le message suivant :

    "Le thread appelant doit être en mode STA, comme l'exigent de nombreux composants de l'interface utilisateur."

    En tout cas merci pour votre réponse.

    Bonne journée.
    lundi 18 août 2008 08:50
  • Bonjour,

     

    Avez vous mis au niveau du main l'attribut : [STAThread] ?

     

    Cordialement

    lundi 18 août 2008 10:43
    Modérateur

  • Bonjour,

    Merci pour votre réponde rapide.

    Oui j'ai bien mis STAThread mais ça marche quand même pas.

    Je crois savoir que quoi qu'il arrive il faut qu'une interface graphique soit chargé par la thread appelante, donc impossible d'utiliser les backgroundWorker ou thread etc ...

    Merci pour vos réponses.

    Cordialement
    lundi 18 août 2008 11:05