BT

Votre opinion compte! Merci de bien vouloir répondre au sondage InfoQ!

ScriptCS : Faire de C# un langage de Script

| par Abel Avram Suivre 4 Abonnés , traduit par Julien Delhomme Suivre 1 Abonnés le 11 juin 2013. Durée de lecture estimée: 3 minutes |

Une note à nos lecteurs : Suite à vos retours, nous avons développé un ensemble de fonctionnalités qui vous permettent de réduire le bruit, tout en ne perdant pas de vue ce qui est important. Recevez des notifications en ligne et par e-mail en choisissant les sujets qui vous intéressent.

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.

Evaluer cet article

Pertinence
Style

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

Se connecter à InfoQ pour interagir sur ce qui vous importe le plus.


Récupérer votre mot de passe

Follow

Suivre vos sujets et éditeurs favoris

Bref aperçu des points saillants de l'industrie et sur le site.

Like

More signal, less noise

Créez votre propre flux en choisissant les sujets que vous souhaitez lire et les éditeurs dont vous désirez suivre les nouvelles.

Notifications

Restez à jour

Paramétrez vos notifications et ne ratez pas le contenu qui vous importe

BT