<?xml version="1.0" encoding="utf-8" standalone="no"?><rss xmlns:betag="https://blogengine.io/schemas/tags" xmlns:blogChannel="http://backend.userland.com/blogChannelModule" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" version="2.0">
  <channel>
    <title>Dot.Blog</title>
    <description>Consulting DotNet C#, XAML, WinUI, WPF, MAUI, IA</description>
    <link>http://www.e-naxos.com/Blog/</link>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <generator>BlogEngine.NET 3.3.8.0</generator>
    <language>fr-FR</language>
    <blogChannel:blogRoll>http://www.e-naxos.com/Blog/opml.axd</blogChannel:blogRoll>
    <blogChannel:blink>https://www.e-naxos.com/Blog/syndication.axd</blogChannel:blink>
    <dc:creator>Olivier Dahan</dc:creator>
    <dc:title>Dot.Blog</dc:title>
    <geo:lat>0.000000</geo:lat>
    <geo:long>0.000000</geo:long>
    <xhtml:meta content="noindex" name="robots" xmlns:xhtml="http://www.w3.org/1999/xhtml"/><item>
      <title>Pourquoi avons-nous inventé les ORM ?</title>
      <description>&lt;p id="pourquoi-avons-nous-invente-les-orm"&gt;&lt;em&gt;La persistance objet avant Entity Framework, chez Microsoft et ailleurs.&lt;/em&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;S&amp;eacute;rie &amp;mdash; Entity Framework : remettre les compteurs &amp;agrave; z&amp;eacute;ro&lt;/strong&gt;&lt;br /&gt;Partie 1 sur 4. Cet article revient sur le probl&amp;egrave;me que les ORM tentent de r&amp;eacute;soudre. Il pr&amp;eacute;pare l'histoire d'Entity Framework sans en faire encore le sujet principal.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="un-objet-nest-pas-une-ligne"&gt;Un objet n'est pas une ligne&lt;/h2&gt;
&lt;p&gt;Une classe C# et une table SQL peuvent sembler proches : des propri&amp;eacute;t&amp;eacute;s d'un c&amp;ocirc;t&amp;eacute;, des colonnes de l'autre. Cette ressemblance est trompeuse.&lt;/p&gt;
&lt;p&gt;Consid&amp;eacute;rons un mod&amp;egrave;le m&amp;eacute;tier &amp;eacute;l&amp;eacute;mentaire :&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;public sealed class Customer
{
    public int Id { get; set; }
    public required string Name { get; set; }
    public List&amp;lt;Order&amp;gt; Orders { get; set; } = [];
}

