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

FluentGraphQL — query-builder pour .NET

Auteur — NuGet · MIT

Requêtes GraphQL fluent et type-safe côté .NET, sans schéma généré. Performances suivies par benchmarks reproductibles committés dans le repo.

benchmarks reproductibles (.NET 9)

Le problème

Les clients GraphQL générés figent la requête à la compilation. Dès qu'il faut la composer au runtime (champs optionnels, filtres issus des entrées utilisateur), on retombe sur de l'assemblage de chaînes, non typé et invérifiable.

L'approche

L'API se chaîne et lit les noms de champs via CallerArgumentExpression, sans arbre d'expression par champ. Les filtres LINQ deviennent des clauses where type-safe en parsant un seul arbre d'expression par requête, jamais compilé. Une seule dépendance à l'exécution : System.Text.Json.

En pratique

C#
1builder.AddQuery(
2 new GraphQLQueryObject<Account>("accounts")
3 .AddEveryFields()
4 .AddCollectionField(a => a.Contacts)
5 .Where(a => cities.Contains(a.Adresse.City)));

Points clés

  • API fluent pour les requêtes et les mutations
  • Filtres LINQ type-safe traduits en clauses GraphQL
  • Une seule dépendance d'exécution (System.Text.Json)
  • Arbre d'expression parsé une fois par requête, jamais compilé
  • Benchmarks reproductibles committés dans le repo

Stack

  • C#
  • .NET 9
  • GraphQL