PDC : Using Dynamic Langages to Build Scriptable Application

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)
        • ScriptSource (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.


Tags:
Catégories: C# | Divers

0 Commentaires
Actions: Permalink | Comment RSSRSS comment feed

PDC : Future directions for C# and Visual Basic

Pour ma part ma première session a été très intéressante, une présentation sur les concepts et directions que Microsoft va donner a ses langages phares que sont C# et Visual Basic. Outre le fait de montrer quelques évolutions syntaxique c’est surtout l’occasion pour le speaker de préciser qu’à l’avenir les langages seront plus tournés vers le déclaratif à l’instar de Linq que vers l’impératif (même si les deux seront toujours possible).

La première chose mise en avant est que les deux langages seront maintenant identique dans leurs possibilités, fini l’époque ou Visual Basic offrait telle fonctionnalité et C# une autre sans possibilité d’avoir les deux dans le même langage. Avec C# et  Visual Basic 4, ce que peut faire l’un, l’autre peut le faire aussi.

Dans les nouvelles fonctionnalités, une m’a particulièrement attiré, celle concernant le DynamicObject. Le concept est simple, pouvoir accéder a des accesseurs dynamique sur un objet, ce qui était avant impossible car ils étaient déterminés à la compilation. Si vous voulez voir a quoi sa ressemble coté code :  http://msdn.microsoft.com/en-us/library/system.dynamic.dynamicobject%28VS.100%29.aspx

Ce qu’il faut donc retenir de cette session :

·         Plus aucune différence de fonctionnalité.

·         La version déclarative d'un code est plus lisible de la version impérative.

·         L'idée est que le déclaratif est plus facile à mettre en place et plus facile à maintenir, et pose moins de problème de compréhension.

·         Possibilité de créer ses propres fonctions de refactoring de code dans Visual Studio 2010.

 

La session proposait comme exemple la création d’un parser de fichier CSV, en combinant les nouveaux concepts déclaratif de C# 4, on arrivait à un modèle pour le fichier était chargé dans un objet donc les accesseurs était dynamique, et donc que leurs nom changeaient en fonction du fichier CSV chargé.


Tags:
Catégories: C# | Divers

0 Commentaires
Actions: Permalink | Comment RSSRSS comment feed

Définir une source de donnée WebService (SSRS)

Je vais aborder ici comment faire pour définir une source de donnée de type WebService (XML) pour l'utiliser dans un rapport Reporting Services 2005. La chose se fait en deux phases.

Phase 1 : Définition de la source de donnée

Il est évident que dans ce cas, la source de donnée sera l'adresse de notre WebService, pour cela créez votre source de donnée et paramétrez là comme ceci : 

Il faut que le retour de votre WebService soit un XML ou un objet sérialisable dans ce sens. Une fois la source de donnée définie, il n'y a plus qu'à l'utiliser dans un DataSet.

Phase 2 : Définition d'un DataSet avec la source de donnée WebService

Le DataSet se défini comme normalement, on lui donne un nom, on lui donne comme source de donnée notre source de type XML. La seule chose a savoir est comment récupérer les données du WebService.

C'est dans la QueryString que l'on doit spécifier toutes ses informations, sous forme d'un XML propre à Reporting Services

Le XML (ci-bas) permet de définir la méthode su WebService à invoquer, ansi que les informations nécéssaire à la récupération des données.

<Query>
  <Method Namespace="http://tempuri.org/" Name="MaMethode"/>
  <SoapAction>http://tempuri.org/SuiviChantier</SoapAction>
  <ElementPath IgnoreNamespaces="true">
    *
  </ElementPath>
</Query>

Si le le WebService prend des paramètres, il suffit d'aller sur l'onglet Parameters et de les définirs. Il est alors possible de définir des paramètres en dur ou des paramètres passés au rapport.

Une fois terminé, vous n'avez plus qu'a utiliser le DataSet dans votre rapport. Mais il arrive parfois que Reporting Services ne remplisse pas automatiquement la liste des champs de binding, à ce moment vous devrez le faire à la main en ajoutant les champs un à un. Même si il ne les a pas trouvé en définissant le DataSet, cela ne l'empêchera pas de les récupérer par la suite.


Tags: , ,
Catégories: Divers

0 Commentaires
Actions: Permalink | Comment RSSRSS comment feed

Log4net et les dates sur les noms de fichier

J'ai récement eu un petit problème sur log4net pour générer des fichiers auyant le nom "monfichier_24-11-2008.log". En effet soit l'appender me met la date à la fin derrière l'extension, où si je met le ".log" dans le format de date il me transforme le "g" de "log" en "A.D".

Pour remédier à ce problème il faut tout simplement passer par le caractère d'échapement sur les formats de date qu'est le "\". En effet en mettant "\{char}" (par exempel "\g") l'interpréteur sur les dates ne prend pas en compte le caractère en question. Nous pouvons donc dans le format de date log4net spécifier le "\g" sur le ".log" afin qu'il ajoute correctement la date à la fin du fichier et surtout avant l'extenstion. Je vous propose un exemple d'appender :

<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
    <file value="C:\MonFichier_" />
    <appendToFile value="true" />
    <datePattern value="yyyy-MM-dd.lo\g" />
    <staticLogFileName value="false" />
    <rollingStyle value="Date" />
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%date [%thread] %-5level %logger %method [%ndc] - %message%newline" />
    </layout>
  </appender>


Tags:
Catégories: C# | Divers

2 Commentaires
Actions: Permalink | Comment RSSRSS comment feed

Firefox 3 enfin disponible !

Et oui j'ai toujours été un fan de Firefox, je n'ai jamais été fan d'Internet Explorer et l'arrivée de la nouvelle mouture de Firefox est pour moi un petit événement.

Vous pouvez télécharger la nouvelle version ici. Il est plus rapide, les fuites de mémoire sont corrigées, que demande le peuple ?


Tags:
Catégories: Divers

0 Commentaires
Actions: Permalink | Comment RSSRSS comment feed