Stéphane De Todaro — tech lead

@super-dev.app · Lead-technique
Actif depuis 2017

Lead technique et architecte full-stack, freelance depuis 2019. Je conçois, industrialise et exploite des plateformes métier sur Azure, et je publie des moteurs logiciels open source.

Tous les projets
Projet open source · .NET

NgSharp v3 — moteur de templates pour .NET

Auteur — NuGet · MIT

Templates interprétés façon Angular, agnostiques du format : parse n'importe quel fichier texte avec une connaissance fine du HTML. Zéro dépendance, compatible Native AOT.

premier rendu en microsecondes

Le problème

Rendre du HTML côté serveur en .NET passe le plus souvent par de la génération de code : Razor compile ses vues via Roslyn. Cette compilation pèse sur le démarrage à froid et reste incompatible avec Native AOT.

L'approche

NgSharp interprète au lieu de compiler. Il parse le template en AST au premier usage, met l'arbre en cache, puis rend en le parcourant : ni Roslyn, ni émission d'IL, donc un démarrage à froid instantané et un chemin sans réflexion compatible Native AOT. Une seule dépendance : System.Text.Json.

En pratique

C#
1var builder = HtmlBuilder.Create();
2var html = builder.BuildFromTemplate(
3 "<ul>@for (u of Users) {<li>{{ u.Name | upper }}</li>}</ul>",
4 new { Users = new[] { new { Name = "ada" }, new { Name = "linus" } } });
5// → <ul><li>ADA</li><li>LINUS</li></ul>

Points clés

  • Syntaxe façon Angular : interpolation, pipes, @if/@for, navigation sûre
  • Interprété : AST mis en cache, aucun code généré
  • Compatible Native AOT et trimming, sans réflexion
  • AST immuable et thread-safe : parsé une fois, rendu en parallèle
  • Analyseur HTML dédié, une seule dépendance d'exécution (System.Text.Json)

Stack

  • C#
  • .NET 9
  • Native AOT