Conception d'un programme extensible
Bonjour,
je souhaiterais concevoir un programme extensible mais je ne parvient pas trouver un outil adéquat.
J'ai développer en C la base de mon application qui sera fixe à l'exception d'une (voir plusieurs) fonction(s) qui seraient vouées à évoluer.
Je m'explique :
mon programme cherche à déterminer des systèmes de trading qui permet d'investir intelligemment sur le marché. Pour ce faire, je dois à un moment calculer certaines valeurs d'indicateurs. Seul petit problème, il existe des centaines d'indicateurs et tous les implémenter serait une perte de temps d'autant que ce n'est pas la valeur ajoutée de mon logiciel projeté, et que d'autres le font très bien.
L'idée serait donc de proposer au client d'implémenter lui même ces indicateurs.
Désolé de vous donner autant de détails mais mon problème est pointue et j'ai des exigences particulières :
- pas de re-compilation possible
- chargement à la volée, sans redémarrer l’application si possible
- l'outil doit être accessible à des non programmeurs, je voudrais éviter de leur demander d'écrire tout le fichier, mais uniquement la partie "utile"
- un choix assez large de langages (en évitant le C)
- "professionnel" : pas de scripts ou de machins bidules, une interface avec saisie du nom et du corps de l'indicateur, puis un bouton de soumission
Je suis exigeant, je sais, mais des concurrents proposent des fonctionnalités similaires... comment ont-ils fait, je l'ignore!
Mes recherches m'ont conduit à deux résultats proche de ce que je veux sans pour autant me satisfaire.
En java, il est possible de charge dynamiquement un code contenu dans une chaîne de caractère. Le hic c'est que cela ne marche qu'avec du java! (pas moyen de charger un code en C par exemple)
En .net, il est possible de créer des assembly puis de les charger dans l'appdomaine que l'on souhaite. Grâce au runtime de Microsoft plusieurs langages sont pris en compte. Mais là je me pose alors plusieurs questions :
- comment faire le pont entre mon programme en C, que je souhaite être compilé statiquement pour des questions de confidentialité et les DLL chargés à la volées?
- comment créer ces dites assembly efficacement avec juste la partie utile?
- le chargement peut-il se faire sans redémarrer l'application?
L'utilisation de ces librairies est-elle la méthode la plus adapté à mon problème?
Plus généralement, y a-t-il d'autres outils pour répondre à mes besoins?
J'ai essayé de faire court, si vous voulez d'avantage de renseignements, n'hésitez pas!
J'attends une réponse détaillé car je me suis déjà fait une idée sur la question mais j'ai besoin de précisions pour passer à l'implémentation.
Merci d'avance pour tout réponse,
Nasire.
Ingénieur en systèmes d'informations.