cs_ABF
Messages postés227Date d'inscriptionsamedi 21 mai 2005StatutMembreDernière intervention26 avril 2012
-
14 juil. 2008 à 16:34
cs_ABF
Messages postés227Date d'inscriptionsamedi 21 mai 2005StatutMembreDernière intervention26 avril 2012
-
15 juil. 2008 à 12:19
Bonjour,
J'ai testé plusieurs choses :
- plugins
- dll
Mon soucis est de faire une sorte de mix entre les 2.
En fait j'ai une appli principale et elle ne changera pas (maj).
Ensuite, je mettrais à dispositions des plugin/dll qui permettront d'executer du code.
EN GROS :
APP Principale : msgbox main()
PLUGIN/DLL : function main() as string
main = "slt"
.....
... execution d'autres sub/functions
end sub
Voila.
Le soucis est que je ne connais qu'une seule methode (main) de mon plugin/dll et je ne connais pas à l'avance si le plugins/dll existe et je dois donc charger en memoire le fichier (plugin/dll)
Comment faire cette interaction entre une app (.exe) et des plugins/dll.
cs_ABF
Messages postés227Date d'inscriptionsamedi 21 mai 2005StatutMembreDernière intervention26 avril 2012 14 juil. 2008 à 16:36
Bonjour,
J'ai testé plusieurs choses :
- plugins
- dll
Mon soucis est de faire une sorte de mix entre les 2.
En fait j'ai une appli principale et elle ne changera pas (maj).
Ensuite, je mettrais à dispositions des plugin/dll qui permettront d'executer du code.
EN GROS :
APP Principale : msgbox main()
PLUGIN/DLL : function main() as string
main = "slt"
.....
... execution d'autres sub/functions
end function
Le soucis est que je ne connais qu'une seule methode (main) de mon plugin/dll et je ne connais pas à l'avance si le plugins/dll existe et je dois donc charger en memoire le fichier (plugin/dll)
Comment faire cette interaction entre une app (.exe) et des plugins/dll.
cs_niky
Messages postés168Date d'inscriptionjeudi 28 juin 2001StatutMembreDernière intervention18 octobre 20087 14 juil. 2008 à 18:52
Salut,
Quand je dois faire appli qui utilise des plugins, je procède ainsi :
1) Je créé une DLL qui contient une interface IPlugin (par exemple)
2) Je créé mon application qui va référencer ma DLL (=> voir les références dans les propriétés du projet)
3) Je créé mes plugins (ce sont des DLL) qui référencent ma DLL contenant IPlugin. Toutes les classes qui sont des plugins implémentent IPlugin et possèdent un constructeur sans argument.
4) Je place mes plugins dans le répertoire de l'application (où ailleurs)
5) Mon application principale va parcourir toutes les DLL qui sont dans son répertoire (avec System.Reflection.Assembly.LoadAssembly) et rechercher par réflexion les classes qui implémentent IPlugin. Quand j'ai toutes ces classes, je les instancie : c'est facile, elles ont toutes un constructeur sans argument. Ensuite, je caste l'objet pour en IPlugin et j'ai accès à toutes les fonctions de l'interface IPlugin.
Au niveau des performances ça pose quelques problèmes : par experience, LoadAssembly et la réflexion sont des processus pas très rapides.
Si l'application est sensible, le fait de charger toutes les assemblies d'un répertoire sans vérification peut être à l'origine de failles de sécurité.