Cette
session était très intéressante, elle montrait comment ajouter dans un programme
.Net une fonction d’exécution de code dynamique comme JavaScript, Python ou
encore Ruby. Le principe est simple, le speaker avait une application ou se
trouvais un Canvas WPF. Dans celui-ci on
pouvait y créer des cercles et des rectangles.
Dans
cette même application, il y avait une TextBox pour pouvoir écrire du code
dynamique et un bouton pour le l’exécuter à la volée. Dans son exemple, le
speaker pouvait interagir en direct via le langage Ruby avec les cercles et
rectangles de l’application. C’est réellement bluffant de voir que cette
intégration se fait très facilement.
A la
base on défini des Providers de langage dynamique appelé Runtime.
Ensuite, grâce à un système de scope, il est possible de définir
les limites de l’interaction du langage dynamique avec son application, à savoir
qu’elle objets et namespace sont accessibles dans l’exécution du langage
dynamique. Ensuite il suffit d’injecter le code saisie dans le moteur dynamique
et celui-ci est compilé et exécuté à la volé dans le scope.
Ce que
l’on peut retenir de cette session :
· Améliorer son application en un écosystème
applicatif.
· Les langages dynamiques peuvent se parler entre
eux.
· IronPython et IronRuby sont les langages dynamiques
actuellement supportés.
· Les nouvelles classes pour gérer l’exécution
dynamique :
-
- ScriptRuntime
(Class)
- ScriptScope
(Class)
- ScriptEngine
(Class)
· Le but est d'enrichir les applications C# avec un langage
dynamique qui peut interagir avec notre application dans un scope
défini.
· Permet un lien total entre son programme et le langage avec
peu de code.
· Le DynamicObject permet de pouvoir accéder aux propriétés
d'un objet interne C# dans le moteur de script.
· L'API Script est valable pour IronPython, IronRuby et autres
DLR si le provider est là.
· Lien : http://ironpython.codeplex.com/
Au
final, si on couple cette technologie avec d’autres comme « M » ou « Quadran »,
il est possible de créer pour son application, un langage custom et permettre a
ses utilisateurs de créer des petit programme comme les macros VBA, mais avec un
contrôle total sur l’interaction du langage avec son domaine fonctionnel et
applicatif.