MVAESTECH
Guide .NET · 18 · Synthèse

Publié le · par Mathieu Vaes

Glossaire

Les termes techniques du guide, expliqués simplement. Dans les chapitres, les mots soulignés en pointillés affichent leur définition au survol, au clavier ou au toucher.

Chapitres du guide
ADRArchitecture
Architecture Decision Record : court document qui garde la trace d'une décision technique, de son contexte et de ses conséquences.
AgrégatArchitecture
Groupe d'objets métier modifiés ensemble et gardés cohérents par un objet racine (ex. une commande et ses lignes).
ANCMIIS
ASP.NET Core Module : module IIS (installé par le Hosting Bundle) qui charge une appli ASP.NET Core.
awaitConcurrence
Attend la fin d'une opération sans bloquer le thread : celui-ci repart servir d'autres tâches et le code reprend quand le résultat arrive.
Backoff exponentielRésilience
Attendre de plus en plus longtemps entre deux tentatives : 1 s, 2 s, 4 s…
BFFSécurité
Backend For Frontend : petit serveur dédié au front qui garde les jetons côté serveur et utilise un cookie sécurisé.
Bounded ContextArchitecture
Frontière dans laquelle un mot métier a un sens unique et précis.
BoxingLangage
Copie d'une valeur (int, struct) dans un objet sur le tas, par exemple pour la ranger dans une variable object. Chaque boxing coûte une allocation.
CanaryQualité
Déploiement progressif : la nouvelle version reçoit d'abord une petite part du trafic, puis tout si tout va bien.
CardinalitéObservabilité
Nombre de valeurs distinctes d'une étiquette de métrique. Trop élevée, elle fait exploser coûts et stockage.
cgroupsConteneurs
Fonction du noyau Linux qui limite la mémoire et le CPU d'un groupe de processus, donc d'un conteneur.
CI/CDQualité
Intégration continue (build et tests à chaque commit) et déploiement continu (mise en production automatisée).
Circuit breakerRésilience
Disjoncteur : après trop d'échecs, on arrête d'appeler un service en panne pendant un moment pour le laisser récupérer.
CLRRuntime
Common Language Runtime : le moteur qui exécute les applis .NET (chargement du code, JIT, ramasse-miettes, sécurité des types).
Compte de serviceCloud
Identité non humaine attribuée à une appli pour accéder aux autres services cloud.
Concurrence optimisteDonnées
On ne verrouille rien à la lecture ; à l'écriture, on vérifie que la donnée n'a pas changé entre-temps, sinon on signale un conflit.
Condition de courseConcurrence
Bug qui dépend de l'ordre d'exécution de traitements simultanés : le résultat change d'une exécution à l'autre.
ConteneurConteneurs
Processus isolé qui embarque l'appli et ses dépendances, et tourne de la même façon sur n'importe quelle machine.
CORSSécurité
Règles qui autorisent un site web d'une autre origine à appeler votre API depuis le navigateur.
CQRSArchitecture
Séparer les opérations qui modifient (commandes) de celles qui lisent (requêtes), chacune optimisée pour son rôle.
Data ProtectionSécurité
API ASP.NET Core qui chiffre cookies et jetons. Ses clés doivent être partagées entre toutes les instances.
Dead-letterRésilience
File où partent les messages qui échouent après plusieurs tentatives, pour analyse.
DécorateurConception
Objet qui enveloppe un autre objet de même interface pour lui ajouter un comportement (cache, log) sans le modifier.
DéléguéLangage
Variable qui contient une méthode. Func (renvoie une valeur) et Action (ne renvoie rien) en sont les formes courantes.
Démarrage à froidCloud
Délai du premier appel quand une nouvelle instance doit démarrer avant de répondre.
Dépendance captiveConception
Un service à longue durée de vie (singleton) garde une référence vers un service à courte durée de vie (scoped), qui n'est alors jamais libéré.
Design patternConception
Solution connue et nommée à un problème de conception qui revient souvent.
Dette techniqueÉquipe
Coût futur des raccourcis pris aujourd'hui : chaque évolution devient plus lente tant qu'on ne rembourse pas.
DNSCommunication
Annuaire d'Internet : traduit un nom (api.shop.fr) en adresse IP.
DTOAPI
Data Transfer Object : objet simple qui sert uniquement à transporter des données, par exemple dans une réponse d'API.
EndpointAPI
Point d'entrée de l'API : une URL et une méthode HTTP associées au code qui y répond.
Famine du ThreadPoolConcurrence
Tous les threads du pool sont bloqués à attendre : les nouvelles requêtes s'empilent et la latence explose.
Feature flagÉquipe
Interrupteur de configuration qui active ou désactive une fonctionnalité sans redéployer.
GC (ramasse-miettes)Runtime
Garbage Collector : il libère automatiquement la mémoire des objets que plus aucune variable n'utilise.
GénériqueLangage
Code écrit une seule fois pour plusieurs types, grâce à un paramètre de type comme T dans List<T>.
gRPCCommunication
Protocole d'appel entre services, binaire et rapide, fondé sur HTTP/2 et un contrat Protobuf.
HSTSSécurité
En-tête qui oblige le navigateur à n'utiliser que HTTPS pour ce site.
HTTP.sysIIS
Pilote du noyau Windows qui écoute les ports HTTP et transmet les requêtes à IIS.
IAMCloud
Identity and Access Management : qui (personne ou compte de service) a le droit de faire quoi sur quelle ressource.
ICUConteneurs
Bibliothèque de données linguistiques (formats de date, tri, cultures comme fr-FR) utilisée par .NET sous Linux.
IdempotentAPI
Une opération est idempotente si la répéter donne le même résultat que la faire une seule fois.
IDORSécurité
Faille où l'on accède aux données d'un autre en changeant simplement un identifiant dans l'URL.
ILRuntime
Intermediate Language : langage intermédiaire produit par le compilateur C# ou VB. Le runtime le traduit ensuite en instructions pour le processeur.
Image chiseledConteneurs
Image Ubuntu réduite au strict nécessaire, sans shell ni gestionnaire de paquets : plus petite et moins exposée.
Infrastructure as CodeCloud
Décrire serveurs, réseaux et services dans des fichiers versionnés (Terraform) au lieu de cliquer dans une console.
Injection de dépendances (DI)Conception
Un objet reçoit ses dépendances (base, logger…) de l'extérieur au lieu de les créer lui-même. On peut ainsi les remplacer, notamment en test.
Interblocage (deadlock)Concurrence
Deux traitements s'attendent mutuellement et aucun ne peut avancer : l'appli se fige.
JITRuntime
Compilation « juste à temps » : l'IL d'une méthode est traduit en code machine la première fois qu'elle est appelée.
JitterRésilience
Petit délai aléatoire ajouté entre les tentatives pour que tous les clients ne réessaient pas au même instant.
JWTSécurité
JSON Web Token : jeton signé qui transporte l'identité et les droits d'un utilisateur.
KestrelAPI
Le serveur web intégré à ASP.NET Core, multiplateforme.
KubernetesConteneurs
Plateforme qui déploie, surveille, redémarre et met à l'échelle des conteneurs sur un ensemble de machines.
LINQLangage
Language Integrated Query : syntaxe C# pour filtrer, trier et transformer des collections ou des tables.
LOHRuntime
Large Object Heap : zone mémoire réservée aux gros objets (85 000 octets et plus), nettoyée moins souvent que le reste.
LTS / STSRuntime
Long-Term Support (3 ans de correctifs) et Standard-Term Support (2 ans). Les versions paires de .NET sont LTS.
MicroservicesArchitecture
Découpage en petits services déployés indépendamment, chacun avec sa base. Puissant mais coûteux à exploiter.
MiddlewareAPI
Maillon de la chaîne de traitement d'une requête HTTP : chacun fait une tâche (sécurité, logs…) puis passe au suivant.
Monolithe modulaireArchitecture
Une seule application déployée, mais découpée en modules aux frontières strictes. Bon compromis avant les microservices.
MVVMClient lourd
Model-View-ViewModel : sépare l'affichage (View) de l'état et des actions (ViewModel) pour tester sans interface.
N+1Données
Anti-pattern : une requête pour charger une liste, puis une requête par élément. 100 commandes = 101 requêtes.
Native AOTRuntime
Compilation anticipée : tout le code est traduit en code machine à la publication. Démarrage très rapide, mais pas de génération de code à l'exécution.
OIDCSécurité
OpenID Connect : protocole standard d'authentification par un fournisseur d'identité (Entra ID, Keycloak…).
OOMKilledConteneurs
Conteneur tué par le système car il a dépassé sa limite mémoire (Out Of Memory).
OpenTelemetryObservabilité
Standard ouvert pour produire et exporter logs, métriques et traces, quel que soit l'outil de visualisation.
ORMDonnées
Object-Relational Mapper : outil qui fait correspondre classes C# et tables SQL, comme EF Core.
OutboxRésilience
Les messages à publier sont enregistrés dans la même transaction que les données, puis envoyés par un relais : rien n'est perdu.
OWASPSécurité
Fondation qui publie notamment le Top 10 des risques de sécurité des applications web.
PKCESécurité
Protection ajoutée à OAuth pour les applis qui ne peuvent pas garder de secret (mobile, bureau, SPA).
PolymorphismeLangage
Un même appel (f.Aire()) se comporte différemment selon le type réel de l'objet (cercle, carré…).
Pool d'applicationsIIS
Processus isolé (w3wp.exe) dans lequel IIS fait tourner une ou plusieurs applis, avec sa propre identité.
Post-mortemÉquipe
Analyse écrite après un incident : ce qui s'est passé, pourquoi, et quelles actions pour éviter que ça recommence.
ProblemDetailsAPI
Format JSON standard (RFC 9457) pour décrire une erreur renvoyée par une API.
ProtobufCommunication
Format binaire compact de Google, décrit dans un fichier .proto à partir duquel le code client et serveur est généré.
Pub/SubCloud
Service de messagerie de Google : un émetteur publie, les abonnés reçoivent, sans se connaître.
RCSIDonnées
Read Committed Snapshot Isolation (SQL Server) : les lectures voient une version cohérente des données sans bloquer les écritures.
ReadyToRunRuntime
Format de publication qui pré-compile une partie du code en natif tout en gardant l'IL, pour démarrer plus vite.
RESTAPI
Style d'API web où l'on manipule des ressources (URL) avec les méthodes HTTP (GET, POST, PUT, DELETE).
RollbackQualité
Retour rapide à la version précédente quand un déploiement pose problème.
SagaRésilience
Processus métier en plusieurs étapes réparties entre services, avec des actions d'annulation si une étape échoue.
Scale-to-zeroCloud
Le service descend à zéro instance sans trafic : on ne paie rien, mais le premier appel subit un démarrage à froid.
SémaphoreConcurrence
Compteur de places : il laisse passer au plus N traitements en même temps, les suivants attendent qu'une place se libère.
SignalRCommunication
Bibliothèque ASP.NET Core de communication temps réel : le serveur pousse des messages vers les clients connectés.
SIGTERMConteneurs
Signal envoyé à un processus pour lui demander de s'arrêter proprement avant d'être tué.
SLI / SLOObservabilité
SLI : un indicateur mesuré (taux de succès). SLO : l'objectif fixé sur cet indicateur (99,9 % sur 30 jours).
SOLIDLangage
Cinq principes de conception orientée objet : responsabilité unique, ouvert/fermé, substitution de Liskov, ségrégation des interfaces, inversion des dépendances.
Sonde (probe)Conteneurs
Vérification périodique par Kubernetes : le conteneur est-il démarré, vivant, prêt à recevoir du trafic ?
SpanObservabilité
Morceau d'une trace : une opération chronométrée (un appel SQL, un appel HTTP).
SSRFSécurité
Faille où le serveur est poussé à appeler une URL interne choisie par l'attaquant.
Strangler figCommunication
Migration progressive : une façade redirige peu à peu les routes vers le nouveau système jusqu'à ce que l'ancien ne serve plus à rien.
SynchronizationContextConcurrence
Mécanisme qui fait reprendre le code après un await sur un thread précis, typiquement le thread de l'interface graphique.
Table virtuelle (vtable)Langage
Table associée à chaque type qui indique quelle version d'une méthode virtuelle appeler. C'est elle qui rend le polymorphisme possible.
Tas managéRuntime
Zone mémoire où vivent les objets créés avec new. C'est le ramasse-miettes qui la nettoie.
TestcontainersQualité
Bibliothèque qui démarre une vraie base de données dans un conteneur le temps d'un test.
ThreadConcurrence
Fil d'exécution : un « bras » du processus qui exécute du code. Un processus en possède plusieurs.
ThreadPoolConcurrence
Réserve de threads réutilisables gérée par .NET et partagée par toutes les requêtes et tâches asynchrones.
TLSCommunication
Protocole qui chiffre la connexion : c'est le « S » de HTTPS.
Type valeur / type référenceLangage
Un type valeur (int, struct) est copié quand on l'affecte. Un type référence (class) ne copie que l'adresse : deux variables peuvent pointer sur le même objet.
Value ObjectArchitecture
Objet défini uniquement par ses valeurs, sans identité, et immuable : un montant, une adresse.
WASIIS
Windows Process Activation Service : démarre, surveille et recycle les processus des applis IIS.
WCFCommunication
Windows Communication Foundation : ancien framework de services de .NET Framework. CoreWCF en reprend une partie sur .NET moderne.
WebSocketCommunication
Connexion réseau permanente et bidirectionnelle entre navigateur et serveur.
Workload IdentityCloud
Mécanisme GCP qui donne une identité cloud à une appli (GKE, GitHub Actions) sans fichier de clé à stocker.
XSSSécurité
Injection de JavaScript malveillant dans une page vue par d'autres utilisateurs.
YARPCommunication
Yet Another Reverse Proxy : bibliothèque Microsoft pour construire un proxy inverse en .NET.

Un projet .NET à cadrer ou à reprendre ?

API REST documentées et testées, applications ASP.NET MVC (y compris VB.NET), migration de services anciens vers une architecture claire : parlons de votre code.