# .NET · Veille technologique

[Source canonique](<https://sebastien.rigaux.be/veille/tags/dotnet>)

Plateforme de développement Microsoft : runtime, bibliothèques, SDK et applications multiplateformes.

## [Finbuckle.MultiTenant : isoler les tenants dans une application .NET](<https://sebastien.rigaux.be/veille/liens/finbucklemultitenant-isoler-les-tenants-dans-une-application-net>)

Finbuckle.MultiTenant fournit à ASP.NET Core les briques de résolution des tenants, de configuration par tenant et d’isolation des données. Le démarrage combine une stratégie basée sur le host, un store alimenté par la configuration et le middleware `UseMultiTenant()`.

Le middleware doit précéder ceux qui dépendent du tenant, comme l’authentification et l’autorisation. La bibliothèque propose aussi des intégrations pour les options, l’authentification et l’isolation des données avec Entity Framework Core.

2026-11-02 · [Markdown](<https://sebastien.rigaux.be/veille/liens/finbucklemultitenant-isoler-les-tenants-dans-une-application-net.md>) · [Ressource originale](<https://www.finbuckle.com/MultiTenant/#getting-started>)

## [.NET multi-tenant : migrer un tenant sans interrompre le service — partie 4/4](<https://sebastien.rigaux.be/veille/liens/net-multi-tenant-migrer-un-tenant-sans-interrompre-le-service-partie-44>)

Ce volet explique comment déplacer un tenant d’une base partagée vers une base dédiée sans arrêter l’application ni perturber les autres tenants. Le catalogue pilote le basculement, tandis que le même modèle EF Core et son filtre restent en place dans les deux modes.

La migration s’appuie sur une copie initiale, un passage temporaire en lecture seule, une copie delta et une vérification avant le cutover. Le runbook attend l’expiration du cache avant de rouvrir les écritures : les instances qui conservent encore l’ancienne connexion ne peuvent ainsi pas écrire dans la base partagée après le basculement.

2026-11-02 · [Markdown](<https://sebastien.rigaux.be/veille/liens/net-multi-tenant-migrer-un-tenant-sans-interrompre-le-service-partie-44.md>) · [Ressource originale](<https://barretblake.dev/posts/development/2026/08/multi-tenant-moving-day/>)

## [.NET multi-tenant : une base par tenant — partie 3/4](<https://sebastien.rigaux.be/veille/liens/net-multi-tenant-une-base-par-tenant-partie-34>)

Avec une base par tenant, EF Core n’a plus besoin de filtre global, de colonne `TenantId` ni de clé de cache de modèle spécifique : le choix du tenant passe par une chaîne de connexion résolue depuis une base catalogue.

Cette isolation simplifie le modèle, mais déplace la complexité vers l’exploitation : chaque migration doit s’appliquer à toutes les bases. L’article détaille aussi le rôle de `IDesignTimeDbContextFactory` pour permettre à `dotnet ef` de créer le contexte sans requête ni tenant actif.

2026-11-02 · [Markdown](<https://sebastien.rigaux.be/veille/liens/net-multi-tenant-une-base-par-tenant-partie-34.md>) · [Ressource originale](<https://barretblake.dev/posts/development/2026/08/multi-tenant-part-3/>)

## [.NET multi-tenant : séparer les données par schéma SQL Server — partie 2/4](<https://sebastien.rigaux.be/veille/liens/net-multi-tenant-separer-les-donnees-par-schema-sql-server-partie-24>)

Cette partie 2/4 montre comment isoler les données de chaque tenant dans son propre schéma SQL Server, sans filtre global ni colonne `TenantId` obligatoire. Le modèle EF Core retrouve ainsi une clé primaire simple, tandis que la frontière d’isolation est portée par la structure de la base.

Le changement central tient au cache du modèle : `OnModelCreating` ne s’exécute qu’une fois par modèle. Il faut intégrer le schéma à la clé via `IModelCacheKeyFactory`, faute de quoi EF Core peut réutiliser celui du premier tenant. L’article détaille aussi le provisionnement et les migrations par schéma, ainsi que la validation stricte des noms de schéma interpolés dans le SQL.

2026-11-02 · [Markdown](<https://sebastien.rigaux.be/veille/liens/net-multi-tenant-separer-les-donnees-par-schema-sql-server-partie-24.md>) · [Ressource originale](<https://barretblake.dev/posts/development/2026/07/multi-tenant-part-2/>)

## [.NET multi-tenant : requêtes isolées et partitions SQL Server — partie 1/4](<https://sebastien.rigaux.be/veille/liens/net-multi-tenant-requetes-isolees-et-partitions-sql-server-partie-14>)

Cette première partie présente une architecture multi-tenant .NET à schéma partagé : EF Core filtre les lectures par tenant et SQL Server partitionne physiquement les lignes pour accélérer l’accès aux données. Le point essentiel : le partitionnement n’est pas une frontière de sécurité ; l’isolation repose sur le filtre global EF Core.

L’article détaille aussi la résolution du tenant par requête, l’attribution de son identifiant aux nouvelles lignes et l’ajout des partitions aux migrations avec du SQL brut. La clé primaire doit inclure `GuildId`, contrainte imposée par SQL Server pour partitionner un index unique.

2026-11-02 · [Markdown](<https://sebastien.rigaux.be/veille/liens/net-multi-tenant-requetes-isolees-et-partitions-sql-server-partie-14.md>) · [Ressource originale](<https://barretblake.dev/posts/development/2026/07/multi-tenant-part-1/>)

## [C\# 15 : des unions exhaustives, avec un coût de boxing à surveiller](<https://sebastien.rigaux.be/veille/liens/c-15-des-unions-exhaustives-avec-un-cout-de-boxing-a-surveiller>)

C# 15 introduit le mot-clé `union` pour représenter une valeur parmi plusieurs types sans les regrouper dans une classe de base ni perdre leur typage dans `object`. Andrew Lock montre comment les `switch` expressions vérifient que chaque cas est traité, et comment déclarer des unions comme `Result<T>`.

Le détail à considérer côté performance : l’implémentation générée stocke la valeur dans un `object`, ce qui boxe les types valeur. L’article présente une implémentation personnalisée avec `TryGetValue` pour éviter ce boxing dans les `switch`.

2026-11-01 · [Markdown](<https://sebastien.rigaux.be/veille/liens/c-15-des-unions-exhaustives-avec-un-cout-de-boxing-a-surveiller.md>) · [Ressource originale](<https://andrewlock.net/exploring-the-dotnet-11-preview-2-dotnet-gets-union-types/>)

## [C\# : IfItQuacks transforme le duck typing en bibliothèque](<https://sebastien.rigaux.be/veille/liens/c-ifitquacks-transforme-le-duck-typing-en-bibliotheque>)

IfItQuacks permet d’utiliser en C# des objets qui correspondent à une interface sans l’implémenter ni hériter d’une classe commune. L’attribut `[DuckTyped]` déclenche un générateur de code qui vérifie la compatibilité à la compilation et crée un adaptateur, sans réflexion ni `dynamic`.

Les types anonymes peuvent aussi servir de stubs de test : un objet `{ Name = "Steven", Age = 90 }` satisfait ainsi une interface `IPerson`. Les adaptateurs préservent par ailleurs l’identité en transférant `Equals`, `GetHashCode` et `ToString` à l’objet sous-jacent.

2026-11-01 · [Markdown](<https://sebastien.rigaux.be/veille/liens/c-ifitquacks-transforme-le-duck-typing-en-bibliotheque.md>) · [Ressource originale](<https://steven-giesel.com/blogPost/41599817-4457-441e-b874-1a5c67f4e7cc>)

## [.NET : modéliser les intervalles comme objets métier](<https://sebastien.rigaux.be/veille/liens/net-modeliser-les-intervalles-comme-objets-metier>)

CodoMetis.ValueRanges propose des types d’intervalle .NET pour remplacer les paires de dates et leur logique dispersée. Les cinq variantes — finie, sans borne gauche ou droite, infinie et vide — rendent explicites les formes possibles et leurs règles, tandis que les opérations comme `Contains` et `Overlaps` s’exécutent en mémoire.

Le package EF Core associé fait le pont avec PostgreSQL : les mêmes opérations dans le domaine sont traduites en opérateurs SQL via Npgsql. L’article détaille aussi le compromis de conception : des records abstraits plutôt que des structs, pour représenter les variantes par une hiérarchie de types.

2026-11-01 · [Markdown](<https://sebastien.rigaux.be/veille/liens/net-modeliser-les-intervalles-comme-objets-metier.md>) · [Ressource originale](<https://dev.to/caffeinatedcoder/the-interval-is-the-thing-modelling-range-types-as-first-class-domain-objects-in-net-3jha>)

## [Metalama : générer des patterns C\# et faire appliquer l’architecture au build](<https://sebastien.rigaux.be/veille/liens/metalama-generer-des-patterns-c-et-faire-appliquer-larchitecture-au-build>)

Metalama automatise les patterns transverses en C# avec des aspects qui génèrent le code à la compilation, tout en vérifiant les règles d’architecture dès l’édition. L’implémentation répétitive reste ainsi hors du code métier et du dépôt, tandis qu’un même aspect peut être appliqué à une méthode ou à un ensemble de méthodes sélectionnées par code.

Un aspect peut, par exemple, envelopper une méthode dans un `try/catch` pour journaliser son entrée, son résultat et ses exceptions. Metalama permet aussi de prévisualiser le code transformé et de le déboguer, pour rendre ces transformations inspectables.

2026-10-30 · [Markdown](<https://sebastien.rigaux.be/veille/liens/metalama-generer-des-patterns-c-et-faire-appliquer-larchitecture-au-build.md>) · [Ressource originale](<https://postsharp.net/metalama>)

## [dotnetup : gérer les toolchains .NET sans droits admin ni scripts système](<https://sebastien.rigaux.be/veille/liens/dotnetup-gerer-les-toolchains-net-sans-droits-admin-ni-scripts-systeme>)

Microsoft lance `dotnetup`, un gestionnaire de toolchain .NET inspiré de rustup et nvm, qui simplifie l’installation, la mise à jour et la gestion de multiples versions du SDK et des runtimes, sans droits administrateur. L’outil fonctionne dans le dossier utilisateur, respecte les fichiers `global.json` et permet de suivre des canaux de versions ou d’installer des builds quotidiens, tout en facilitant le nettoyage des versions obsolètes. Il vise aussi les usages CI/CD et promet une expérience unifiée sur macOS, Linux et bientôt Windows.

2026-10-20 · [Markdown](<https://sebastien.rigaux.be/veille/liens/dotnetup-gerer-les-toolchains-net-sans-droits-admin-ni-scripts-systeme.md>) · [Ressource originale](<https://devblogs.microsoft.com/dotnet/introducing-dotnetup/>)

## [Nouveautés majeures de .NET 11 : runtime, bibliothèques et SDK](<https://sebastien.rigaux.be/veille/liens/nouveautes-majeures-de-net-11-runtime-bibliotheques-et-sdk>)

Cette page officielle Microsoft Learn présente un tour d’horizon complet des nouveautés de .NET 11, actuellement en version candidate. Elle détaille les évolutions du runtime (performances, Async natif, JIT, WebAssembly), des bibliothèques (API numériques, compression, System.Text.Json, sécurité, LINQ, etc.), du SDK (outils CLI, tests, conteneurs, OpenTelemetry) et du langage C# 15. Les développeurs y trouveront un résumé des principales avancées, des liens vers les nouveautés ASP.NET Core, EF Core, Windows Forms et WPF, ainsi que les dates clés de publication. Idéal pour anticiper la migration ou explorer les nouvelles possibilités de la plateforme .NET.

2026-10-15 · [Markdown](<https://sebastien.rigaux.be/veille/liens/nouveautes-majeures-de-net-11-runtime-bibliotheques-et-sdk.md>) · [Ressource originale](<https://learn.microsoft.com/fr-fr/dotnet/core/whats-new/dotnet-11/overview>)

## [Produire des builds .NET déterministes avec Source Link](<https://sebastien.rigaux.be/veille/liens/produire-des-builds-net-deterministes-avec-source-link>)

L’article explique pourquoi des entrées identiques doivent produire les mêmes binaires et comment configurer Source Link. Il utilise NuGet Package Explorer pour vérifier les packages obtenus.

2025-09-13 · [Markdown](<https://sebastien.rigaux.be/veille/liens/produire-des-builds-net-deterministes-avec-source-link.md>) · [Ressource originale](<https://mitchelsellers.com/blog/article/net-5-deterministic-builds-source-linking>)

## [Les pièges de la programmation asynchrone en .NET](<https://sebastien.rigaux.be/veille/liens/les-pieges-de-la-programmation-asynchrone-en-net>)

Ce guide rassemble des recommandations sur async, await, les tâches et l’annulation. Il aborde notamment les blocages liés à Task.Result ou Task.Wait et les alternatives adaptées.

2025-02-16 · [Markdown](<https://sebastien.rigaux.be/veille/liens/les-pieges-de-la-programmation-asynchrone-en-net.md>) · [Ressource originale](<https://github.com/davidfowl/AspNetCoreDiagnosticScenarios/blob/master/AsyncGuidance.md>)

## [Vogen : générer des value objects autour des types .NET](<https://sebastien.rigaux.be/veille/liens/vogen-generer-des-value-objects-autour-des-types-net>)

Vogen enveloppe des types primitifs dans des types métier générés. L’exemple CustomerId montre comment obtenir comparaisons et construction encadrée sans écrire tout le code répétitif.

2025-02-09 · [Markdown](<https://sebastien.rigaux.be/veille/liens/vogen-generer-des-value-objects-autour-des-types-net.md>) · [Ressource originale](<https://stevedunn.github.io/Vogen/overview.html>)

## [NDC London 2025 : les thèmes présentés par l’équipe .NET](<https://sebastien.rigaux.be/veille/liens/ndc-london-2025-les-themes-presentes-par-l-equipe-net>)

Cette annonce revient sur les interventions Microsoft prévues à NDC London 2025. Le programme abordait notamment .NET Aspire, les applications cloud-native et l’intégration de l’IA avec .NET.

2025-01-19 · [Markdown](<https://sebastien.rigaux.be/veille/liens/ndc-london-2025-les-themes-presentes-par-l-equipe-net.md>) · [Ressource originale](<https://devblogs.microsoft.com/dotnet/meet-the-dotnet-team-at-ndc-london-2025/>)

## [Les outils .NET de couverture de code gagnent en portabilité](<https://sebastien.rigaux.be/veille/liens/les-outils-net-de-couverture-de-code-gagnent-en-portabilite>)

Microsoft présente l’instrumentation statique et de nouveaux formats de rapports, dont Cobertura. Ces évolutions facilitent l’intégration des mesures de couverture dans différents environnements et outils de reporting.

2023-12-24 · [Markdown](<https://sebastien.rigaux.be/veille/liens/les-outils-net-de-couverture-de-code-gagnent-en-portabilite.md>) · [Ressource originale](<https://devblogs.microsoft.com/dotnet/whats-new-in-our-code-coverage-tooling/>)

## [Structurer une application multitenant avec FinBuckle](<https://sebastien.rigaux.be/veille/liens/structurer-une-application-multitenant-avec-finbuckle>)

L’article explique comment FinBuckle.MultiTenant s’intègre à ASP.NET Core autour des tenants, stratégies de résolution et stores. Une base pour organiser l’isolation et les comportements propres à chaque client.

2023-09-10 · [Markdown](<https://sebastien.rigaux.be/veille/liens/structurer-une-application-multitenant-avec-finbuckle.md>) · [Ressource originale](<https://khalidabuhakmeh.com/posts/multi-tenancy-with-aspnet-core-and-finbuckle-multitenant/>)

## [Tester une application .NET avec de vrais services Docker](<https://sebastien.rigaux.be/veille/liens/tester-une-application-net-avec-de-vrais-services-docker>)

Le guide présente Testcontainers pour démarrer et gérer les dépendances conteneurisées de tests .NET. Cette approche rapproche les tests d’intégration des services réellement utilisés par l’application.

2023-09-09 · [Markdown](<https://sebastien.rigaux.be/veille/liens/tester-une-application-net-avec-de-vrais-services-docker.md>) · [Ressource originale](<https://code-maze.com/csharp-testing-using-testcontainers-for-net-and-docker/>)

## [Une certification gratuite pour apprendre les bases de C\#](<https://sebastien.rigaux.be/veille/liens/une-certification-gratuite-pour-apprendre-les-bases-de-c>)

Microsoft et freeCodeCamp présentent une certification C# accompagnée d’un parcours de 35 heures sur Microsoft Learn. Une ressource structurée pour consolider les fondamentaux du langage.

2023-08-30 · [Markdown](<https://sebastien.rigaux.be/veille/liens/une-certification-gratuite-pour-apprendre-les-bases-de-c.md>) · [Ressource originale](<https://devblogs.microsoft.com/dotnet/announcing-foundational-csharp-certification/>)

## [Collecter un dump mémoire .NET dans Kubernetes](<https://sebastien.rigaux.be/veille/liens/collecter-un-dump-memoire-net-dans-kubernetes>)

Ce tutoriel détaille la collecte d’un dump mémoire d’une application .NET exécutée dans un pod. Il fournit un parcours de diagnostic pour analyser un incident au-delà des seuls logs.

2023-08-27 · [Markdown](<https://sebastien.rigaux.be/veille/liens/collecter-un-dump-memoire-net-dans-kubernetes.md>) · [Ressource originale](<https://cezarypiatek.github.io/post/memory-dump-on-kubernetes/>)

Page 1 / 2

[Suivant](<https://sebastien.rigaux.be/veille/tags/dotnet/page/2>)
