BT
x Votre opinion compte ! Merci de bien vouloir répondre au sondage InfoQ concernant vos habitudes de lecture !

ScriptCS : Faire de C# un langage de Script

par Abel Avram , traduit par Julien Delhomme le 11 juin 2013 |

Grâce à ScriptCS, les développeurs peuvent écrire des applications C# depuis un simple éditeur de texte. La compilation est effectuée par Roslyn et la gestion des packages par NuGet.

C'est Glenn Block, responsable de projets dans l'équipe du SDK Windows Azure, qui a initié ScriptCS dans le cadre d'un projet personnel, avec pour objectif de faire de C# un langage de script. Il offre au développeur la possibilité d'utiliser ses connaissances en C# en codant dans un simple éditeur de texte, la compilation étant effectuée par Roslyn, le "compiler-as-a-service" de Microsoft. ScriptCS s'appuie sur NuGet pour découvrir les packages dépendants et pour uploader les binaires. La syntaxe de Roslyn r: est utilisée pour ajouter les références vers les DLL du GAC ou d'autres emplacements.

Si un fichier hello.csx contient la ligne de code C# suivante,

Console.WriteLine("Hello World!");

alors l'exécution de la commande scriptcs hello.csx produira l'affichage de la chaîne de caractères Hello World! dans la console.

Dans cet exemple, aucune mention d'espace de nom ni de définition de classe n'est nécessaire et aucun projet, fichiers .obj ou .exe ne sont générés. Roslyn compile, ScriptCS exécute le résultat.

Un autre exemple, plus élaboré, est la création d'un hôte Web API :

using System;
using System.IO;
using System.Web.Http;
using System.Web.Http.SelfHost;

var address = "http://localhost:8080";
var conf = new HttpSelfHostConfiguration(new Uri(address));
conf.Routes.MapHttpRoute(name: "DefaultApi",
   routeTemplate: "api/{controller}/{id}",
   defaults: new { id = RouteParameter.Optional }
);

var server = new HttpSelfHostServer(conf);
server.OpenAsync().Wait();
Console.WriteLine("Listening...");
Console.ReadKey();

Comme Glenn Block l'explique, ScriptSC propose un mécanisme de plug-in, s'appuyant sur un concept qu'il appelle script packs :

Un script pack peut apporter des imports d'espaces de noms, des références, aussi bien que des objets qui seront alors disponibles pour le script via l'API Require<T>.

L'objectif premier d'un script pack est de faciliter l'écriture des scripts s'appuyant sur des frameworks.

S'installant via des packages NuGet, les scripts packs peuvent être facilement découverts et consommés.

Un travail est actuellement en cours pour faire fonctionner ScriptCS sur Mono. L'idée d'ajouter des fonctions de debugging à Roslyn est, elle, en cours d'investigation. Sublime Text a créé un plug-in pour ScriptCS pour permettre la coloration syntaxique depuis un éditeur simple. Pour la coloration syntaxique dans les fichiers .csx, une alternative est possible depuis Visual Studio en utilisant Roslyn.

Glenn Block liste les avantages du scripting, en s'appuyant sur son expérience avec Node.js :

  • Pas de projets, que du script. Une chose que j'apprécie fortement avec Node.js, c'est que vous pouvez tout simplement ouvrir un répertoire, créer des fichiers .js et vous mettre au boulot.
  • Pas besoin d'IDE, un éditeur de texte suffit.
  • Les packages priment sur les assemblies. Avec Node, quand vous voulez récupérer quelque chose, vous utilisez npm pour télécharger les packages. C'est super simple. Vous avez votre application et votre répertoire local node_modules et c'est tout ce qu'il vous faut.
  • Pas de compilation. Ça, c'est un gros avantage. Avec Node, j'ai juste à lancer node.exe et mon application et cela fonctionne. Je n'ai pas d'abord à créer un exécutable, j'exécute, c'est tout.

Tout ceci est rendu possible par Roslyn et NuGet. ScriptCS travaille toujours avec des assemblies, mais du point de vue du développeur, on se contente de dire : "je n'ai pas à les gérer individuellement, je me contente d'installer des packages".

ScriptCS est sous licence Apache 2 et n'est actuellement pas supporté par Microsoft.

Bonjour étranger!

Vous devez créer un compte InfoQ ou cliquez sur pour déposer des commentaires. Mais il y a bien d'autres avantages à s'enregistrer.

Tirez le meilleur d'InfoQ

Donnez-nous votre avis

Html autorisé: a,b,br,blockquote,i,li,pre,u,ul,p

M'envoyer un email pour toute réponse à l'un de mes messages dans ce sujet
Commentaires de la Communauté

Html autorisé: a,b,br,blockquote,i,li,pre,u,ul,p

M'envoyer un email pour toute réponse à l'un de mes messages dans ce sujet

Html autorisé: a,b,br,blockquote,i,li,pre,u,ul,p

M'envoyer un email pour toute réponse à l'un de mes messages dans ce sujet

Discuter

Contenu Éducatif

Rien ne serait possible sans le soutien et la confiance de nos Sponsors Fondateurs:

AppDynamics   CloudBees   Microsoft   Zenika
Feedback Général
Bugs
Publicité
Éditorial
InfoQ.com et tous les contenus sont copyright © 2006-2014 C4Media Inc. InfoQ.com est hébergé chez Contegix, le meilleur ISP avec lequel nous ayons travaillé.
Politique de confidentialité
BT