public sealed class Order
{
    public int Id { get; set; }
    public DateTime CreatedAtUtc { get; set; }
    public OrderStatus Status { get; set; }
    public List&amp;lt;OrderLine&amp;gt; Lines { get; set; } = [];
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Dans le programme, un client r&amp;eacute;f&amp;eacute;rence une collection de commandes. Une commande contient des lignes. Chaque instance poss&amp;egrave;de une identit&amp;eacute; et un cycle de vie. Le d&amp;eacute;veloppeur navigue dans un graphe.&lt;/p&gt;
&lt;p&gt;Dans la base relationnelle, les m&amp;ecirc;mes donn&amp;eacute;es sont distribu&amp;eacute;es entre des tables. Les relations reposent sur des cl&amp;eacute;s &amp;eacute;trang&amp;egrave;res. Retrouver le graphe n&amp;eacute;cessite des jointures ; enregistrer ses modifications n&amp;eacute;cessite de respecter un ordre, des contraintes et une transaction.&lt;/p&gt;
&lt;p&gt;&lt;img src="data:image/png;base64,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" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Figure 3 &amp;mdash; L'ORM ne fait pas seulement correspondre des propri&amp;eacute;t&amp;eacute;s &amp;agrave; des colonnes : il reconstruit et synchronise un graphe &amp;agrave; partir d'ensembles de lignes.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Le terme classique est&amp;nbsp;&lt;em&gt;object-relational impedance mismatch&lt;/em&gt;, le d&amp;eacute;calage objet-relationnel. Il regroupe plusieurs difficult&amp;eacute;s :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;l'identit&amp;eacute; d'un objet n'est pas simplement son emplacement en m&amp;eacute;moire ;&lt;/li&gt;
&lt;li&gt;une r&amp;eacute;f&amp;eacute;rence objet devient une cl&amp;eacute; &amp;eacute;trang&amp;egrave;re ;&lt;/li&gt;
&lt;li&gt;une collection devient une requ&amp;ecirc;te ;&lt;/li&gt;
&lt;li&gt;l'h&amp;eacute;ritage n'a pas un &amp;eacute;quivalent relationnel unique ;&lt;/li&gt;
&lt;li&gt;un type valeur riche peut &amp;ecirc;tre r&amp;eacute;parti entre plusieurs colonnes ;&lt;/li&gt;
&lt;li&gt;le chargement partiel d'un graphe pose la question de ce qui est pr&amp;eacute;sent ou absent ;&lt;/li&gt;
&lt;li&gt;la modification d'un objet doit devenir un ensemble minimal d'ordres SQL ;&lt;/li&gt;
&lt;li&gt;deux utilisateurs peuvent modifier la m&amp;ecirc;me ligne entre lecture et &amp;eacute;criture.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La documentation de Hibernate r&amp;eacute;sume l'objectif historique de l'ORM comme la suppression du code fragile et non typ&amp;eacute; afin de rendre les grands programmes plus maintenables [1]. Cette ambition est plus pr&amp;eacute;cise que &amp;laquo; ne plus &amp;eacute;crire de SQL &amp;raquo;.&lt;/p&gt;
&lt;h2 id="ce-que-coute-reellement-le-mapping-manuel"&gt;Ce que co&amp;ucirc;te r&amp;eacute;ellement le mapping manuel&lt;/h2&gt;
&lt;p&gt;Le SQL explicite est robuste et pr&amp;eacute;visible. Il ne faut pas le caricaturer. Une lecture ADO.NET correctement &amp;eacute;crite est parfaitement saine :&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;await using var command = connection.CreateCommand();
command.CommandText = """
    SELECT Id, Name
    FROM Customers
    WHERE Id = @id;
    """;

var idParameter = command.CreateParameter();
idParameter.ParameterName = "@id";
idParameter.Value = customerId;
command.Parameters.Add(idParameter);

await using var reader = await command.ExecuteReaderAsync();

Customer? customer = null;

if (await reader.ReadAsync())
{
    customer = new Customer
    {
        Id = reader.GetInt32(0),
        Name = reader.GetString(1)
    };
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ce code a plusieurs qualit&amp;eacute;s : la requ&amp;ecirc;te est visible, les colonnes sont choisies et l'ex&amp;eacute;cution ne comporte pas de m&amp;eacute;canisme implicite. Mais le co&amp;ucirc;t ne se limite pas &amp;agrave; ces vingt lignes. Il faut encore :&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;reconstruire les commandes du client ;&lt;/li&gt;
&lt;li&gt;&amp;eacute;viter de cr&amp;eacute;er plusieurs instances repr&amp;eacute;sentant la m&amp;ecirc;me ligne ;&lt;/li&gt;
&lt;li&gt;d&amp;eacute;tecter les objets nouveaux, modifi&amp;eacute;s ou supprim&amp;eacute;s ;&lt;/li&gt;
&lt;li&gt;g&amp;eacute;n&amp;eacute;rer les&amp;nbsp;&lt;code&gt;INSERT&lt;/code&gt;,&amp;nbsp;&lt;code&gt;UPDATE&lt;/code&gt;&amp;nbsp;et&amp;nbsp;&lt;code&gt;DELETE&lt;/code&gt;&amp;nbsp;dans le bon ordre ;&lt;/li&gt;
&lt;li&gt;convertir les valeurs et traiter les&amp;nbsp;&lt;code&gt;NULL&lt;/code&gt;&amp;nbsp;;&lt;/li&gt;
&lt;li&gt;g&amp;eacute;rer la transaction ;&lt;/li&gt;
&lt;li&gt;d&amp;eacute;tecter les conflits de concurrence ;&lt;/li&gt;
&lt;li&gt;maintenir le mapping apr&amp;egrave;s chaque &amp;eacute;volution du sch&amp;eacute;ma.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Le mapping manuel ne devient pas mauvais pour autant. Il devient co&amp;ucirc;teux lorsque ces op&amp;eacute;rations se r&amp;eacute;p&amp;egrave;tent sur des dizaines d'entit&amp;eacute;s et des centaines de requ&amp;ecirc;tes.&lt;/p&gt;
&lt;h2 id="les-patterns-existaient-avant-les-produits"&gt;Les patterns existaient avant les produits&lt;/h2&gt;
&lt;p&gt;Les ORM n'ont pas invent&amp;eacute; toutes leurs id&amp;eacute;es. Ils industrialisent des patterns de persistance d&amp;eacute;j&amp;agrave; identifi&amp;eacute;s.&lt;/p&gt;
&lt;h3 id="active-record"&gt;Active Record&lt;/h3&gt;
&lt;p&gt;L'objet porte lui-m&amp;ecirc;me les op&amp;eacute;rations de persistance :&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;public sealed class Customer
{
    public int Id { get; private set; }
    public required string Name { get; set; }

    public Task SaveAsync(CancellationToken cancellationToken = default)
    {
        // La classe conna&amp;icirc;t directement son stockage.
        throw new NotImplementedException();
    }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Cette approche est directe et efficace pour des applications simples. Elle couple cependant le mod&amp;egrave;le m&amp;eacute;tier &amp;agrave; la persistance et devient moins confortable lorsque les transactions impliquent plusieurs types.&lt;/p&gt;
&lt;h3 id="data-mapper"&gt;Data Mapper&lt;/h3&gt;
&lt;p&gt;Le mapping est confi&amp;eacute; &amp;agrave; un composant s&amp;eacute;par&amp;eacute; :&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;public interface ICustomerMapper
{
    Task&amp;lt;Customer?&amp;gt; FindAsync(
        int id,
        CancellationToken cancellationToken = default);

    Task InsertAsync(
        Customer customer,
        CancellationToken cancellationToken = default);
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Le domaine ignore alors les d&amp;eacute;tails de stockage. Les ORM complets, dont Entity Framework et Hibernate, se rapprochent g&amp;eacute;n&amp;eacute;ralement de cette famille.&lt;/p&gt;
&lt;h3 id="unit-of-work"&gt;Unit of Work&lt;/h3&gt;
&lt;p&gt;Une unit&amp;eacute; de travail m&amp;eacute;morise les changements effectu&amp;eacute;s pendant une op&amp;eacute;ration m&amp;eacute;tier et les synchronise avec la base au moment appropri&amp;eacute;. La documentation Microsoft reprend la d&amp;eacute;finition de Martin Fowler : une unit&amp;eacute; de travail &amp;laquo; keeps track of everything you do during a business transaction &amp;raquo; [2]. Avec EF Core,&amp;nbsp;&lt;code&gt;DbContext&lt;/code&gt;&amp;nbsp;remplit pr&amp;eacute;cis&amp;eacute;ment ce r&amp;ocirc;le.&lt;/p&gt;
&lt;h3 id="identity-map"&gt;Identity Map&lt;/h3&gt;
&lt;p&gt;Si deux requ&amp;ecirc;tes d'une m&amp;ecirc;me unit&amp;eacute; de travail rencontrent la ligne&amp;nbsp;&lt;code&gt;Customers.Id = 42&lt;/code&gt;, elles devraient g&amp;eacute;n&amp;eacute;ralement obtenir la m&amp;ecirc;me instance suivie. Sans cette garantie, deux repr&amp;eacute;sentations contradictoires du m&amp;ecirc;me client peuvent coexister en m&amp;eacute;moire.&lt;/p&gt;
&lt;p&gt;Ces patterns permettent de comprendre les services rendus par un ORM sans les attribuer &amp;agrave; une quelconque magie.&lt;/p&gt;
&lt;h2 id="de-lorm-complet-au-micro-orm"&gt;De l'ORM complet au micro-ORM&lt;/h2&gt;
&lt;p&gt;Toutes les biblioth&amp;egrave;ques de persistance ne choisissent pas le m&amp;ecirc;me niveau d'automatisation.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Approche&lt;/th&gt;
&lt;th&gt;Ce qu'elle automatise&lt;/th&gt;
&lt;th&gt;Ce qu'elle laisse au d&amp;eacute;veloppeur&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;ADO.NET&lt;/td&gt;
&lt;td&gt;Connexion, commande, lecteur, param&amp;egrave;tres&lt;/td&gt;
&lt;td&gt;SQL, mapping, suivi et unit&amp;eacute; de travail&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Micro-ORM&lt;/td&gt;
&lt;td&gt;Ex&amp;eacute;cution et mapping des r&amp;eacute;sultats&lt;/td&gt;
&lt;td&gt;SQL, strat&amp;eacute;gie de chargement, changements&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ORM complet&lt;/td&gt;
&lt;td&gt;Mapping, requ&amp;ecirc;tes, relations, suivi, migrations&lt;/td&gt;
&lt;td&gt;Mod&amp;egrave;le, intentions, contr&amp;ocirc;le du SQL et optimisation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Active Record&lt;/td&gt;
&lt;td&gt;Persistance attach&amp;eacute;e au mod&amp;egrave;le&lt;/td&gt;
&lt;td&gt;Organisation m&amp;eacute;tier et requ&amp;ecirc;tes sp&amp;eacute;cifiques&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Dapper, apparu plus tard dans l'&amp;eacute;cosyst&amp;egrave;me .NET, occupe volontairement une position interm&amp;eacute;diaire : le d&amp;eacute;veloppeur &amp;eacute;crit le SQL, tandis que la biblioth&amp;egrave;que mat&amp;eacute;rialise les r&amp;eacute;sultats. Entity Framework prend en charge un p&amp;eacute;rim&amp;egrave;tre plus large, au prix d'une abstraction plus importante.&lt;/p&gt;
&lt;p&gt;La question pertinente n'est donc pas &amp;laquo; ORM ou pas ORM ? &amp;raquo;, mais &amp;laquo; quelle partie de la plomberie voulons-nous automatiser dans ce contexte ? &amp;raquo;&lt;/p&gt;
&lt;h2 id="hors-de-microsoft-plusieurs-reponses-au-meme-probleme"&gt;Hors de Microsoft : plusieurs r&amp;eacute;ponses au m&amp;ecirc;me probl&amp;egrave;me&lt;/h2&gt;
&lt;p&gt;Les premi&amp;egrave;res solutions objet-relationnelles sont ant&amp;eacute;rieures &amp;agrave; .NET. Les bases objet, les outils Smalltalk, TopLink, puis Hibernate dans l'&amp;eacute;cosyst&amp;egrave;me Java ont explor&amp;eacute; diff&amp;eacute;rentes mani&amp;egrave;res de pr&amp;eacute;server une programmation orient&amp;eacute;e objet au-dessus d'un stockage relationnel.&lt;/p&gt;
&lt;p&gt;Hibernate a particuli&amp;egrave;rement influenc&amp;eacute; la perception moderne des ORM : classes persistantes ordinaires, sessions, requ&amp;ecirc;tes sur le mod&amp;egrave;le objet, suivi des changements et mapping configurable. NHibernate a port&amp;eacute; cette famille d'id&amp;eacute;es vers .NET.&lt;/p&gt;
&lt;p&gt;Il serait toutefois incorrect de raconter une progression lin&amp;eacute;aire o&amp;ugrave; chaque nouvel outil remplace le pr&amp;eacute;c&amp;eacute;dent. Les approches ont coexist&amp;eacute; parce qu'elles optimisent des besoins diff&amp;eacute;rents, alimentant encore plus la confusion dans les souvenirs :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;application m&amp;eacute;tier orient&amp;eacute;e domaine ;&lt;/li&gt;
&lt;li&gt;reporting centr&amp;eacute; sur le mod&amp;egrave;le relationnel ;&lt;/li&gt;
&lt;li&gt;traitement par lots ;&lt;/li&gt;
&lt;li&gt;lecture &amp;agrave; tr&amp;egrave;s fort volume ;&lt;/li&gt;
&lt;li&gt;base h&amp;eacute;rit&amp;eacute;e domin&amp;eacute;e par les proc&amp;eacute;dures stock&amp;eacute;es ;&lt;/li&gt;
&lt;li&gt;produit multiplateforme devant prendre en charge plusieurs moteurs.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;M&amp;ecirc;me la documentation Hibernate actuelle insiste sur un point souvent oubli&amp;eacute; : son objectif n'est pas de cacher SQL ou le mod&amp;egrave;le relationnel [3]. Cette observation vaut aussi pour EF Core.&lt;/p&gt;
&lt;h2 id="chez-microsoft-avant-entity-framework"&gt;Chez Microsoft : avant Entity Framework&lt;/h2&gt;
&lt;h3 id="ado-puis-ado.net"&gt;ADO puis ADO.NET&lt;/h3&gt;
&lt;p&gt;ADO.NET fournit les primitives fondamentales : connexions, commandes, transactions, param&amp;egrave;tres, lecteurs et adaptateurs. Son mod&amp;egrave;le est explicite et proche de la base. Il reste encore aujourd'hui la fondation de nombreux fournisseurs .NET.&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;await using var transaction = await connection.BeginTransactionAsync();

try
{
    // Commandes explicites utilisant la m&amp;ecirc;me connexion et la m&amp;ecirc;me transaction.
    await transaction.CommitAsync();
}
catch
{
    await transaction.RollbackAsync();
    throw;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;ADO.NET ne promet pas de r&amp;eacute;soudre le d&amp;eacute;calage objet-relationnel. Il donne les moyens de communiquer avec le moteur.&lt;/p&gt;
&lt;h3 id="dataset-et-datatable"&gt;DataSet et DataTable&lt;/h3&gt;
&lt;p&gt;Le&amp;nbsp;&lt;code&gt;DataSet&lt;/code&gt;&amp;nbsp;repr&amp;eacute;sente des donn&amp;eacute;es relationnelles d&amp;eacute;connect&amp;eacute;es en m&amp;eacute;moire : tables, colonnes, relations et contraintes. Il s'int&amp;eacute;grait remarquablement bien aux designers et au data binding de l'&amp;eacute;poque.&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;var dataSet = new DataSet();
var customers = new DataTable("Customers");

customers.Columns.Add("Id", typeof(int));
customers.Columns.Add("Name", typeof(string));

dataSet.Tables.Add(customers);
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Cette repr&amp;eacute;sentation est centr&amp;eacute;e sur les donn&amp;eacute;es, pas sur un domaine objet riche. Les DataSets typ&amp;eacute;s ont ajout&amp;eacute; g&amp;eacute;n&amp;eacute;ration de code et s&amp;eacute;curit&amp;eacute; de typage, tout en conservant cette philosophie tabulaire.&lt;/p&gt;
&lt;h3 id="linq-to-sql"&gt;LINQ to SQL&lt;/h3&gt;
&lt;p&gt;LINQ to SQL a introduit une rupture importante : interroger SQL Server avec des expressions LINQ fortement typ&amp;eacute;es et mat&amp;eacute;rialiser des objets. Son p&amp;eacute;rim&amp;egrave;tre &amp;eacute;tait plus simple que celui d'Entity Framework et son int&amp;eacute;gration au langage s&amp;eacute;duisante.&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;var activeCustomers =
    from customer in dataContext.Customers
    where customer.IsActive
    orderby customer.Name
    select customer;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;LINQ to SQL n'est pas &amp;laquo; EF avant EF &amp;raquo;. C'est une technologie distincte, largement centr&amp;eacute;e sur SQL Server et sur un mapping assez direct entre tables et classes.&lt;/p&gt;
&lt;h3 id="nhibernate"&gt;NHibernate&lt;/h3&gt;
&lt;p&gt;Avant la maturit&amp;eacute; d'Entity Framework, NHibernate constituait d&amp;eacute;j&amp;agrave; un ORM complet cr&amp;eacute;dible sur .NET. Il proposait sessions, mappings, lazy loading, requ&amp;ecirc;tes objet et unit&amp;eacute; de travail. Sa pr&amp;eacute;sence montre qu'Entity Framework n'est pas n&amp;eacute; dans un vide technique ; Microsoft entrait dans un domaine d&amp;eacute;j&amp;agrave; explor&amp;eacute;.&lt;br /&gt;&lt;img src="data:image/png;base64,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" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Figure 4 &amp;mdash; Les outils de persistance forment un continuum. Davantage d'automatisation r&amp;eacute;duit la plomberie, mais augmente la n&amp;eacute;cessit&amp;eacute; de comprendre le comportement de l'abstraction.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id="lambition-particuliere-dentity-framework"&gt;L'ambition particuli&amp;egrave;re d'Entity Framework&lt;/h2&gt;
&lt;p&gt;La premi&amp;egrave;re ambition d'Entity Framework d&amp;eacute;passait le simple mapping table-classe. Dans une pr&amp;eacute;sentation de la Beta 1 d'&amp;laquo; Orcas &amp;raquo; publi&amp;eacute;e en 2007, John Papa expliquait que le framework permettait de travailler avec un mod&amp;egrave;le conceptuel plut&amp;ocirc;t qu'avec le sch&amp;eacute;ma relationnel logique [4].&lt;/p&gt;
&lt;p&gt;Le syst&amp;egrave;me distinguait :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;un mod&amp;egrave;le conceptuel repr&amp;eacute;sentant les entit&amp;eacute;s utilis&amp;eacute;es par l'application ;&lt;/li&gt;
&lt;li&gt;un mod&amp;egrave;le de stockage repr&amp;eacute;sentant la base ;&lt;/li&gt;
&lt;li&gt;une couche de mapping reliant les deux.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Cette ambition explique &amp;agrave; la fois la puissance et la lourdeur des premi&amp;egrave;res versions. Entity Framework ne cherchait pas uniquement &amp;agrave; &amp;eacute;conomiser du code de mapping. Il cherchait &amp;agrave; introduire un mod&amp;egrave;le de donn&amp;eacute;es conceptuel ind&amp;eacute;pendant de l'organisation physique.&lt;/p&gt;
&lt;p&gt;La documentation historique d&amp;eacute;finit d'ailleurs l'ADO.NET Entity Framework comme un ensemble de technologies permettant de programmer contre le mod&amp;egrave;le conceptuel de l'application plut&amp;ocirc;t que directement contre le sch&amp;eacute;ma relationnel [5].&lt;/p&gt;
&lt;h2 id="sql-est-reste-parce-quil-reste-necessaire"&gt;SQL est rest&amp;eacute; parce qu'il reste n&amp;eacute;cessaire&lt;/h2&gt;
&lt;p&gt;Dire que SQL n'a pas &amp;eacute;volu&amp;eacute; depuis trente ans serait inexact. Les fonctions analytiques, les expressions de table communes, les types JSON, les tables temporelles et de nombreuses capacit&amp;eacute;s propres aux moteurs ont profond&amp;eacute;ment enrichi le langage et ses impl&amp;eacute;mentations, jusqu'aux extensions vectorielles pour le RAG.&lt;/p&gt;
&lt;p&gt;Ce qui est rest&amp;eacute; stable est son socle mental : ensembles, projections, filtres, jointures, agr&amp;eacute;gations, contraintes et transactions. Cette stabilit&amp;eacute; rend le SQL explicite et rassurant. Une requ&amp;ecirc;te valid&amp;eacute;e et correctement index&amp;eacute;e peut vivre longtemps.&lt;/p&gt;
&lt;p&gt;Mais &amp;eacute;crire tout le code de persistance en SQL ne supprime pas les probl&amp;egrave;mes de mod&amp;egrave;le, de transaction ou de concurrence. Cela d&amp;eacute;place leur r&amp;eacute;solution dans le code applicatif et dans la base.&lt;/p&gt;
&lt;p&gt;Un ORM est utile lorsqu'il :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;r&amp;eacute;duit effectivement la r&amp;eacute;p&amp;eacute;tition ;&lt;/li&gt;
&lt;li&gt;conserve un SQL raisonnable ;&lt;/li&gt;
&lt;li&gt;rend les fronti&amp;egrave;res transactionnelles lisibles ;&lt;/li&gt;
&lt;li&gt;autorise une &amp;eacute;chappatoire vers SQL ;&lt;/li&gt;
&lt;li&gt;reste observable ;&lt;/li&gt;
&lt;li&gt;ne pr&amp;eacute;tend pas rendre le moteur sans importance.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Il devient nuisible lorsqu'il est utilis&amp;eacute; pour &amp;eacute;viter d'apprendre la base relationnelle.&lt;/p&gt;
&lt;h2 id="a-retenir"&gt;&amp;Agrave; retenir&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Le probl&amp;egrave;me central n'est pas la syntaxe SQL, mais la synchronisation entre un graphe d'objets et des ensembles relationnels.&lt;/li&gt;
&lt;li&gt;ADO.NET est une API d'acc&amp;egrave;s explicite, pas un ORM incomplet.&lt;/li&gt;
&lt;li&gt;Active Record, Data Mapper, Unit of Work et Identity Map sont des patterns, pas des fonctions propres &amp;agrave; EF.&lt;/li&gt;
&lt;li&gt;Les micro-ORM et les ORM complets occupent des positions diff&amp;eacute;rentes sur un continuum d'automatisation.&lt;/li&gt;
&lt;li&gt;LINQ to SQL et Entity Framework sont des produits distincts.&lt;/li&gt;
&lt;li&gt;La premi&amp;egrave;re ambition d'Entity Framework &amp;eacute;tait un mod&amp;egrave;le conceptuel s&amp;eacute;par&amp;eacute; du mod&amp;egrave;le de stockage.&lt;/li&gt;
&lt;li&gt;Un ORM correctement utilis&amp;eacute; ne dispense jamais de comprendre SQL.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Conclusion partielle&lt;/h2&gt;
&lt;p&gt;La prochaine partie examinera comment cette ambition initiale a produit l'EDMX, pourquoi Code First a chang&amp;eacute; la source de v&amp;eacute;rit&amp;eacute;, et pourquoi EF Core a finalement n&amp;eacute;cessit&amp;eacute; une r&amp;eacute;&amp;eacute;criture.&lt;br /&gt;J'esp&amp;egrave;re sinc&amp;egrave;rement que cette remise &amp;agrave; plat &amp;agrave; la fois d'une histoire riche en rebondissements et en enseignemens techniques vous donnera, au fil des articles, une vision neuve et compl&amp;egrave;te des ORM dans le monde .NET et ce quest aujoud'hui EF Core, ce qui'il offre vraiment, et ce qu'il n'est pas ou plus.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;Stay Tuned!&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 id="references"&gt;R&amp;eacute;f&amp;eacute;rences&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Hibernate ORM,&amp;nbsp;&lt;a href="https://docs.hibernate.org/orm/7.1/introduction/pdf/Hibernate_Introduction.pdf"&gt;&amp;laquo; A Short Guide to Hibernate 7 &amp;raquo;&lt;/a&gt;, introduction &amp;agrave; l'ORM.&lt;/li&gt;
&lt;li&gt;Microsoft Learn,&amp;nbsp;&lt;a href="https://learn.microsoft.com/en-us/ef/core/dbcontext-configuration/"&gt;&amp;laquo; DbContext Lifetime, Configuration, and Initialization &amp;raquo;&lt;/a&gt;, citation et application du pattern Unit of Work.&lt;/li&gt;
&lt;li&gt;Hibernate ORM,&amp;nbsp;&lt;a href="https://docs.hibernate.org/orm/6.0/userguide/html_single/"&gt;&amp;laquo; Hibernate ORM User Guide &amp;raquo;&lt;/a&gt;, pr&amp;eacute;face et objectifs de conception.&lt;/li&gt;
&lt;li&gt;John Papa,&amp;nbsp;&lt;a href="https://learn.microsoft.com/en-us/archive/msdn-magazine/2007/july/data-points-ado-net-entity-framework-overview"&gt;&amp;laquo; ADO.NET Entity Framework Overview &amp;raquo;&lt;/a&gt;, MSDN Magazine, juillet 2007.&lt;/li&gt;
&lt;li&gt;Microsoft Open Specifications,&amp;nbsp;&lt;a href="https://learn.microsoft.com/en-us/openspecs/windows_protocols/mc-csdl/5fb358df-38b0-422d-964a-a636231507a7"&gt;&amp;laquo; ADO.NET Entity Framework &amp;mdash; Glossary &amp;raquo;&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Martin Fowler,&amp;nbsp;&lt;a href="https://martinfowler.com/eaaCatalog/dataMapper.html"&gt;&amp;laquo; Data Mapper &amp;raquo;&lt;/a&gt;,&amp;nbsp;&lt;em&gt;Patterns of Enterprise Application Architecture&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;Martin Fowler,&amp;nbsp;&lt;a href="https://martinfowler.com/eaaCatalog/activeRecord.html"&gt;&amp;laquo; Active Record &amp;raquo;&lt;/a&gt;,&amp;nbsp;&lt;em&gt;Patterns of Enterprise Application Architecture&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;Martin Fowler,&amp;nbsp;&lt;a href="https://martinfowler.com/eaaCatalog/unitOfWork.html"&gt;&amp;laquo; Unit of Work &amp;raquo;&lt;/a&gt;,&amp;nbsp;&lt;em&gt;Patterns of Enterprise Application Architecture&lt;/em&gt;.&lt;/li&gt;
&lt;/ol&gt;</description>
      <link>http://www.e-naxos.com/Blog/post/pourquoi-avons-nous-invente-les-orm</link>
      <author>odahan@e-naxos.com</author>
      <comments>http://www.e-naxos.com/Blog/post/pourquoi-avons-nous-invente-les-orm#comment</comments>
      <guid>http://www.e-naxos.com/Blog/post.aspx?id=8303ec2f-fa24-4afc-b659-27e34e2c3832</guid>
      <pubDate>ven., 2 oct. 2026 13:30:00 +0100</pubDate>
      <category>C#</category>
      <category>Données</category>
      <betag:tag>ef</betag:tag>
      <dc:publisher>Olivier</dc:publisher>
      <pingback:server>http://www.e-naxos.com/Blog/pingback.axd</pingback:server>
      <pingback:target>http://www.e-naxos.com/Blog/post.aspx?id=8303ec2f-fa24-4afc-b659-27e34e2c3832</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://www.e-naxos.com/Blog/trackback.axd?id=8303ec2f-fa24-4afc-b659-27e34e2c3832</trackback:ping>
      <wfw:comment>http://www.e-naxos.com/Blog/post/pourquoi-avons-nous-invente-les-orm#comment</wfw:comment>
      <wfw:commentRss>http://www.e-naxos.com/Blog/syndication.axd?post=8303ec2f-fa24-4afc-b659-27e34e2c3832</wfw:commentRss>
    </item>
    <item>
      <title>Vous ne connaissez probablement plus Entity Framework</title>
      <description>&lt;p id="vous-ne-connaissez-probablement-plus-entity-framework"&gt;&lt;em&gt;Vingt ans de changements ont rendu une partie de nos certitudes obsol&amp;egrave;tes. &lt;/em&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;S&amp;eacute;rie &amp;mdash; Entity Framework : remettre les compteurs &amp;agrave; z&amp;eacute;ro&lt;/strong&gt;&lt;br /&gt;Article d'ouverture. Les quatre articles suivants reviendront sur l'origine des ORM, l'histoire d'Entity Framework, la prise en main d'EF Core et les pratiques n&amp;eacute;cessaires en production.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="le-produit-dont-vous-vous-souvenez-nexiste-peut-etre-plus"&gt;Le produit dont vous vous souvenez n'existe peut-&amp;ecirc;tre plus&lt;/h2&gt;
&lt;p&gt;Vous avez utilis&amp;eacute; Entity Framework il y a dix ou quinze ans. Vous vous souvenez d'un designer, d'un fichier EDMX, de classes g&amp;eacute;n&amp;eacute;r&amp;eacute;es et de requ&amp;ecirc;tes SQL parfois surprenantes. Vous avez peut-&amp;ecirc;tre adopt&amp;eacute; Dapper, &amp;eacute;crit des proc&amp;eacute;dures stock&amp;eacute;es ou repris le contr&amp;ocirc;le avec ADO.NET. Un nouveau projet arrive, quelqu'un propose EF Core, et vous pensez d&amp;eacute;j&amp;agrave; conna&amp;icirc;tre la suite.&lt;/p&gt;
&lt;p&gt;Le probl&amp;egrave;me est que le produit dont vous vous souvenez n'existe plus vraiment. Son nom a surv&amp;eacute;cu, certaines id&amp;eacute;es aussi, mais l'architecture, les outils et une grande partie des compromis ont chang&amp;eacute;.&lt;/p&gt;
&lt;p&gt;Le ph&amp;eacute;nom&amp;egrave;ne inverse existe &amp;eacute;galement. Un d&amp;eacute;veloppeur ayant commenc&amp;eacute; avec EF Core peut croire que l'expression &amp;laquo; Entity Framework &amp;raquo; a toujours d&amp;eacute;sign&amp;eacute; un ORM l&amp;eacute;ger, distribu&amp;eacute; par packages NuGet, configur&amp;eacute; en C# et naturellement int&amp;eacute;gr&amp;eacute; &amp;agrave; l'injection de d&amp;eacute;pendances. Ce n'est pas davantage exact.&lt;/p&gt;
&lt;p&gt;Sous un m&amp;ecirc;me nom se cachent plusieurs g&amp;eacute;n&amp;eacute;rations technologiques : le mod&amp;egrave;le conceptuel ambitieux de l'ADO.NET Entity Framework, le designer EDMX, Database First, Model First, Code First,&amp;nbsp;&lt;code&gt;ObjectContext&lt;/code&gt;,&amp;nbsp;&lt;code&gt;DbContext&lt;/code&gt;, puis une r&amp;eacute;&amp;eacute;criture multiplateforme qui a d'abord perdu de nombreuses fonctions avant de les reconstruire autrement.&lt;/p&gt;
&lt;p&gt;&lt;img src="data:image/png;base64,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9VVf9VVf9VVf9VVf9VVf9VVf9VVf9Y1WfgAAAACAiAmwAAAAAIiaAAsAAACAqAmwAAAAAIiaAAsAAACAqAmwAAAAAIiaAAsAAACAqAmwAAAAAIiaAAsAAACAqAmwAAAAAIiaAAsAAACAqAmwAAAAAIiaAAsAAACAqAmwAAAAAIiaAAsAAACAqAmwAAAAAIiaAAsAAACAqAmwAAAAAIiaAAsAAACAqAmwAAAAAIiaAAsAAACAqAmwAAAAAIiaAAsAAACAqAmwAAAAAIiaAAsAAACAqAmwAAAAAIiaAAsAAACAqAmwAAAAAIiaAAsAAACAqAmwAAAAAIiaAAsAAACAqAmwAAAAAIiaAAsAAACAqAmwAAAAAIiaAAsAAACAqAmwAAAAAIiaAAsAAACAqAmwAAAAAIiaAAsAAACAqAmwAAAAAIiaAAsAAACAqAmwAAAAAIiaAAsAAACAqAmwAAAAAIiaAAsAAACAqAmwAAAAAIiaAAsAAACAqAmwAAAAAIiaAAsAAACAqAmwAAAAAIiaAAsAAACAqAmwAAAAAIiaAAsAAACAqAmwAAAAAIiaAAsAAACAqAmwAAAAAIiaAAsAAACAqAmwAAAAAIiaAAsAAACAqAmwAAAAAIiaAAsAAACAqAmwAAAAAIiaAAsAAACAqAmwAAAAAIiaAAsAAACAqAmwAAAAAIiaAAsAAACAqAmwAAAAAIiaAAsAAACAqAmwAAAAAIiaAAsAAACAqAmwAAAAAIiaAAsAAACAqAmwAAAAAIiaAAsAAACAqAmwAAAAAIiaAAsAAACAqAmwAAAAAIhaXv3WXbUCAAAAANGqGEJYuuij306FazVspr7qq77qq77qq77qq77qq77qq77qq77qq76bEF8hBAAAACBqAiwAAAAAoibAAgAAACBqAiwAAAAAoibAAgAAACBqAiwAAAAAoibAAgAAACBqAiwAAAAAoibAAgAAACBqAiwAAAAAoibAAgAAACBqAiwAAAAAoibAAgAAACBqAiwAAAAAoibAAgAAACBqAiwAAAAAoibAAgAAACBqAiwAAAAAoibAAgAAACBqAiwAAAAAoibAAgAAACBqAiwAAAAAoibAAgAAACBqAiwAAAAAoibAAgAAACBqAiwAAAAAoibAAgAAACBqAiwAAAAAoibAAgAAACBqAiwAAAAAoibAAgAAACBqAiwAAAAAoibAAgAAACBqAiwAAAAAoibAAgAAACBqAiwAAAAAoibAAgAAACBqAiwAAAAAoibAAgAAACBqAiwAAAAAoibAAgAAACBqAiwAAAAAoibAAgAAACBqAiwAAAAAoibAAgAAACBqAiwAAAAAoibAAgAAACBqAiwAAAAAoibAAgAAACBqAiwAAAAAoibAAgAAACBqAiwAAAAAoibAAgAAACBqAiwAAAAAoibAAgAAACBqAiwAAAAAoibAAgAAACBqAiwAAAAAoibAAgAAACBqAiwAAAAAoibAAgAAACBqAiwAAAAAoibAAgAAACBqAiwAAAAAoibAAgAAACBqAiwAAAAAoibAAgAAACBqAiwAAAAAoibAAgAAACBqAiwAAAAAoibAAgAAACBqAiwAAAAAoibAAgAAACBqAiwAAAAAoibAAgAAACBqAiwAAAAAoibAAgAAACBqAiwAAAAAopZXv3VXrQAAAABAtCqGEJYu+ui3U+FaDZupr/qqr/qqr/qqr/qqr/qqr/qqr/qqr/qq7ybEVwgBAAAAiJoACwAAAICoCbAAAAAAiJoACwAAAICoCbAAAAAAiJoACwAAAICoCbAAAAAAiJoACwAAAICoCbAAAAAAiJoACwAAAICoCbAAAAAAiJoACwAAAICoCbAAAAAAiJoACwAAAICoCbAAAAAAiJoACwAAAICoCbAAAAAAiJoACwAAAICo/S/vyDXeaAZRogAAAABJRU5ErkJggg==" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Figure 1 &amp;mdash; Plusieurs g&amp;eacute;n&amp;eacute;rations de persistance .NET ont coexist&amp;eacute;. La fl&amp;egrave;che repr&amp;eacute;sente une &amp;eacute;volution des usages, pas une filiation stricte entre tous les produits.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id="les-critiques-anciennes-netaient-pas-imaginaires"&gt;Les critiques anciennes n'&amp;eacute;taient pas imaginaires&lt;/h2&gt;
&lt;p&gt;Il serait malhonn&amp;ecirc;te de r&amp;eacute;duire les r&amp;eacute;ticences &amp;agrave; un manque de formation. Certaines versions d'Entity Framework ont r&amp;eacute;ellement &amp;eacute;t&amp;eacute; lourdes. Le mod&amp;egrave;le conceptuel avait un co&amp;ucirc;t. Les fichiers EDMX pouvaient devenir difficiles &amp;agrave; fusionner. Le lazy loading a provoqu&amp;eacute; une quantit&amp;eacute; consid&amp;eacute;rable de probl&amp;egrave;mes N+1. Certaines traductions LINQ &amp;eacute;taient incompl&amp;egrave;tes ou inefficaces. Les migrations ont parfois &amp;eacute;t&amp;eacute; trait&amp;eacute;es comme un bouton magique de d&amp;eacute;ploiement.&lt;/p&gt;
&lt;p&gt;Les d&amp;eacute;buts d'EF Core ont ajout&amp;eacute; une autre couche de confusion. La version 1.0 apportait une architecture nouvelle, mais elle ne rempla&amp;ccedil;ait pas fonctionnellement EF6. Dans son annonce de juin 2016, Rowan Miller recommandait encore EF Core principalement pour les nouvelles applications ne n&amp;eacute;cessitant pas les fonctionnalit&amp;eacute;s absentes. Il reconnaissait aussi que son fournisseur LINQ &amp;eacute;tait encore en maturation [1]. Ce rappel historique explique pourquoi deux avis oppos&amp;eacute;s pouvaient &amp;ecirc;tre vrais au m&amp;ecirc;me moment : EF Core repr&amp;eacute;sentait l'avenir architectural, tandis qu'EF6 restait souvent le choix fonctionnel le plus complet.&lt;/p&gt;
&lt;p&gt;Aujourd'hui, juger EF Core uniquement &amp;agrave; partir de cette p&amp;eacute;riode serait aussi erron&amp;eacute; que de juger C# actuel &amp;agrave; partir de C# 2.0. Mais l'exc&amp;egrave;s inverse serait tout aussi mauvais : un ORM mature ne dispense pas de conna&amp;icirc;tre SQL, les index, les transactions ou le moteur r&amp;eacute;ellement utilis&amp;eacute;.&lt;/p&gt;
&lt;h2 id="quelques-certitudes-a-reexaminer"&gt;Quelques certitudes &amp;agrave; r&amp;eacute;examiner&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Certitude fr&amp;eacute;quente&lt;/th&gt;
&lt;th&gt;Ce qu'il faut v&amp;eacute;rifier aujourd'hui&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&amp;laquo; Entity Framework impose un EDMX. &amp;raquo;&lt;/td&gt;
&lt;td&gt;EF Core utilise g&amp;eacute;n&amp;eacute;ralement des classes C# et une configuration par conventions ou Fluent API.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;laquo; Les entit&amp;eacute;s doivent &amp;ecirc;tre g&amp;eacute;n&amp;eacute;r&amp;eacute;es. &amp;raquo;&lt;/td&gt;
&lt;td&gt;Elles peuvent &amp;ecirc;tre de simples classes sans d&amp;eacute;pendance &amp;agrave; EF Core.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;laquo; Une requ&amp;ecirc;te LINQ charge n&amp;eacute;cessairement des entit&amp;eacute;s. &amp;raquo;&lt;/td&gt;
&lt;td&gt;Une projection peut produire directement le DTO utile.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;laquo; Tout est suivi en m&amp;eacute;moire. &amp;raquo;&lt;/td&gt;
&lt;td&gt;Le tracking est contr&amp;ocirc;lable et inutile pour de nombreuses lectures.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;laquo; Une mise &amp;agrave; jour collective exige de charger toutes les lignes. &amp;raquo;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;ExecuteUpdate&lt;/code&gt;&amp;nbsp;et&amp;nbsp;&lt;code&gt;ExecuteDelete&lt;/code&gt;&amp;nbsp;agissent directement en base.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;laquo; Le SQL est cach&amp;eacute;. &amp;raquo;&lt;/td&gt;
&lt;td&gt;Les journaux et&amp;nbsp;&lt;code&gt;ToQueryString()&lt;/code&gt;&amp;nbsp;permettent de l'inspecter.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;laquo; EF rend tous les moteurs interchangeables. &amp;raquo;&lt;/td&gt;
&lt;td&gt;Les fournisseurs partagent un socle, mais conservent des capacit&amp;eacute;s et des traductions diff&amp;eacute;rentes.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;laquo; Choisir EF interdit SQL ou Dapper. &amp;raquo;&lt;/td&gt;
&lt;td&gt;Une application peut combiner ces outils par cas d'usage.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;La documentation actuelle d&amp;eacute;crit&amp;nbsp;&lt;code&gt;DbContext&lt;/code&gt;&amp;nbsp;comme une unit&amp;eacute; de travail de courte dur&amp;eacute;e et pr&amp;eacute;cise qu'il n'est pas thread-safe [2]. Ce simple point &amp;eacute;limine d&amp;eacute;j&amp;agrave; deux erreurs historiques : conserver un contexte pendant toute la dur&amp;eacute;e de vie d'une application, ou partager la m&amp;ecirc;me instance entre op&amp;eacute;rations parall&amp;egrave;les.&lt;/p&gt;
&lt;h2 id="une-premiere-preuve-par-le-code"&gt;Une premi&amp;egrave;re preuve par le code&lt;/h2&gt;
&lt;p&gt;Voici un mod&amp;egrave;le EF Core complet, volontairement r&amp;eacute;duit :&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;using Microsoft.EntityFrameworkCore;

public sealed class Customer
{
    public int Id { get; set; }
    public required string Name { get; set; }
}

public sealed class SalesDbContext(
    DbContextOptions&amp;lt;SalesDbContext&amp;gt; options)
    : DbContext(options)
{
    public DbSet&amp;lt;Customer&amp;gt; Customers =&amp;gt; Set&amp;lt;Customer&amp;gt;();
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Sa configuration avec SQLite tient en quelques lignes :&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;var options = new DbContextOptionsBuilder&amp;lt;SalesDbContext&amp;gt;()
    .UseSqlite("Data Source=sales.db")
    .Options;

await using var db = new SalesDbContext(options);

// Uniquement pour cette d&amp;eacute;monstration introductive.
// La s&amp;eacute;rie utilisera ensuite de v&amp;eacute;ritables migrations.
await db.Database.EnsureCreatedAsync();
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;L'insertion et la lecture ne n&amp;eacute;cessitent ni designer ni fichier de mapping :&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;db.Customers.Add(new Customer { Name = "Contoso" });
await db.SaveChangesAsync();

var customers = await db.Customers
    .AsNoTracking()
    .OrderBy(customer =&amp;gt; customer.Name)
    .ToListAsync();
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ce code ne prouve pas qu'EF Core convient &amp;agrave; tous les projets. Il montre seulement que les anciennes repr&amp;eacute;sentations &amp;mdash; designer, XML, g&amp;eacute;n&amp;eacute;ration omnipr&amp;eacute;sente &amp;mdash; ne d&amp;eacute;crivent plus l'exp&amp;eacute;rience ordinaire.&lt;/p&gt;
&lt;h2 id="sqlite-pour-apprendre-le-veritable-moteur-pour-valider"&gt;SQLite pour apprendre, le v&amp;eacute;ritable moteur pour valider&lt;/h2&gt;
&lt;p&gt;Tous les exemples de cette s&amp;eacute;rie utiliseront SQLite. Le choix est pratique : aucun serveur &amp;agrave; installer, une base dans un fichier, un fonctionnement identique sous Windows, Linux et macOS, et une remise &amp;agrave; z&amp;eacute;ro imm&amp;eacute;diate.&lt;/p&gt;
&lt;p&gt;Changer de fournisseur commence souvent par un package et une m&amp;eacute;thode de configuration :&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;// SQLite &amp;mdash; fournisseur Microsoft
options.UseSqlite("Data Source=sales.db");

// SQL Server ou Azure SQL &amp;mdash; fournisseur Microsoft
options.UseSqlServer(sqlServerConnectionString);

// PostgreSQL &amp;mdash; fournisseur Npgsql
options.UseNpgsql(postgreSqlConnectionString);

// Oracle &amp;mdash; fournisseur Oracle
options.UseOracle(oracleConnectionString);
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Mais il faut refuser la conclusion simpliste selon laquelle seuls ces appels changeraient. La documentation des fournisseurs rappelle qu'ils peuvent &amp;eacute;tendre EF Core avec des fonctions propres au moteur [3]. SQLite ne prend notamment pas en charge les sch&amp;eacute;mas, les s&amp;eacute;quences ni les jetons de concurrence g&amp;eacute;n&amp;eacute;r&amp;eacute;s par la base. Certaines op&amp;eacute;rations sur&amp;nbsp;&lt;code&gt;decimal&lt;/code&gt;,&amp;nbsp;&lt;code&gt;DateTimeOffset&lt;/code&gt;&amp;nbsp;et&amp;nbsp;&lt;code&gt;TimeSpan&lt;/code&gt;&amp;nbsp;pr&amp;eacute;sentent &amp;eacute;galement des restrictions [4].&lt;/p&gt;
&lt;p&gt;La r&amp;egrave;gle de la s&amp;eacute;rie sera donc la suivante :&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;SQLite est notre support de d&amp;eacute;monstration, pas un simulateur universel de SQL Server, PostgreSQL ou Oracle.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Une application de production doit &amp;ecirc;tre test&amp;eacute;e avec son v&amp;eacute;ritable moteur et son v&amp;eacute;ritable fournisseur EF Core.&lt;/p&gt;
&lt;h2 id="ce-que-cette-serie-cherche-a-determiner"&gt;Ce que cette s&amp;eacute;rie cherche &amp;agrave; d&amp;eacute;terminer&lt;/h2&gt;
&lt;p&gt;La question n'est pas : &amp;laquo; EF Core est-il meilleur que SQL ? &amp;raquo; Elle est mal pos&amp;eacute;e. EF Core produit du SQL pour les fournisseurs relationnels et permet lui-m&amp;ecirc;me d'ex&amp;eacute;cuter du SQL explicite. Les vraies questions sont plus concr&amp;egrave;tes :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Pourquoi les ORM ont-ils &amp;eacute;t&amp;eacute; cr&amp;eacute;&amp;eacute;s ?&lt;/li&gt;
&lt;li&gt;Quel probl&amp;egrave;me Entity Framework cherchait-il initialement &amp;agrave; r&amp;eacute;soudre ?&lt;/li&gt;
&lt;li&gt;Pourquoi Microsoft a-t-il choisi une r&amp;eacute;&amp;eacute;criture ?&lt;/li&gt;
&lt;li&gt;Qu'est-ce qu'EF Core a conserv&amp;eacute;, abandonn&amp;eacute; ou reconstruit ?&lt;/li&gt;
&lt;li&gt;Quel est aujourd'hui le code minimal d'une application r&amp;eacute;aliste ?&lt;/li&gt;
&lt;li&gt;Comment &amp;eacute;viter le tracking inutile, le N+1 et les graphes charg&amp;eacute;s sans limite ?&lt;/li&gt;
&lt;li&gt;Comment inspecter les requ&amp;ecirc;tes g&amp;eacute;n&amp;eacute;r&amp;eacute;es ?&lt;/li&gt;
&lt;li&gt;Comment g&amp;eacute;rer les migrations, les transactions et la concurrence ?&lt;/li&gt;
&lt;li&gt;Quand faut-il pr&amp;eacute;f&amp;eacute;rer Dapper ou SQL explicite ?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Cette d&amp;eacute;marche rejoint une remarque int&amp;eacute;ressante de la documentation Hibernate : &amp;agrave; la question &amp;laquo; ORM ou SQL ? &amp;raquo;, sa r&amp;eacute;ponse courte est &amp;laquo; use both &amp;raquo; [5]. L'opposition absolue est surtout un d&amp;eacute;bat de chapelle. Un ORM sert &amp;agrave; supprimer une plomberie r&amp;eacute;p&amp;eacute;titive ; SQL reste le langage et le mod&amp;egrave;le qu'il faut comprendre.&lt;/p&gt;
&lt;p&gt;&lt;img src="data:image/png;base64,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" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Figure 2 &amp;mdash; L'article d'ouverture donne la carte ; les deux articles suivants expliquent l'histoire ; les deux derniers construisent puis durcissent la pratique.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id="le-parcours-propose"&gt;Le parcours propos&amp;eacute;&lt;/h2&gt;
&lt;h3 id="partie-1-pourquoi-avons-nous-invente-les-orm"&gt;Partie 1 &amp;mdash; Pourquoi avons-nous invent&amp;eacute; les ORM ?&lt;/h3&gt;
&lt;p&gt;Nous repartirons du d&amp;eacute;calage entre graphes d'objets et donn&amp;eacute;es relationnelles. Nous comparerons mapping manuel, Active Record, Data Mapper, ORM complet et micro-ORM, puis replacerons ADO.NET, DataSet, LINQ to SQL et NHibernate dans le paysage .NET.&lt;/p&gt;
&lt;h3 id="partie-2-dentity-framework-a-ef-core-histoire-dune-reecriture"&gt;Partie 2 &amp;mdash; D'Entity Framework &amp;agrave; EF Core : histoire d'une r&amp;eacute;&amp;eacute;criture&lt;/h3&gt;
&lt;p&gt;Nous reviendrons sur l'ambition initiale du mod&amp;egrave;le conceptuel, l'EDMX, Database First, Model First, Code First,&amp;nbsp;&lt;code&gt;DbContext&lt;/code&gt;, les migrations et la r&amp;eacute;&amp;eacute;criture EF Core. Le but ne sera pas de r&amp;eacute;citer toutes les versions, mais d'expliquer les ruptures et leurs raisons.&lt;/p&gt;
&lt;h3 id="partie-3-ef-core-aujourdhui-du-projet-vide-a-sqlite"&gt;Partie 3 &amp;mdash; EF Core aujourd'hui : du projet vide &amp;agrave; SQLite&lt;/h3&gt;
&lt;p&gt;Nous construirons une petite application de gestion commerciale avec .NET 10, EF Core 10 et SQLite : entit&amp;eacute;s, relations, configuration, migrations, insertions, lectures, projections, modifications et inspection du SQL.&lt;/p&gt;
&lt;h3 id="partie-4-bien-utiliser-ef-core-requetes-performances-et-production"&gt;Partie 4 &amp;mdash; Bien utiliser EF Core : requ&amp;ecirc;tes, performances et production&lt;/h3&gt;
&lt;p&gt;Nous passerons du code qui fonctionne au code ma&amp;icirc;tris&amp;eacute; : dur&amp;eacute;e de vie du contexte, tracking, N+1, requ&amp;ecirc;tes fractionn&amp;eacute;es, pagination, op&amp;eacute;rations ensemblistes, concurrence, transactions, SQL brut, tests et migrations en production.&lt;/p&gt;
&lt;h2 id="le-contrat-de-lecture"&gt;Le contrat de lecture&lt;/h2&gt;
&lt;p&gt;Cette s&amp;eacute;rie ne cherchera pas &amp;agrave; prouver qu'EF Core est toujours le bon choix. Ce serait faux. Elle cherchera &amp;agrave; permettre une &amp;eacute;valuation fond&amp;eacute;e sur ce qu'EF Core est devenu, non sur ce qu'Entity Framework &amp;eacute;tait il y a dix ou quinze ans.&lt;/p&gt;
&lt;p&gt;Nous commencerons donc par le probl&amp;egrave;me d'origine : pourquoi avons-nous voulu faire correspondre des objets &amp;agrave; des tables, et pourquoi cette op&amp;eacute;ration apparemment simple a-t-elle engendr&amp;eacute; autant de solutions diff&amp;eacute;rentes ?&lt;/p&gt;
&lt;h2 id="references"&gt;R&amp;eacute;f&amp;eacute;rences&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Rowan Miller,&amp;nbsp;&lt;a href="https://devblogs.microsoft.com/dotnet/entity-framework-core-1-0-0-available/"&gt;&amp;laquo; Announcing Entity Framework Core 1.0 &amp;raquo;&lt;/a&gt;, Microsoft .NET Blog, 27 juin 2016.&lt;/li&gt;
&lt;li&gt;Microsoft Learn,&amp;nbsp;&lt;a href="https://learn.microsoft.com/en-us/ef/core/dbcontext-configuration/"&gt;&amp;laquo; DbContext Lifetime, Configuration, and Initialization &amp;raquo;&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Microsoft Learn,&amp;nbsp;&lt;a href="https://learn.microsoft.com/en-us/ef/core/providers/"&gt;&amp;laquo; Database Providers &amp;raquo;&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Microsoft Learn,&amp;nbsp;&lt;a href="https://learn.microsoft.com/en-us/ef/core/providers/sqlite/limitations"&gt;&amp;laquo; SQLite EF Core Database Provider Limitations &amp;raquo;&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Hibernate ORM,&amp;nbsp;&lt;a href="https://docs.hibernate.org/orm/7.1/introduction/pdf/Hibernate_Introduction.pdf"&gt;&amp;laquo; A Short Guide to Hibernate 7 &amp;raquo;&lt;/a&gt;, section d'introduction sur ORM et SQL.&lt;/li&gt;
&lt;li&gt;Microsoft Learn,&amp;nbsp;&lt;a href="https://learn.microsoft.com/en-us/ef/core/what-is-new/ef-core-10.0/whatsnew"&gt;&amp;laquo; What's New in EF Core 10 &amp;raquo;&lt;/a&gt;. EF Core 10 est une version LTS publi&amp;eacute;e en novembre 2025 et prise en charge jusqu'au 10 novembre 2028.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Conclusion partielle&lt;/h2&gt;
&lt;p&gt;J'ai con&amp;ccedil;ui cette s&amp;eacute;rie car moi-m&amp;ecirc;me je n'y voyais plus tr&amp;egrave;s clair. Peu de mes clients utilisent encore Entity Framework et encore, juste en mode legacy, et tr&amp;egrave;s peu utilisent EF Core. En tant que MVP depuis presque 20 ans j'ai connu toutes les versions, et m&amp;ecirc;me pire pour moi et mes coll&amp;egrave;gues partageant ce titre, j'ai connu toutes les previews, les breaking changes avant m&amp;ecirc;me les releases finales connues du public. Autant dire que des "morceaux" d'Entity Framework, ma m&amp;eacute;moire en a entass&amp;eacute;s des tas et que tout cela devient un bouillie de souvenirs qui ne refl&amp;egrave;tent pas avec justice ce qu'est EF Core aujourd'hui qui paye le prix de son h&amp;eacute;ritage. C'est avant tout pour y voir clair que je me suis remplong&amp;eacute; dans l'histoire d'Entity Framework, sa raison d'&amp;ecirc;tre, ses diff&amp;eacute;rentes incarnations, et surtout ce qu'est devenu EF Core pour savoir s'il est ou non utilisable et quel est son v&amp;eacute;ritable p&amp;eacute;rim&amp;egrave;tre. Ainss, cette s&amp;eacute;rie d'articles est un voyage dans l'histoire d'un produit, d'une fonctionnalit&amp;eacute;, de m&amp;eacute;thodes diff&amp;eacute;rentes, pour aboutir &amp;agrave; ce que vous devez savoir aujourd'hui d'EF Core, en toute justice et toute exactitude technique.&lt;br /&gt;A la semaine prochaine, m&amp;ecirc;me lieu, m&amp;ecirc;me heure, pour le prochain volet de cette aventure !&lt;br /&gt;&lt;br /&gt;Stay Tuned!&lt;/p&gt;</description>
      <link>http://www.e-naxos.com/Blog/post/vous-ne-connaissez-probablement-plus-entity-framework</link>
      <author>odahan@e-naxos.com</author>
      <comments>http://www.e-naxos.com/Blog/post/vous-ne-connaissez-probablement-plus-entity-framework#comment</comments>
      <guid>http://www.e-naxos.com/Blog/post.aspx?id=028e8915-786d-466b-a1f1-d8e4e7e584fd</guid>
      <pubDate>lun., 28 sept. 2026 13:30:00 +0100</pubDate>
      <category>C#</category>
      <category>Données</category>
      <betag:tag>ef</betag:tag>
      <dc:publisher>Olivier</dc:publisher>
      <pingback:server>http://www.e-naxos.com/Blog/pingback.axd</pingback:server>
      <pingback:target>http://www.e-naxos.com/Blog/post.aspx?id=028e8915-786d-466b-a1f1-d8e4e7e584fd</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://www.e-naxos.com/Blog/trackback.axd?id=028e8915-786d-466b-a1f1-d8e4e7e584fd</trackback:ping>
      <wfw:comment>http://www.e-naxos.com/Blog/post/vous-ne-connaissez-probablement-plus-entity-framework#comment</wfw:comment>
      <wfw:commentRss>http://www.e-naxos.com/Blog/syndication.axd?post=028e8915-786d-466b-a1f1-d8e4e7e584fd</wfw:commentRss>
    </item>
    <item>
      <title>NuGet : Microsoft change son certificat de signature — faut-il modifier vos builds ?</title>
      <description>&lt;p&gt;Microsoft vient de changer le certificat utilis&amp;eacute; pour signer ses packages NuGet. Dit comme cela, l'information para&amp;icirc;t suffisamment obscure pour &amp;ecirc;tre class&amp;eacute;e dans la cat&amp;eacute;gorie &amp;laquo; s&amp;eacute;curit&amp;eacute; d'infrastructure, quelqu'un d'autre s'en occupera &amp;raquo;.&lt;/p&gt;
&lt;p&gt;Ce serait pourtant une mauvaise id&amp;eacute;e.&lt;/p&gt;
&lt;p&gt;Pas parce que tous nos projets .NET vont brutalement cesser de compiler &amp;mdash; ce n'est absolument pas le cas &amp;mdash; mais parce que &lt;strong&gt;certains environnements ayant correctement durci leur cha&amp;icirc;ne d'approvisionnement NuGet peuvent, eux, commencer &amp;agrave; refuser les nouveaux packages Microsoft&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Le paradoxe est assez amusant : ce sont pr&amp;eacute;cis&amp;eacute;ment les &amp;eacute;quipes ayant mis en place les contr&amp;ocirc;les de s&amp;eacute;curit&amp;eacute; les plus stricts qui doivent v&amp;eacute;rifier leur configuration.&lt;/p&gt;
&lt;p&gt;Microsoft a annonc&amp;eacute; le changement le 23 septembre 2026. Je vais donc regarder ce qui change r&amp;eacute;ellement, qui est concern&amp;eacute; et ce qu'il faut v&amp;eacute;rifier.&lt;/p&gt;
&lt;h2&gt;Ce qui change exactement&lt;/h2&gt;
&lt;p&gt;Microsoft signe ses packages NuGet avec un certificat X.509.&lt;/p&gt;
&lt;p&gt;&amp;Agrave; partir du 23 septembre 2026, un nouveau certificat devient le certificat utilis&amp;eacute; par d&amp;eacute;faut pour les &lt;strong&gt;nouvelles signatures d'auteur Microsoft&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;L'empreinte SHA-256 du nouveau certificat est :&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;9A1B131BEE0605433056A4EA3815478A8E177961A968C6C0027C1093D1FEB630&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;L'empreinte du certificat pr&amp;eacute;c&amp;eacute;demment utilis&amp;eacute; &amp;eacute;tait :&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;566A31882BE208BE4422F7CFD66ED09F5D4524A5994F50CCC8B05EC0528C1353&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Et c'est l&amp;agrave; qu'un premier d&amp;eacute;tail a son importance : &lt;strong&gt;les packages d&amp;eacute;j&amp;agrave; publi&amp;eacute;s ne sont &amp;eacute;videmment pas resign&amp;eacute;s avec le nouveau certificat&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Un ancien package conserve donc son ancienne signature.&lt;/p&gt;
&lt;p&gt;Autrement dit, la transition ne ressemble pas &amp;agrave; ceci :&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Ancien certificat
       |
       X
       |
Nouveau certificat&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;mais plut&amp;ocirc;t &amp;agrave; ceci :&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Packages d&amp;eacute;j&amp;agrave; publi&amp;eacute;s
        |
        +---- sign&amp;eacute;s avec certificat A
        |
        +---- sign&amp;eacute;s avec certificat B
        |
        +---- sign&amp;eacute;s avec certificat C

Nouveaux packages Microsoft
        |
        +---- sign&amp;eacute;s avec certificat D
              &amp;agrave; partir de septembre 2026&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Une politique de confiance correcte doit donc &amp;ecirc;tre capable d'accepter &lt;strong&gt;plusieurs g&amp;eacute;n&amp;eacute;rations de certificats Microsoft simultan&amp;eacute;ment&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;C'est une nuance importante : remplacer l'ancienne empreinte par la nouvelle serait une erreur.&lt;/p&gt;
&lt;p&gt;Il faut &lt;strong&gt;ajouter&lt;/strong&gt; la nouvelle.&lt;/p&gt;
&lt;h2&gt;Est-ce que je suis concern&amp;eacute; ?&lt;/h2&gt;
&lt;p&gt;C'est la premi&amp;egrave;re question &amp;agrave; poser, car il ne faut surtout pas transformer cette annonce en alerte g&amp;eacute;n&amp;eacute;rale.&lt;/p&gt;
&lt;p&gt;Dans la majorit&amp;eacute; des environnements .NET classiques, &lt;strong&gt;il n'y a rien &amp;agrave; faire&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Microsoft indique que le changement concerne principalement deux cas. Le premier est celui o&amp;ugrave; NuGet est configur&amp;eacute; avec une politique de signataires approuv&amp;eacute;s &amp;mdash; les fameux &lt;code&gt;trustedSigners&lt;/code&gt;.&lt;br /&gt;Le second concerne les scripts ou pipelines utilisant explicitement :&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;dotnet nuget verify&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;avec une ou plusieurs empreintes de certificats Microsoft.&lt;/p&gt;
&lt;p&gt;Si vous n'utilisez ni l'un ni l'autre, les packages Microsoft sign&amp;eacute;s avec le nouveau certificat doivent continuer &amp;agrave; s'installer normalement.&lt;br /&gt;Donc avant de modifier quoi que ce soit : &lt;strong&gt;regardez votre configuration&lt;/strong&gt;.&lt;/p&gt;
&lt;h2&gt;Un petit rappel sur les signatures NuGet&lt;/h2&gt;
&lt;p&gt;Une signature de package ne sert pas simplement &amp;agrave; indiquer que &amp;laquo; le fichier vient de Microsoft &amp;raquo;.&lt;/p&gt;
&lt;p&gt;Elle permet notamment de v&amp;eacute;rifier deux choses fondamentales :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;l'identit&amp;eacute; cryptographique du signataire ;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;l'int&amp;eacute;grit&amp;eacute; du package depuis sa signature.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Le package contient sa signature. Le client NuGet peut ensuite d&amp;eacute;cider jusqu'o&amp;ugrave; il souhaite pousser la v&amp;eacute;rification.&lt;/p&gt;
&lt;p&gt;On peut sch&amp;eacute;matiser grossi&amp;egrave;rement le m&amp;eacute;canisme ainsi :&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;             Package .nupkg
                    |
                    v
             Signature NuGet
                    |
           +--------+--------+
           |                 |
           v                 v
      Int&amp;eacute;grit&amp;eacute;        Certificat du
      du package        signataire
                             |
                             v
                     Politique NuGet
                             |
                    +--------+--------+
                    |                 |
                 accept&amp;eacute;            refus&amp;eacute;
                    |                 |
                    v                 v
                 restore          NU3034&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Le point int&amp;eacute;ressant est donc la derni&amp;egrave;re &amp;eacute;tape.&lt;/p&gt;
&lt;p&gt;Une organisation peut parfaitement d&amp;eacute;cider :&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Je n'accepte pas simplement un package parce que sa signature cryptographique est valide. Je veux aussi v&amp;eacute;rifier que son signataire appartient &amp;agrave; une liste explicitement approuv&amp;eacute;e.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;C'est pr&amp;eacute;cis&amp;eacute;ment le r&amp;ocirc;le de &lt;code&gt;trustedSigners&lt;/code&gt;.&lt;/p&gt;
&lt;h2&gt;&lt;code&gt;signatureValidationMode=require&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;NuGet permet de renforcer la validation avec une configuration de ce genre :&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;configuration&amp;gt;
  &amp;lt;config&amp;gt;
    &amp;lt;add key="signatureValidationMode" value="require" /&amp;gt;
  &amp;lt;/config&amp;gt;

  &amp;lt;trustedSigners&amp;gt;
    ...
  &amp;lt;/trustedSigners&amp;gt;
&amp;lt;/configuration&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Avec :&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;signatureValidationMode="require"&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;les packages doivent correspondre aux r&amp;egrave;gles d&amp;eacute;finies dans &lt;code&gt;trustedSigners&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;On peut approuver un &lt;strong&gt;auteur&lt;/strong&gt; ou un &lt;strong&gt;repository&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Pour Microsoft, une politique bas&amp;eacute;e sur l'auteur peut par exemple ressembler &amp;agrave; ceci :&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;trustedSigners&amp;gt;
  &amp;lt;author name="Microsoft"&amp;gt;
    &amp;lt;certificate
      fingerprint="3F9001EA83C560D712C24CF213C3D312CB3BFF51EE89435D3430BD06B5D0EECE"
      hashAlgorithm="SHA256"
      allowUntrustedRoot="false" /&amp;gt;

    &amp;lt;certificate
      fingerprint="AA12DA22A49BCE7D5C1AE64CC1F3D892F150DA76140F210ABD2CBFFCA2C18A27"
      hashAlgorithm="SHA256"
      allowUntrustedRoot="false" /&amp;gt;

    &amp;lt;certificate
      fingerprint="566A31882BE208BE4422F7CFD66ED09F5D4524A5994F50CCC8B05EC0528C1353"
      hashAlgorithm="SHA256"
      allowUntrustedRoot="false" /&amp;gt;

    &amp;lt;certificate
      fingerprint="9A1B131BEE0605433056A4EA3815478A8E177961A968C6C0027C1093D1FEB630"
      hashAlgorithm="SHA256"
      allowUntrustedRoot="false" /&amp;gt;
  &amp;lt;/author&amp;gt;
&amp;lt;/trustedSigners&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;La derni&amp;egrave;re ligne est donc celle correspondant au nouveau certificat.&lt;/p&gt;
&lt;p&gt;Mais observez bien que Microsoft conserve &amp;eacute;galement les trois empreintes pr&amp;eacute;c&amp;eacute;dentes.&lt;/p&gt;
&lt;p&gt;Ce n'est pas un d&amp;eacute;tail d'impl&amp;eacute;mentation : &lt;strong&gt;c'est indispensable si l'on veut continuer &amp;agrave; restaurer d'anciens packages Microsoft&lt;/strong&gt;.&lt;/p&gt;
&lt;h2&gt;Ce qu'il ne faut pas faire : remplacer l'ancienne empreinte&lt;/h2&gt;
&lt;p&gt;Imaginons une politique simplifi&amp;eacute;e :&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;author name="Microsoft"&amp;gt;
  &amp;lt;certificate
    fingerprint="566A31882BE208BE4422F7CFD66ED09F5D4524A5994F50CCC8B05EC0528C1353"
    hashAlgorithm="SHA256"
    allowUntrustedRoot="false" /&amp;gt;
&amp;lt;/author&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;On pourrait &amp;ecirc;tre tent&amp;eacute; de remplacer cette empreinte par la nouvelle.&lt;br /&gt;Ce serait faux. On obtiendrait :&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Ancien package Microsoft
         |
         v
signature certificat 566A...
         |
         v
empreinte absente de trustedSigners
         |
         X
       refus&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Alors que la bonne politique est :&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;                 Microsoft
                     |
         +-----------+-----------+
         |                       |
    ancien certificat       nouveau certificat
         |                       |
       accept&amp;eacute;                  accept&amp;eacute;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Une rotation de certificat ne signifie donc pas automatiquement &amp;laquo; supprimer l'ancien &amp;raquo;. Elle signifie ici &lt;strong&gt;&amp;eacute;tendre l'ensemble des identit&amp;eacute;s cryptographiques accept&amp;eacute;es&lt;/strong&gt;.&lt;/p&gt;
&lt;h2&gt;La m&amp;eacute;thode la plus simple avec le SDK .NET&lt;/h2&gt;
&lt;p&gt;Il n'est heureusement pas indispensable d'&amp;eacute;diter le XML &amp;agrave; la main. Avec un SDK .NET suffisamment r&amp;eacute;cent, Microsoft indique d'utiliser :&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;dotnet nuget trust author Microsoft 9A1B131BEE0605433056A4EA3815478A8E177961A968C6C0027C1093D1FEB630 --algorithm SHA256&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;La commande met &amp;agrave; jour le fichier &lt;code&gt;nuget.config&lt;/code&gt; concern&amp;eacute;.&lt;/p&gt;
&lt;p&gt;Et si, comme je le recommande dans un environnement ma&amp;icirc;tris&amp;eacute;, vous souhaitez d&amp;eacute;signer explicitement celui qui doit &amp;ecirc;tre modifi&amp;eacute; :&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;dotnet nuget trust author Microsoft 9A1B131BEE0605433056A4EA3815478A8E177961A968C6C0027C1093D1FEB630 \
  --algorithm SHA256 \
  --configfile ./NuGet.config&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Sous PowerShell ou &lt;code&gt;cmd.exe&lt;/code&gt;, il faudra naturellement adapter la continuation de ligne ou saisir la commande sur une seule ligne.&lt;/p&gt;
&lt;p&gt;Je pr&amp;eacute;f&amp;egrave;re cette m&amp;eacute;thode &amp;agrave; une modification manuelle d&amp;egrave;s qu'elle peut &amp;ecirc;tre utilis&amp;eacute;e : elle r&amp;eacute;duit les erreurs de saisie sur une empreinte SHA-256 qui, soyons francs, n'est pas le genre de cha&amp;icirc;ne que l'on souhaite recopier &amp;agrave; la main.&lt;/p&gt;
&lt;h2&gt;Et &lt;code&gt;dotnet nuget verify&lt;/code&gt; ?&lt;/h2&gt;
&lt;p&gt;Deuxi&amp;egrave;me cas : certains pipelines v&amp;eacute;rifient explicitement les packages t&amp;eacute;l&amp;eacute;charg&amp;eacute;s. On peut par exemple utiliser :&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;dotnet nuget verify MonPackage.nupkg&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;pour v&amp;eacute;rifier un package sign&amp;eacute;.&lt;/p&gt;
&lt;p&gt;Mais on peut aller plus loin et exiger une empreinte pr&amp;eacute;cise :&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;dotnet nuget verify MonPackage.nupkg \
  --certificate-fingerprint 566A31882BE208BE4422F7CFD66ED09F5D4524A5994F50CCC8B05EC0528C1353&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Dans ce cas, un nouveau package Microsoft sign&amp;eacute; avec le certificat de septembre 2026 ne correspondra &amp;eacute;videmment plus &amp;agrave; cette empreinte.&lt;br /&gt;L&amp;agrave; encore, il ne faut pas simplement remplacer l'ancienne valeur.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;dotnet nuget verify&lt;/code&gt; accepte plusieurs options &lt;code&gt;--certificate-fingerprint&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;On peut donc &amp;eacute;crire :&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;dotnet nuget verify MonPackage.nupkg \
  --certificate-fingerprint 3F9001EA83C560D712C24CF213C3D312CB3BFF51EE89435D3430BD06B5D0EECE \
  --certificate-fingerprint AA12DA22A49BCE7D5C1AE64CC1F3D892F150DA76140F210ABD2CBFFCA2C18A27 \
  --certificate-fingerprint 566A31882BE208BE4422F7CFD66ED09F5D4524A5994F50CCC8B05EC0528C1353 \
  --certificate-fingerprint 9A1B131BEE0605433056A4EA3815478A8E177961A968C6C0027C1093D1FEB630&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;C'est particuli&amp;egrave;rement important si cette commande appara&amp;icirc;t dans un script CI/CD.&lt;/p&gt;
&lt;h2 data-pm-slice="1 3 []"&gt;Le vrai risque : le &lt;code dir="ltr"&gt;restore&lt;/code&gt; qui casse sans modification du code&lt;/h2&gt;
&lt;p&gt;C'est finalement ce que je trouve int&amp;eacute;ressant dans cette annonce.&lt;/p&gt;
&lt;p&gt;On peut avoir :&lt;/p&gt;
&lt;ul data-spread="false"&gt;
&lt;li&gt;
&lt;p&gt;le m&amp;ecirc;me d&amp;eacute;p&amp;ocirc;t Git ;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;le m&amp;ecirc;me code source ;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;le m&amp;ecirc;me SDK ;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;le m&amp;ecirc;me &lt;code dir="ltr"&gt;csproj&lt;/code&gt; ;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;la m&amp;ecirc;me version d'une d&amp;eacute;pendance directe ;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;et pourtant voir un pipeline &amp;eacute;chouer simplement parce qu'un package nouvellement restaur&amp;eacute; est d&amp;eacute;sormais sign&amp;eacute; avec un certificat qui n'existe pas dans la politique de confiance locale.&lt;/p&gt;
&lt;p&gt;Le sc&amp;eacute;nario peut ressembler &amp;agrave; ceci :&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-text"&gt;                   Hier
                     |
              dotnet restore
                     |
         package Microsoft sign&amp;eacute;
         certificat autoris&amp;eacute;
                     |
                     v
                    OK


                 Aujourd'hui
                     |
              dotnet restore
                     |
         nouveau package Microsoft
          nouveau certificat
                     |
         certificat absent de
            trustedSigners
                     |
                     v
                  NU3034&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ce genre d'incident est trompeur parce que &lt;strong&gt;rien n'a n&amp;eacute;cessairement chang&amp;eacute; dans l'application&lt;/strong&gt;. C'est l'environnement de confiance de la cha&amp;icirc;ne de build qui a chang&amp;eacute;.&lt;br /&gt;Et c'est pr&amp;eacute;cis&amp;eacute;ment pour cette raison que les d&amp;eacute;pendances, les feeds NuGet et leurs r&amp;egrave;gles de validation font partie de l'infrastructure de build au m&amp;ecirc;me titre que le SDK ou MSBuild.&lt;/p&gt;
&lt;h2&gt;Comment savoir rapidement si votre entreprise est concern&amp;eacute;e ?&lt;/h2&gt;
&lt;p&gt;Je commencerais par chercher les &amp;eacute;l&amp;eacute;ments suivants dans les d&amp;eacute;p&amp;ocirc;ts et dans les configurations des agents de build :&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-text"&gt;signatureValidationMode
trustedSigners
certificateFingerprint
--certificate-fingerprint
dotnet nuget verify
nuget verify&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;La pr&amp;eacute;sence de :&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-xml"&gt;&amp;lt;add key="signatureValidationMode" value="require" /&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;m&amp;eacute;rite &amp;eacute;videmment une attention imm&amp;eacute;diate.&lt;/p&gt;
&lt;p&gt;De m&amp;ecirc;me pour :&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-xml"&gt;&amp;lt;trustedSigners&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Dans une organisation importante, attention &amp;agrave; ne pas chercher uniquement dans le &lt;code dir="ltr"&gt;nuget.config&lt;/code&gt; plac&amp;eacute; &amp;agrave; la racine de la solution.&lt;br /&gt;NuGet combine potentiellement plusieurs niveaux de configuration. Une r&amp;egrave;gle peut donc provenir d'un fichier situ&amp;eacute; en dehors du d&amp;eacute;p&amp;ocirc;t lui-m&amp;ecirc;me et &amp;ecirc;tre appliqu&amp;eacute;e sur les postes de d&amp;eacute;veloppement ou sur les agents CI.&lt;br /&gt;C'est m&amp;ecirc;me souvent l&amp;agrave; que les surprises commencent.&lt;/p&gt;
&lt;h2&gt;CI/CD : GitHub Actions, Azure DevOps, Jenkins&amp;hellip;&lt;/h2&gt;
&lt;p&gt;Le moteur CI utilis&amp;eacute; n'a finalement que peu d'importance.&lt;br /&gt;GitHub Actions, Azure DevOps, Jenkins ou un agent interne ne sont affect&amp;eacute;s que dans la mesure o&amp;ugrave; les commandes ex&amp;eacute;cut&amp;eacute;es par le pipeline le sont.&lt;br /&gt;Prenons un pipeline extr&amp;ecirc;mement simplifi&amp;eacute; :&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-yaml"&gt;steps:
  - script: dotnet restore
    displayName: Restore

  - script: dotnet build --no-restore
    displayName: Build

  - script: dotnet test --no-build
    displayName: Tests&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Si le &lt;code dir="ltr"&gt;dotnet restore&lt;/code&gt; utilise un &lt;code dir="ltr"&gt;nuget.config&lt;/code&gt; imposant les signataires autoris&amp;eacute;s et que le nouveau certificat Microsoft n'y figure pas, le pipeline peut &amp;eacute;chouer d&amp;egrave;s la premi&amp;egrave;re &amp;eacute;tape.&lt;br /&gt;Le correctif n'est alors ni dans le &lt;code dir="ltr"&gt;csproj&lt;/code&gt;, ni dans le code C#, ni dans le YAML lui-m&amp;ecirc;me.&lt;br /&gt;Il est dans la politique NuGet.&lt;br /&gt;C'est une distinction qui peut faire gagner pas mal de temps lorsque l'incident survient.&lt;/p&gt;
&lt;h2&gt;Faut-il installer le nouveau certificat dans le magasin Windows ?&lt;/h2&gt;
&lt;p&gt;C'est une confusion assez naturelle, car d&amp;egrave;s que l'on parle de X.509 sous Windows on pense imm&amp;eacute;diatement &amp;agrave; &lt;code dir="ltr"&gt;certmgr.msc&lt;/code&gt;, &lt;code dir="ltr"&gt;certlm.msc&lt;/code&gt;, &lt;code dir="ltr"&gt;TrustedPeople&lt;/code&gt;, &lt;code dir="ltr"&gt;TrustedRoot&lt;/code&gt;, PowerShell ou &lt;code dir="ltr"&gt;certutil&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Mais &lt;strong&gt;ce n'est pas ce que demande Microsoft pour cette rotation&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Dans le sc&amp;eacute;nario qui nous int&amp;eacute;resse ici, l'autorisation du signataire est d&amp;eacute;finie dans la politique NuGet via l'empreinte du certificat.&lt;br /&gt;Il ne faut donc pas transformer cette op&amp;eacute;ration en d&amp;eacute;ploiement sauvage du certificat dans &lt;code dir="ltr"&gt;Trusted Root Certification Authorities&lt;/code&gt;.&lt;br /&gt;Ce serait au mieux inutile et, au pire, une modification beaucoup plus large de la politique de confiance de la machine que ce dont NuGet a r&amp;eacute;ellement besoin. Une r&amp;egrave;gle de s&amp;eacute;curit&amp;eacute; devrait toujours &amp;ecirc;tre appliqu&amp;eacute;e au niveau le plus &amp;eacute;troit possible.&lt;/p&gt;
&lt;p&gt;Ici :&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-text"&gt;Je fais confiance &amp;agrave; ce certificat
pour identifier cet auteur NuGet&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;est beaucoup plus pr&amp;eacute;cis que :&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-text"&gt;Je modifie globalement
les autorit&amp;eacute;s auxquelles fait confiance
cette machine.&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ce n'est pas du tout la m&amp;ecirc;me chose.&lt;/p&gt;
&lt;h2&gt;Et si nous n'avons jamais configur&amp;eacute; &lt;code dir="ltr"&gt;trustedSigners&lt;/code&gt; ?&lt;/h2&gt;
&lt;p&gt;Alors il ne faut probablement rien faire.&lt;/p&gt;
&lt;p&gt;C'est important de le r&amp;eacute;p&amp;eacute;ter, parce que les annonces de s&amp;eacute;curit&amp;eacute; ont parfois un effet secondaire regrettable : elles d&amp;eacute;clenchent des modifications &amp;laquo; pr&amp;eacute;ventives &amp;raquo; sur des machines qui n'&amp;eacute;taient pas concern&amp;eacute;es. Ajouter des r&amp;egrave;gles de confiance que l'on ne comprend pas n'am&amp;eacute;liore pas la s&amp;eacute;curit&amp;eacute;. Avant toute intervention, je suivrais donc ce raisonnement :&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-text"&gt;Utilisons-nous trustedSigners ?
             |
        +----+----+
        |         |
       NON       OUI
        |         |
        v         v
   rien &amp;agrave; faire   la nouvelle empreinte
                  Microsoft est-elle pr&amp;eacute;sente ?
                           |
                      +----+----+
                      |         |
                     OUI       NON
                      |         |
                      v         v
                     OK       l'ajouter&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;M&amp;ecirc;me raisonnement pour &lt;code dir="ltr"&gt;dotnet nuget verify&lt;/code&gt;.&lt;/p&gt;
&lt;h2&gt;Une bonne occasion de regarder enfin nos &lt;code dir="ltr"&gt;nuget.config&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;Cette rotation de certificat est finalement assez banale. Les certificats expirent. Les cl&amp;eacute;s tournent. Les fournisseurs modifient leurs infrastructures. Il n'y a l&amp;agrave; rien d'exceptionnel. Mais elle met en lumi&amp;egrave;re quelque chose que je trouve beaucoup plus int&amp;eacute;ressant : &lt;strong&gt;combien d'&amp;eacute;quipes savent r&amp;eacute;ellement quelles r&amp;egrave;gles NuGet sont appliqu&amp;eacute;es lors de leurs builds ?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Nous surveillons g&amp;eacute;n&amp;eacute;ralement :&lt;/p&gt;
&lt;ul data-spread="false"&gt;
&lt;li&gt;
&lt;p&gt;la version du SDK .NET ;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;les workloads ;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;les versions de packages ;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;les sources NuGet ;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;parfois les vuln&amp;eacute;rabilit&amp;eacute;s des d&amp;eacute;pendances.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Mais beaucoup moins :&lt;/p&gt;
&lt;ul data-spread="false"&gt;
&lt;li&gt;
&lt;p&gt;les politiques de signature ;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;les signataires approuv&amp;eacute;s ;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;les configurations NuGet h&amp;eacute;rit&amp;eacute;es ;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;les diff&amp;eacute;rences entre un poste d&amp;eacute;veloppeur et un agent CI ;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;les scripts de v&amp;eacute;rification ajout&amp;eacute;s il y a trois ans et oubli&amp;eacute;s depuis.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Or tout cela fait partie de la reproductibilit&amp;eacute; d'un build.&lt;/p&gt;
&lt;p&gt;Deux machines ex&amp;eacute;cutant exactement :&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;dotnet restore&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;ne suivent pas n&amp;eacute;cessairement la m&amp;ecirc;me politique si elles ne chargent pas les m&amp;ecirc;mes configurations NuGet. &amp;Agrave; mes yeux, c'est probablement la le&amp;ccedil;on la plus int&amp;eacute;ressante de cette petite rotation de certificat.&lt;/p&gt;
&lt;h2&gt;Ce que je ferais concr&amp;egrave;tement&lt;/h2&gt;
&lt;p&gt;Si je devais v&amp;eacute;rifier aujourd'hui un environnement .NET professionnel, je resterais tr&amp;egrave;s pragmatique :&lt;/p&gt;
&lt;ol start="1" data-spread="false"&gt;
&lt;li&gt;
&lt;p&gt;rechercher &lt;code dir="ltr"&gt;trustedSigners&lt;/code&gt; et &lt;code dir="ltr"&gt;signatureValidationMode&lt;/code&gt; dans les configurations NuGet ;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;rechercher les utilisations de &lt;code dir="ltr"&gt;dotnet nuget verify&lt;/code&gt; et &lt;code dir="ltr"&gt;nuget verify&lt;/code&gt; dans les scripts et pipelines ;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;identifier les v&amp;eacute;rifications fond&amp;eacute;es sur les empreintes Microsoft ;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;ajouter la nouvelle empreinte SHA-256 sans supprimer les anciennes ;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;ex&amp;eacute;cuter un vrai &lt;code dir="ltr"&gt;dotnet restore&lt;/code&gt; sur les agents concern&amp;eacute;s ;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;conserver la configuration dans le contr&amp;ocirc;le de source lorsque cela est possible.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Ce dernier point est important.&lt;br /&gt;Une politique de s&amp;eacute;curit&amp;eacute; pr&amp;eacute;sente uniquement sur un serveur de build et modifi&amp;eacute;e manuellement par un administrateur est difficile &amp;agrave; auditer et encore plus difficile &amp;agrave; reproduire. Lorsque le contexte le permet, je pr&amp;eacute;f&amp;egrave;re de loin :&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-text"&gt;Repository
   |
   +-- NuGet.config
   |
   +-- src/
   |
   +-- tests/
   |
   +-- pipeline.yml&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;agrave; une configuration invisible dispers&amp;eacute;e dans les machines.&lt;/p&gt;
&lt;p&gt;Ce qui peut &amp;ecirc;tre versionn&amp;eacute;, revu et audit&amp;eacute; devrait g&amp;eacute;n&amp;eacute;ralement l'&amp;ecirc;tre.&lt;/p&gt;
&lt;h2&gt;En conclusion&lt;/h2&gt;
&lt;p&gt;Il n'y a pas ici de faille spectaculaire, ni d'urgence g&amp;eacute;n&amp;eacute;ralis&amp;eacute;e dans l'&amp;eacute;cosyst&amp;egrave;me .NET.&lt;br /&gt;Microsoft fait tourner son certificat de signature d'auteur pour ses packages NuGet, et la plupart des d&amp;eacute;veloppeurs ne verront absolument aucune diff&amp;eacute;rence.&lt;br /&gt;En revanche, si votre organisation utilise une politique stricte de signataires approuv&amp;eacute;s ou v&amp;eacute;rifie explicitement les empreintes des certificats Microsoft, &lt;strong&gt;il faut ajouter le nouveau certificat &amp;agrave; la liste des certificats autoris&amp;eacute;s&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;L'empreinte SHA-256 &amp;agrave; ajouter est :&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-text"&gt;9A1B131BEE0605433056A4EA3815478A8E177961A968C6C0027C1093D1FEB630&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Et je souligne une derni&amp;egrave;re fois le point le plus facile &amp;agrave; rater :&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Ajoutez cette empreinte. Ne remplacez pas les anciennes.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Les anciens packages restent sign&amp;eacute;s avec leurs anciens certificats.&lt;/p&gt;
&lt;p&gt;Au-del&amp;agrave; de cette modification ponctuelle, j'y vois surtout une bonne occasion de regarder d'un peu plus pr&amp;egrave;s nos &lt;code dir="ltr"&gt;nuget.config&lt;/code&gt;.&lt;br /&gt;La supply chain logicielle n'est pas uniquement constitu&amp;eacute;e des packages que nous choisissons d'utiliser. Elle comprend &amp;eacute;galement &lt;strong&gt;les r&amp;egrave;gles qui d&amp;eacute;terminent qui nous autorisons &amp;agrave; nous fournir ces packages&lt;/strong&gt;. Et cette partie-l&amp;agrave; m&amp;eacute;rite probablement davantage d'attention qu'on ne lui en accorde habituellement.&lt;/p&gt;
&lt;h2&gt;R&amp;eacute;f&amp;eacute;rences&lt;/h2&gt;
&lt;ul data-spread="false"&gt;
&lt;li&gt;
&lt;p&gt;Microsoft .NET Blog &amp;mdash; &lt;em&gt;Microsoft is updating its author-signing certificate starting September 23, 2026&lt;/em&gt;, NuGet Team, 23 septembre 2026.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Microsoft Learn &amp;mdash; r&amp;eacute;f&amp;eacute;rence du fichier &lt;code dir="ltr"&gt;nuget.config&lt;/code&gt;, section &lt;code dir="ltr"&gt;trustedSigners&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Microsoft Learn &amp;mdash; commande &lt;code dir="ltr"&gt;dotnet nuget verify&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Microsoft Learn &amp;mdash; gestion des limites de confiance pour les packages sign&amp;eacute;s.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Stay Tuned!&lt;/p&gt;</description>
      <link>http://www.e-naxos.com/Blog/post/SignatureNuget</link>
      <author>odahan@e-naxos.com</author>
      <comments>http://www.e-naxos.com/Blog/post/SignatureNuget#comment</comments>
      <guid>http://www.e-naxos.com/Blog/post.aspx?id=1e9a432b-6d5b-426d-9200-a610185f88a6</guid>
      <pubDate>lun., 28 sept. 2026 01:00:00 +0100</pubDate>
      <category>Sécurité</category>
      <betag:tag>securité</betag:tag>
      <betag:tag>Nuget</betag:tag>
      <dc:publisher>Olivier</dc:publisher>
      <pingback:server>http://www.e-naxos.com/Blog/pingback.axd</pingback:server>
      <pingback:target>http://www.e-naxos.com/Blog/post.aspx?id=1e9a432b-6d5b-426d-9200-a610185f88a6</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://www.e-naxos.com/Blog/trackback.axd?id=1e9a432b-6d5b-426d-9200-a610185f88a6</trackback:ping>
      <wfw:comment>http://www.e-naxos.com/Blog/post/SignatureNuget#comment</wfw:comment>
      <wfw:commentRss>http://www.e-naxos.com/Blog/syndication.axd?post=1e9a432b-6d5b-426d-9200-a610185f88a6</wfw:commentRss>
    </item>
    <item>
      <title>Spec Kit, SDD et la plomberie : quand l’industrialisation devient-elle contre-productive ?</title>
      <description>&lt;p&gt;Le Spec-Driven Development commence &amp;agrave; s&amp;rsquo;installer dans le paysage du d&amp;eacute;veloppement assist&amp;eacute; par IA. L&amp;rsquo;id&amp;eacute;e g&amp;eacute;n&amp;eacute;rale est s&amp;eacute;duisante : plut&amp;ocirc;t que de multiplier les prompts &amp;eacute;ph&amp;eacute;m&amp;egrave;res et de laisser progressivement le code devenir la seule description r&amp;eacute;elle du logiciel, on conserve l&amp;rsquo;intention dans des sp&amp;eacute;cifications explicites, vivantes et r&amp;eacute;visables.&lt;/p&gt;
&lt;p&gt;Microsoft d&amp;eacute;crit aujourd&amp;rsquo;hui le SDD comme une approche dans laquelle les sp&amp;eacute;cifications deviennent une source de v&amp;eacute;rit&amp;eacute; partag&amp;eacute;e entre humains et IA, reliant l&amp;rsquo;intention m&amp;eacute;tier, les contraintes, l&amp;rsquo;architecture, l&amp;rsquo;impl&amp;eacute;mentation et la validation. Microsoft recommande d&amp;rsquo;ailleurs explicitement de &lt;em&gt;commencer l&amp;eacute;ger et d&amp;rsquo;&amp;eacute;tendre le processus uniquement lorsqu&amp;rsquo;il apporte une valeur claire&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Jusque-l&amp;agrave;, tout para&amp;icirc;t assez simple.&lt;/p&gt;
&lt;p&gt;Puis arrive GitHub Spec Kit.&lt;/p&gt;
&lt;p&gt;Et soudain apparaissent commandes, templates, CLI, scripts, presets, extensions, workflows et diff&amp;eacute;rentes structures documentaires.&lt;/p&gt;
&lt;p&gt;D&amp;rsquo;o&amp;ugrave; une question assez naturelle :&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;si le SDD repose principalement sur des fichiers que les humains et les agents savent lire et modifier, pourquoi faut-il toute cette plomberie ?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;La r&amp;eacute;ponse est int&amp;eacute;ressante, parce qu&amp;rsquo;elle permet &amp;agrave; la fois de mieux comprendre Spec Kit et de mieux comprendre ce que SDD n&amp;rsquo;impose pas.&lt;/p&gt;
&lt;h2&gt;SDD n&amp;rsquo;est pas Spec Kit&lt;/h2&gt;
&lt;p&gt;La premi&amp;egrave;re distinction &amp;agrave; faire est probablement la plus importante.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Le SDD est une mani&amp;egrave;re d&amp;rsquo;organiser le d&amp;eacute;veloppement autour d&amp;rsquo;une intention explicite et durable&lt;/em&gt;. GitHub Spec Kit est &lt;em&gt;une mani&amp;egrave;re particuli&amp;egrave;re&lt;/em&gt; de mat&amp;eacute;rialiser cette approche.&lt;/p&gt;
&lt;p&gt;Microsoft lui-m&amp;ecirc;me pr&amp;eacute;sentait d&amp;egrave;s 2025 Spec Kit comme une impl&amp;eacute;mentation apportant notamment une CLI de bootstrap, des templates et des scripts auxiliaires. Les documents produits restent essentiellement des fichiers Markdown que l&amp;rsquo;on peut consulter et modifier directement.&lt;/p&gt;
&lt;p&gt;Autrement dit, on pourrait tout &amp;agrave; fait pratiquer une forme de SDD avec seulement quelques artefacts :&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;PROJECT.md
RULES.md
SPEC.md
STATUS.md&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;et un agent auquel on donne des instructions explicites pour les lire, les maintenir et travailler &amp;agrave; partir d&amp;rsquo;eux.&lt;/p&gt;
&lt;p&gt;Il n&amp;rsquo;existe pas de n&amp;eacute;cessit&amp;eacute; conceptuelle imposant une CLI, GitHub ou une cha&amp;icirc;ne complexe de commandes (et encore moins python ou des scripts powershell).&lt;/p&gt;
&lt;p&gt;Spec Kit ajoute autre chose.&lt;/p&gt;
&lt;p&gt;Il ajoute de la &lt;strong&gt;reproductibilit&amp;eacute;&lt;/strong&gt;.&lt;/p&gt;
&lt;h2&gt;&amp;Agrave; quoi sert alors toute cette plomberie ?&lt;/h2&gt;
&lt;p&gt;Le workflow SDD actuel de Spec Kit peut aller de la constitution jusqu&amp;rsquo;&amp;agrave; la convergence, en passant par la sp&amp;eacute;cification, la clarification, le plan, les t&amp;acirc;ches, les checklists, l&amp;rsquo;analyse et l&amp;rsquo;impl&amp;eacute;mentation.&lt;/p&gt;
&lt;p&gt;Une partie importante de ce fonctionnement ne consiste pas &amp;agrave; &amp;laquo; comprendre le logiciel &amp;raquo;. Elle consiste &amp;agrave; automatiser une m&amp;eacute;canique autour des artefacts :&lt;/p&gt;
&lt;ul style="list-style-type: square;"&gt;
&lt;li&gt;initialiser correctement un projet ;&lt;/li&gt;
&lt;li&gt;installer les commandes adapt&amp;eacute;es &amp;agrave; l&amp;rsquo;agent utilis&amp;eacute; ;&lt;/li&gt;
&lt;li&gt;retrouver les bons fichiers ;&lt;/li&gt;
&lt;li&gt;d&amp;eacute;terminer la feature courante ;&lt;/li&gt;
&lt;li&gt;appliquer les bons templates ;&lt;/li&gt;
&lt;li&gt;v&amp;eacute;rifier les pr&amp;eacute;requis entre &amp;eacute;tapes ;&lt;/li&gt;
&lt;li&gt;maintenir des conventions communes ;&lt;/li&gt;
&lt;li&gt;fournir les m&amp;ecirc;mes proc&amp;eacute;dures &amp;agrave; diff&amp;eacute;rents agents et diff&amp;eacute;rentes &amp;eacute;quipes.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ce travail n&amp;rsquo;est pas inutile. Au contraire.&lt;/p&gt;
&lt;p&gt;Il d&amp;eacute;place hors du LLM tout ce qui peut &amp;ecirc;tre rendu d&amp;eacute;terministe.&lt;/p&gt;
&lt;p&gt;Le principe est sain :&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;raisonnement et s&amp;eacute;mantique   &amp;rarr; agent / LLM
m&amp;eacute;canique reproductible      &amp;rarr; code
intention durable            &amp;rarr; artefacts&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;La question n&amp;rsquo;est donc pas de savoir si Spec Kit est bien ou mal con&amp;ccedil;u.&lt;/p&gt;
&lt;p&gt;La question est : &lt;strong&gt;de quelle quantit&amp;eacute; de cette infrastructure avons-nous r&amp;eacute;ellement besoin ?&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;La complexit&amp;eacute; trait&amp;eacute;e par Spec Kit n&amp;rsquo;est pas seulement celle du logiciel&lt;/h2&gt;
&lt;p&gt;C&amp;rsquo;est probablement l&amp;agrave; que se trouve la cl&amp;eacute;.&lt;/p&gt;
&lt;p&gt;Une petite &amp;eacute;quipe compos&amp;eacute;e de quelques d&amp;eacute;veloppeurs exp&amp;eacute;riment&amp;eacute;s travaillant ensemble depuis longtemps peut avoir un logiciel techniquement tr&amp;egrave;s complexe tout en ayant peu de probl&amp;egrave;mes de coordination.&lt;/p&gt;
&lt;p&gt;&amp;Agrave; l&amp;rsquo;inverse, une application relativement banale r&amp;eacute;partie entre plusieurs &amp;eacute;quipes, prestataires, technologies et agents IA peut devenir extraordinairement difficile &amp;agrave; gouverner.&lt;/p&gt;
&lt;p&gt;Spec Kit apporte surtout de la valeur lorsque le nombre de points de coordination augmente :&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;x nombre d'acteurs
x h&amp;eacute;t&amp;eacute;rog&amp;eacute;n&amp;eacute;it&amp;eacute; des acteurs
x parall&amp;eacute;lisme
x turnover
x dur&amp;eacute;e du projet
x contraintes organisationnelles&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Lorsque ce produit devient important, transformer une mani&amp;egrave;re de travailler en protocole reproductible a beaucoup de sens.&lt;/p&gt;
&lt;p&gt;La plomberie r&amp;eacute;duit alors la variance.&lt;/p&gt;
&lt;p&gt;L&amp;rsquo;&amp;eacute;quipe A ne travaille plus totalement diff&amp;eacute;remment de l&amp;rsquo;&amp;eacute;quipe B. Un nouvel agent retrouve les m&amp;ecirc;mes conventions. Un intervenant qui arrive six mois plus tard dispose des m&amp;ecirc;mes structures. Une organisation peut appliquer certaines r&amp;egrave;gles de mani&amp;egrave;re homog&amp;egrave;ne.&lt;/p&gt;
&lt;p&gt;Dans ce contexte, Spec Kit ne constitue pas une complication accidentelle.&lt;/p&gt;
&lt;p&gt;Sa complexit&amp;eacute; r&amp;eacute;pond &amp;agrave; une complexit&amp;eacute; organisationnelle r&amp;eacute;elle. Mais on verra plus loin que cela peut &amp;ecirc;tre illusoire...&lt;/p&gt;
&lt;h2&gt;Le parall&amp;egrave;le avec GitHub est frappant&lt;/h2&gt;
&lt;p&gt;On retrouve ici un ph&amp;eacute;nom&amp;egrave;ne d&amp;eacute;j&amp;agrave; observable depuis longtemps autour des outils de gestion de sources.&lt;/p&gt;
&lt;p&gt;Git, GitHub, les Pull Requests, les workflows automatis&amp;eacute;s, les branches, les checks, CODEOWNERS, les issues et toute l&amp;rsquo;infrastructure qui les accompagne sont extraordinairement adapt&amp;eacute;s &amp;agrave; certains contextes.&lt;/p&gt;
&lt;p&gt;Pour un grand projet open source r&amp;eacute;unissant des centaines ou des milliers de contributeurs r&amp;eacute;partis autour de la plan&amp;egrave;te, le probl&amp;egrave;me de coordination est immense. La plomberie est justifi&amp;eacute;e.&lt;/p&gt;
&lt;p&gt;Cela ne signifie pas que chaque &amp;eacute;quipe de quatre d&amp;eacute;veloppeurs travaillant sur trois applications m&amp;eacute;tier ait besoin du m&amp;ecirc;me niveau de processus. Subversion &amp;eacute;tait parfaitement taill&amp;eacute; pour ces contextes par exemple.&lt;/p&gt;
&lt;p&gt;La g&amp;eacute;n&amp;eacute;ralisation d&amp;rsquo;une solution con&amp;ccedil;ue pour r&amp;eacute;soudre les probl&amp;egrave;mes d&amp;rsquo;une grande &amp;eacute;chelle peut transformer une excellente architecture organisationnelle en bureaucratie.&lt;/p&gt;
&lt;p&gt;Spec Kit pose exactement la m&amp;ecirc;me question.&lt;/p&gt;
&lt;p&gt;Il ne faut pas confondre :&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;laquo; Cet outil sait coordonner un environnement complexe &amp;raquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;avec :&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;laquo; Toute &amp;eacute;quipe doit adopter cet environnement complexe pour travailler correctement &amp;raquo;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;Le retour du co&amp;ucirc;t de confiance&lt;/h2&gt;
&lt;p&gt;Il existe &amp;eacute;galement une autre dimension, plus rarement discut&amp;eacute;e : celle de la cha&amp;icirc;ne de confiance.&lt;/p&gt;
&lt;p&gt;Spec Kit n&amp;rsquo;impose d&amp;eacute;sormais plus Git dans tous les cas ; la documentation actuelle indique que Git est optionnel et principalement requis lorsque l&amp;rsquo;extension correspondante est utilis&amp;eacute;e. En revanche, l&amp;rsquo;installation officielle de Spec Kit demande actuellement Python 3.11+ ainsi que &lt;code&gt;uv&lt;/code&gt; ou &lt;code&gt;pipx&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Le probl&amp;egrave;me n&amp;rsquo;est &amp;eacute;videmment pas Python.&lt;/p&gt;
&lt;p&gt;Une &amp;eacute;quipe Python ne se poserait m&amp;ecirc;me pas la question.&lt;/p&gt;
&lt;p&gt;Mais consid&amp;eacute;rons une &amp;eacute;quipe enti&amp;egrave;rement .NET.&lt;/p&gt;
&lt;p&gt;Son environnement ma&amp;icirc;tris&amp;eacute; peut &amp;ecirc;tre constitu&amp;eacute; de :&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;.NET SDK
PowerShell
Visual Studio / Rider
quelques packages connus
ses propres applications&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;L&amp;rsquo;adoption d&amp;rsquo;un outil externe ajoute alors une nouvelle cha&amp;icirc;ne :&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Python
&amp;rarr; gestionnaire de packages Python
&amp;rarr; specify-cli
&amp;rarr; d&amp;eacute;pendances
&amp;rarr; templates
&amp;rarr; scripts
&amp;rarr; m&amp;eacute;canismes de mise &amp;agrave; jour&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Encore une fois, cela peut &amp;ecirc;tre parfaitement justifi&amp;eacute;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Mais il faut le justifier&lt;/em&gt;.&amp;nbsp;&lt;br /&gt;Et le justifier par "c'est parce que tout le monde le fait", n'est pas une justification acceptable.&lt;/p&gt;
&lt;p&gt;Une r&amp;egrave;gle &amp;eacute;l&amp;eacute;mentaire d&amp;rsquo;architecture devrait &amp;eacute;galement s&amp;rsquo;appliquer &amp;agrave; l&amp;rsquo;outillage :&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Toute d&amp;eacute;pendance ajout&amp;eacute;e &amp;agrave; la cha&amp;icirc;ne de production doit apporter davantage de valeur que le co&amp;ucirc;t de confiance, de compr&amp;eacute;hension et de maintenance qu&amp;rsquo;elle introduit.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Or l&amp;rsquo;un des messages centraux de la gouvernance des agents consiste pr&amp;eacute;cis&amp;eacute;ment &amp;agrave; ne pas d&amp;eacute;l&amp;eacute;guer aveugl&amp;eacute;ment : rendre les r&amp;egrave;gles visibles, conna&amp;icirc;tre le contexte fourni &amp;agrave; l&amp;rsquo;agent, contr&amp;ocirc;ler ce qu&amp;rsquo;il peut faire, v&amp;eacute;rifier ses r&amp;eacute;sultats et comprendre les m&amp;eacute;canismes automatis&amp;eacute;s.&lt;/p&gt;
&lt;p&gt;Installer un outil de gouvernance sans comprendre ce qu&amp;rsquo;il gouverne serait donc assez paradoxal.&lt;/p&gt;
&lt;h2&gt;Ce n&amp;rsquo;est cependant pas un d&amp;eacute;faut intrins&amp;egrave;que de Spec Kit&lt;/h2&gt;
&lt;p&gt;Il serait injuste d&amp;rsquo;en conclure que Spec Kit est opaque par nature.&lt;/p&gt;
&lt;p&gt;Ses artefacts, templates et scripts sont inspectables. Il est possible d&amp;rsquo;&amp;eacute;pingler des versions, d&amp;rsquo;adapter les templates et de modifier les conventions. Je modulerai malgr&amp;eacute; tout le c&amp;ocirc;t&amp;eacute; "inspectable" : des d&amp;eacute;veloppeurs .NET n'iront pas mettre leur nez dans le code Python, et ils ne devraient pas avoir &amp;agrave; le faire. De fait c'est comme ces gros packages de contr&amp;ocirc;les pour WinUI, ASP.Core ou autre qui vous indiquent fi&amp;egrave;rement que leur code source est fourni, comme &amp;eacute;l&amp;eacute;ment de confiance. C'est un leurre, avez-vous d&amp;eacute;j&amp;agrave; mis le nez dans ce type de code source de dizaines de milliers de lignes&amp;nbsp;ou plus (surtout qu'on ach&amp;egrave;te ces contr&amp;ocirc;les souvent parce qu'on ne saurait pas les &amp;eacute;crire !) ? Personne ne le fait, bien entendu. Donc quand Spec-kit se dit "inspectable", cela est r&amp;eacute;serv&amp;eacute; &amp;eacute;ventuellement au petit monde des devs Python, mais semble plus &amp;ecirc;tre un argument marketing d&amp;egrave;s qu'on s'adresse &amp;agrave; des devs Java ou C#...&lt;/p&gt;
&lt;p&gt;GitHub a &amp;eacute;galement introduit un preset &lt;code&gt;lean&lt;/code&gt; qui r&amp;eacute;duit explicitement le workflow &amp;agrave; l&amp;rsquo;essentiel : sp&amp;eacute;cification, plan, t&amp;acirc;ches et impl&amp;eacute;mentation, avec des fichiers Markdown beaucoup plus directs.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Le syst&amp;egrave;me de presets permet en outre de remplacer les templates, commandes et terminologies sans modifier le c&amp;oelig;ur de l&amp;rsquo;outil. D&amp;eacute;j&amp;agrave; l&amp;agrave; on se sent paum&amp;eacute; et pourtant c'est la version "pour les nuls" !&lt;/p&gt;
&lt;p&gt;Cela montre justement que Spec Kit reconna&amp;icirc;t plusieurs niveaux de c&amp;eacute;r&amp;eacute;monie possibles. Mais cela reste des c&amp;eacute;r&amp;eacute;monies tout de m&amp;ecirc;me, et elles ne sont pas forc&amp;eacute;ment justifi&amp;eacute;e dans tous les cas.&lt;/p&gt;
&lt;p&gt;On se moque souvent, et La Fontaine l'a fait avec habilet&amp;eacute;, de la grenouille que veut se faire aussi grosse que le boeuf, spoiler alert : &amp;ccedil;a finit mal. S'il avait &amp;eacute;t&amp;eacute; notre contemporain Spec-Kit lui aurait peut &amp;ecirc;tre inspir&amp;eacute; une autre fable tout aussi moralisatrice sur le boeuf qui voulait se faire aussi petit que la grenouille. Et &amp;ccedil;a finirait mal aussi... Spec-Kit comme GitHub ont &amp;eacute;t&amp;eacute; con&amp;ccedil;u comme des boeufs, d&amp;egrave;s le d&amp;eacute;part, pour tirer de lourdes charges. Ils sont utiles et m&amp;ecirc;me pr&amp;eacute;cieux dans ce cas pr&amp;eacute;cis. Mais vouloir les miniaturiser pour les rendre moins impressionnant ne marche pas. Sur les routes on n'utilise pas des "mini locomotives" on a invent&amp;eacute; les voitures. Non pas que les locos &amp;eacute;taient mal con&amp;ccedil;ues ou inutiles, juste parce qu'en faire des versions miniatures n'avait aucun sens, il fallait repenser le produit tout simplement...&lt;/p&gt;
&lt;p&gt;Une organisation peut parfaitement adopter une version donn&amp;eacute;e de Spec-Kit, l&amp;rsquo;auditer, la figer, &amp;eacute;ventuellement la forker, puis l&amp;rsquo;int&amp;eacute;grer &amp;agrave; sa propre cha&amp;icirc;ne d&amp;rsquo;outillage. C'est possible, c'est souple. Mais, du coup (horrible expression &amp;agrave; la mode), un autre paradoxe apparait : Qu'en est-il de la fameuse uniformit&amp;eacute; qu'apporterait Spec-kit si chacun peut en bricoler une version diff&amp;eacute;rente ?&lt;/p&gt;
&lt;p&gt;Mais on pourrait dire : dans ce cas, il n&amp;rsquo;y a aucune contradiction avec les principes de gouvernance.&lt;/p&gt;
&lt;p&gt;Au contraire : &lt;strong&gt;l&amp;rsquo;outil de gouvernance est lui-m&amp;ecirc;me gouvern&amp;eacute;&lt;/strong&gt;.&lt;br /&gt;Sauf qu'il en existe autant de versions que d'&amp;eacute;quipes et donc adieu l'argument principal d'uniformisation du process ! On a un borderl mais gouvern&amp;eacute;. C'est possible. Les pays qui n'ont pas suivi la pudibonderie ridicule de la France et qui ont conserv&amp;eacute; des maisons closes savent tr&amp;egrave;s bien qu'un bordel peut &amp;ecirc;tre bien gouvern&amp;eacute; mais que cela n'en change pas la nature en boulangerie ou en centre de loisir pour les &amp;eacute;coles du coin...&lt;/p&gt;
&lt;h2&gt;L&amp;agrave; se trouve le vrai paradoxe&lt;/h2&gt;
&lt;p&gt;Et c&amp;rsquo;est probablement la conclusion la plus int&amp;eacute;ressante.&lt;/p&gt;
&lt;p&gt;Plus on utilise Spec Kit dans un environnement exigeant (entendez tr&amp;egrave;s gros), plus son infrastructure devient justifi&amp;eacute;e.&lt;/p&gt;
&lt;p&gt;Mais plus cette infrastructure devient importante, plus elle doit elle-m&amp;ecirc;me &amp;ecirc;tre comprise, audit&amp;eacute;e, versionn&amp;eacute;e et gouvern&amp;eacute;e. Sinon elle contredit les principes de base de gouvernance de SDD !&lt;/p&gt;
&lt;p&gt;Autrement dit :&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Pour utiliser correctement un outil destin&amp;eacute; &amp;agrave; gouverner le travail des agents, il faut commencer par gouverner cet outil.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Ce paradoxe n&amp;rsquo;est pas une condamnation de Spec Kit.&lt;/p&gt;
&lt;p&gt;Il permet plut&amp;ocirc;t de replacer l&amp;rsquo;outil &amp;agrave; sa juste place.&lt;/p&gt;
&lt;p&gt;Spec Kit est une r&amp;eacute;ponse &amp;eacute;labor&amp;eacute;e &amp;agrave; un probl&amp;egrave;me de coordination &amp;eacute;labor&amp;eacute;. Il exige donc une organisation pour lui-m&amp;ecirc;me, une bureaucratie qui s'occupe de faire tourner l'administration, s'auto-justifiant presque de fa&amp;ccedil;on absurde.&lt;/p&gt;
&lt;p&gt;Le probl&amp;egrave;me commence lorsque cette r&amp;eacute;ponse devient une prescription ind&amp;eacute;pendante du contexte.&lt;/p&gt;
&lt;h2&gt;Le bon niveau de SDD n&amp;rsquo;est donc pas universel&lt;/h2&gt;
&lt;p&gt;Une petite &amp;eacute;quipe pourrait parfaitement fonctionner avec :&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;quelques fichiers Markdown
+ des r&amp;egrave;gles explicites
+ un agent&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Une &amp;eacute;quipe interm&amp;eacute;diaire pourrait ajouter :&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;templates
+ contr&amp;ocirc;les
+ quelques commandes d&amp;eacute;terministes&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Une organisation importante pourrait pr&amp;eacute;f&amp;eacute;rer :&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;workflow complet
+ contr&amp;ocirc;les automatiques
+ int&amp;eacute;grations multiples
+ conventions partag&amp;eacute;es
+ Spec Kit ou un syst&amp;egrave;me comparable&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ces trois approches peuvent relever du SDD.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Le crit&amp;egrave;re ne devrait pas &amp;ecirc;tre la conformit&amp;eacute; &amp;agrave; un outil particulier.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Il devrait &amp;ecirc;tre :&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Quel niveau de gouvernance faut-il pour conserver l&amp;rsquo;intention, ma&amp;icirc;triser les agents et coordonner correctement les acteurs de ce projet ?&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;C&amp;rsquo;est probablement le point essentiel.&lt;/p&gt;
&lt;p&gt;SDD permet aux LLM de supprimer une partie de la plomberie autrefois n&amp;eacute;cessaire pour traduire une intention en comportement logiciel.&lt;/p&gt;
&lt;p&gt;Il serait dommage de profiter de cette simplification pour reconstruire imm&amp;eacute;diatement une infrastructure complexe partout, y compris l&amp;agrave; o&amp;ugrave; elle ne r&amp;eacute;sout aucun probl&amp;egrave;me r&amp;eacute;el.&amp;nbsp;&lt;br /&gt;C'est peut-&amp;ecirc;tre l&amp;agrave; un r&amp;eacute;flexe des incomp&amp;eacute;tents, souvent nombreux dans les hi&amp;eacute;rarichies (lire le principe de Peter, toute personne est propuls&amp;eacute;e dans la hi&amp;eacute;rarchie jusqu'&amp;agrave; atteindre son niveau d'incomp&amp;eacute;tence...). Trop simplifi&amp;eacute;, trop supprimer de bureaucratie rend ceux qui s'en occupait inutiles. Et ils n'aiment pas se sentir sur un si&amp;egrave;ge &amp;eacute;jectable, alors ils inventent une nouvelle bureaucratie pour se maintenir en place. Peut-&amp;ecirc;tre. Je n'affirme rien, &amp;agrave; chacun de constater autour de lui.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;En tout cas la bonne gouvernance n&amp;rsquo;est pas celle qui ajoute le plus de contr&amp;ocirc;les.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;C&amp;rsquo;est celle qui ajoute exactement les contr&amp;ocirc;les dont le contexte a besoin &amp;mdash; et pas davantage.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Bon projets avec SDD (bien dig&amp;eacute;r&amp;eacute; et pas impos&amp;eacute; par un outil),&lt;br /&gt;&lt;br /&gt;Stay Tuned!&lt;/p&gt;</description>
      <link>http://www.e-naxos.com/Blog/post/PlomberieSpecKit</link>
      <author>odahan@e-naxos.com</author>
      <comments>http://www.e-naxos.com/Blog/post/PlomberieSpecKit#comment</comments>
      <guid>http://www.e-naxos.com/Blog/post.aspx?id=bb9d2888-a6f6-4734-9444-ab2871377de8</guid>
      <pubDate>ven., 25 sept. 2026 13:00:00 +0100</pubDate>
      <category>IA</category>
      <dc:publisher>Olivier</dc:publisher>
      <pingback:server>http://www.e-naxos.com/Blog/pingback.axd</pingback:server>
      <pingback:target>http://www.e-naxos.com/Blog/post.aspx?id=bb9d2888-a6f6-4734-9444-ab2871377de8</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://www.e-naxos.com/Blog/trackback.axd?id=bb9d2888-a6f6-4734-9444-ab2871377de8</trackback:ping>
      <wfw:comment>http://www.e-naxos.com/Blog/post/PlomberieSpecKit#comment</wfw:comment>
      <wfw:commentRss>http://www.e-naxos.com/Blog/syndication.axd?post=bb9d2888-a6f6-4734-9444-ab2871377de8</wfw:commentRss>
    </item>
    <item>
      <title>Sécurité des Agents IA : Pourquoi le Prompt ne remplacera JAMAIS vos autorisations (RBAC)</title>
      <description>&lt;p data-path-to-node="3"&gt;D&amp;egrave;s qu'un agent IA dispose d&amp;rsquo;outils (&lt;em data-path-to-node="4" data-index-in-node="50"&gt;tools&lt;/em&gt;) pour interagir avec vos syst&amp;egrave;mes &amp;mdash; cr&amp;eacute;er une note, exporter un rapport financier ou supprimer un ticket support &amp;mdash;, la question centrale n'est plus seulement &amp;laquo; &lt;em data-path-to-node="4" data-index-in-node="216"&gt;mon prompt est-il clair ?&lt;/em&gt; &amp;raquo;, mais &amp;laquo; &lt;em data-path-to-node="4" data-index-in-node="252"&gt;cette action est-elle autoris&amp;eacute;e ?&lt;/em&gt; &amp;raquo;.&lt;/p&gt;
&lt;p data-path-to-node="5"&gt;Pourtant, dans beaucoup de prototypes, l'erreur classique consiste &amp;agrave; exposer toutes les fonctions de l'entreprise au mod&amp;egrave;le, puis &amp;agrave; ajouter une consigne dans le prompt du type : &lt;em data-path-to-node="5" data-index-in-node="178"&gt;&amp;laquo; N'utilise la fonction de suppression que si l'utilisateur est administrateur &amp;raquo;&lt;/em&gt;.&lt;/p&gt;
&lt;p data-path-to-node="6"&gt;Si vous proc&amp;eacute;dez ainsi en production, vous vous exposez &amp;agrave; de graves failles de s&amp;eacute;curit&amp;eacute;.&lt;/p&gt;
&lt;h3 data-path-to-node="8"&gt;Le probl&amp;egrave;me du &amp;laquo; faux confort &amp;raquo; du prompt&lt;/h3&gt;
&lt;p data-path-to-node="9"&gt;Un prompt sert &amp;agrave; &lt;strong data-path-to-node="9" data-index-in-node="17"&gt;guider le comportement&lt;/strong&gt; du LLM, pas &amp;agrave; &lt;strong data-path-to-node="9" data-index-in-node="54"&gt;garantir la s&amp;eacute;curit&amp;eacute;&lt;/strong&gt;. Entre les risques de &lt;em data-path-to-node="9" data-index-in-node="97"&gt;prompt injection&lt;/em&gt;, le &lt;em data-path-to-node="9" data-index-in-node="118"&gt;jailbreaking&lt;/em&gt; ou simplement de mauvaises interpr&amp;eacute;tations par le mod&amp;egrave;le, s'en remettre au LLM pour g&amp;eacute;rer vos autorisations est une h&amp;eacute;r&amp;eacute;sie architecturale.&lt;/p&gt;
&lt;p data-path-to-node="10"&gt;Le r&amp;ocirc;le de l'agent est de choisir la meilleure option parmi des actions pr&amp;eacute;alablement autoris&amp;eacute;es, pas de d&amp;eacute;finir lui-m&amp;ecirc;me la politique d'acc&amp;egrave;s aux donn&amp;eacute;es et ressources de l'entreprise.&lt;/p&gt;
&lt;h3 data-path-to-node="12"&gt;La solution : Le filtrage de catalogue &amp;amp; le double verrou&lt;/h3&gt;
&lt;p data-path-to-node="13"&gt;Pour s&amp;eacute;curiser un agent IA, il faut appliquer les principes du &lt;strong data-path-to-node="13" data-index-in-node="63"&gt;RBAC&lt;/strong&gt; (&lt;em data-path-to-node="13" data-index-in-node="69"&gt;Role-Based Access Control&lt;/em&gt;) d&amp;egrave;s sa conception :&lt;/p&gt;
&lt;ol start="1" data-path-to-node="14"&gt;
&lt;li&gt;
&lt;p data-path-to-node="14,0,0"&gt;&lt;strong data-path-to-node="14,0,0" data-index-in-node="0"&gt;UserContext &lt;span class="math-inline" data-math="\rightarrow" data-index-in-node="12"&gt;-&amp;gt;&amp;nbsp;&lt;/span&gt;Permissions -&amp;gt;&amp;nbsp;Outils autoris&amp;eacute;s :&lt;/strong&gt; On ne construit pas un agent omnipotent qu'on tente de brider ensuite. Le syst&amp;egrave;me &amp;eacute;value l'utilisateur courant, d&amp;eacute;termine ses permissions (&lt;em data-path-to-node="14,0,0" data-index-in-node="206"&gt;ex: &lt;code data-path-to-node="14,0,0" data-index-in-node="210"&gt;CanDeleteTicket&lt;/code&gt;&lt;/em&gt;) et ne fournit &amp;agrave; l'agent &lt;strong data-path-to-node="14,0,0" data-index-in-node="251"&gt;que&lt;/strong&gt; le catalogue de &lt;em data-path-to-node="14,0,0" data-index-in-node="271"&gt;tools&lt;/em&gt; correspondant &amp;agrave; son profil.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p data-path-to-node="14,1,0"&gt;&lt;strong data-path-to-node="14,1,0" data-index-in-node="0"&gt;Le double verrou &amp;agrave; l'ex&amp;eacute;cution :&lt;/strong&gt; Filtrer le catalogue en entr&amp;eacute;e ne suffit pas. M&amp;ecirc;me si un &lt;em data-path-to-node="14,1,0" data-index-in-node="90"&gt;tool&lt;/em&gt; sensible est pr&amp;eacute;sent dans le catalogue d'un administrateur, la fonction elle-m&amp;ecirc;me doit rev&amp;eacute;rifier les droits et valider les param&amp;egrave;tres au moment de son ex&amp;eacute;cution dans le code m&amp;eacute;tier.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 data-path-to-node="16"&gt;D&amp;eacute;couvrez la mise en pratique dans ma nouvelle vid&amp;eacute;o !&lt;/h3&gt;
&lt;p data-path-to-node="17"&gt;Dans l'&amp;Eacute;pisode 6 de notre s&amp;eacute;rie d&amp;eacute;di&amp;eacute;e &amp;agrave; l'architecture des agents IA, nous d&amp;eacute;cortiquons ce pattern indispensable et montrons comment l'impl&amp;eacute;menter concr&amp;egrave;tement.&lt;/p&gt;
&lt;p data-path-to-node="18"&gt;&lt;strong data-path-to-node="18" data-index-in-node="0"&gt;Au programme de la vid&amp;eacute;o :&lt;/strong&gt;&lt;/p&gt;
&lt;ul data-path-to-node="19"&gt;
&lt;li&gt;
&lt;p data-path-to-node="19,0,0"&gt;⚠️ &lt;strong data-path-to-node="19,0,0" data-index-in-node="3"&gt;Anti-patterns fr&amp;eacute;quents&lt;/strong&gt; et pi&amp;egrave;ges &amp;agrave; &amp;eacute;viter (les &lt;em data-path-to-node="19,0,0" data-index-in-node="51"&gt;tools&lt;/em&gt; trop g&amp;eacute;n&amp;eacute;riques comme &lt;code data-path-to-node="19,0,0" data-index-in-node="79"&gt;ExecuteSql&lt;/code&gt; ou &lt;code data-path-to-node="19,0,0" data-index-in-node="93"&gt;HttpPost&lt;/code&gt;).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p data-path-to-node="19,1,0"&gt;&#128202; &lt;strong data-path-to-node="19,1,0" data-index-in-node="3"&gt;Exemple d'une Matrice RBAC&lt;/strong&gt; adapt&amp;eacute;e aux agents.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p data-path-to-node="19,2,0"&gt;&#128187; &lt;strong data-path-to-node="19,2,0" data-index-in-node="3"&gt;D&amp;eacute;mo technique Visual Studio&lt;/strong&gt; : Illustration du filtrage de catalogue selon le r&amp;ocirc;le (&lt;em data-path-to-node="19,2,0" data-index-in-node="87"&gt;anonymous&lt;/em&gt; vs &lt;em data-path-to-node="19,2,0" data-index-in-node="100"&gt;admin&lt;/em&gt;).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p data-path-to-node="19,3,0"&gt;⚙️ &lt;strong data-path-to-node="19,3,0" data-index-in-node="3"&gt;Transposition dans Microsoft Agent Framework&lt;/strong&gt; : Comment injecter le &lt;code data-path-to-node="19,3,0" data-index-in-node="70"&gt;UserContext&lt;/code&gt; et construire vos &lt;em data-path-to-node="19,3,0" data-index-in-node="100"&gt;function tools&lt;/em&gt; de mani&amp;egrave;re s&amp;eacute;curis&amp;eacute;e.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p data-path-to-node="19,4,0"&gt;&#128203; &lt;strong data-path-to-node="19,4,0" data-index-in-node="3"&gt;Checklist de production&lt;/strong&gt; pour valider vos d&amp;eacute;ploiements.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-path-to-node="20"&gt;&#127909; &lt;strong data-path-to-node="20" data-index-in-node="3"&gt;Visionnez d&amp;egrave;s maintenant la vid&amp;eacute;o compl&amp;egrave;te sur YouTube :&lt;/strong&gt;&lt;/p&gt;
&lt;p data-path-to-node="21"&gt;&#128073; &lt;strong data-path-to-node="21" data-index-in-node="3"&gt;&lt;a class="ng-star-inserted" href="https://youtu.be/ze5-twYf48E" target="_blank" rel="noopener" data-hveid="0" data-ved="0CAAQ_4QMahcKEwjLyIqAh4iXAxUAAAAAHQAAAAAQTw"&gt;Regarder l'&amp;eacute;pisode : Filtrer les tools selon les droits&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p data-path-to-node="21"&gt;Stay Tuned!&lt;/p&gt;</description>
      <link>http://www.e-naxos.com/Blog/post/securite-des-agents-ia-pourquoi-le-prompt-ne-remplacera-jamais-vos-autorisations-rbac</link>
      <author>odahan@e-naxos.com</author>
      <comments>http://www.e-naxos.com/Blog/post/securite-des-agents-ia-pourquoi-le-prompt-ne-remplacera-jamais-vos-autorisations-rbac#comment</comments>
      <guid>http://www.e-naxos.com/Blog/post.aspx?id=0b610b20-b784-46e0-b798-3400eab808e6</guid>
      <pubDate>ven., 25 sept. 2026 00:34:00 +0100</pubDate>
      <category>IA</category>
      <betag:tag>IA</betag:tag>
      <betag:tag>ai</betag:tag>
      <dc:publisher>Olivier</dc:publisher>
      <pingback:server>http://www.e-naxos.com/Blog/pingback.axd</pingback:server>
      <pingback:target>http://www.e-naxos.com/Blog/post.aspx?id=0b610b20-b784-46e0-b798-3400eab808e6</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://www.e-naxos.com/Blog/trackback.axd?id=0b610b20-b784-46e0-b798-3400eab808e6</trackback:ping>
      <wfw:comment>http://www.e-naxos.com/Blog/post/securite-des-agents-ia-pourquoi-le-prompt-ne-remplacera-jamais-vos-autorisations-rbac#comment</wfw:comment>
      <wfw:commentRss>http://www.e-naxos.com/Blog/syndication.axd?post=0b610b20-b784-46e0-b798-3400eab808e6</wfw:commentRss>
    </item>
  </channel>
</rss>