ASP.NET Core
La politique de support pour .NET Framework

Selon la politique de support de Microsoft, ASP.NET Core 2.1 est toujours supporté. Mais un matin, je constate avec horripilation que dans la documentation d'ASP.NET Core, les sections concernant ASP.NET Core 2.1 ont disparu. Comme la documentation est une part du produit, qu'en est-il réellement du support de ce dernier?

Échelle brisée
Quand la documentation est manquante

Quelle version d'ASP.NET Core faut-il utiliser avec .NET Framework?

Comme dans beaucoup d'entreprise utilisant .NET depuis longtemps, nous avons des dépendances incompatibles avec le nouveau .NET Core. Par conséquent, nous sommes contraints de continuer d'utiliser l'historique .NET Framework. Subséquemment, nous ne pouvons pas utiliser la dernière version d'ASP.NET Core.

La dernière version compatible avec .NET Framework est ASP.NET Core 2.2, seulement son support a pris fin le 23 décembre 2019. Quant à ASP.NET Core 2.1, son support a pris fin le samedi 21 août 2021 pour .NET Core. Par contre, il est maintenu pour .NET Framework.

To help facilitate migrating applications to ASP.NET Core on .NET Core, the following ASP.NET Core 2.1 (latest patched version only) packages will be supported on the .NET Framework and follow the support cycle for those .NET Framework versions. ASP.NET Core 2.1 is defined as "Tools" in the Microsoft Support Lifecycle Policy. A "Tool" requires a minimum of 12 months notification prior to the end of support. For more information, please see this KB Article.
Pour faciliter la migration des applications vers ASP.NET Core sur .NET Core, ASP.NET Core 2.1 (dernière version uniquement) sera pris en charge sur le .NET Framework et suivra le cycle de support des versions de .NET Framework. ASP.NET Core 2.1 est défini comme « Outils » dans la politique de cycle de vie du support Microsoft. Un "Outil" nécessite un minimum de 12 mois de notification avant la fin du support. Pour plus d'informations, veuillez consulter cet article de la base de connaissances.

C'est pour ces raisons, que si vous êtes contraint d'utiliser .NET Framework, il est recomandé d'utiliser ASP.NET Core 2.1, pour disposer du support du produit.

Et pour Entity Framework Core?

EF Core 3.1 est la dernière version compatible avec .NET Framework. Seulement cette version n'a plus de support depuis le 13 décembre 2022.

Quand à EF Core 2.1, elle est suit la logique d'ASP.NET Core 2.1 :

EF Core 2.1 will continue to be supported when used with ASP.NET Core 2.1 on .NET Framework only.


EF Core 2.1 continuera d'être supporté quand utilisé avec ASP.NET Core 2.1 avec .NET Framework seulement.

Qu'offre ce support?

J'ai eu une discussion avec un employé de Microsoft à propos de ce que permet ce support. La réponse a été :

It would need to be an extremely serious bug such as a security issue to be accepted.


Il faudrait qu'il s'agisse d'un bug extrêmement grave, tel qu'un problème de sécurité, pour être accepté.

Le drame

Je suis en train de réaliser une analyse pour préparer la migration vers ASP.NET Core 6. La documentation officielle d'ASP.NET Core regorge d'annotation, détaillant les différences de comportement d'une version à une autre. J'ai donc accompagné mon analyse de nombreuses références à cette documentation pour justifier certaines propositions.

Mais en relisant le rapport produit, je constate que les liens Web ne renvoi plus vers les informations pertinentes. De plus, je ne parviens pas à retrouver ces informations dans la documentation. Il semble que tous les éléments à propos des versions 2.X d'ASP.NET Core ont disparu.

L'enquête

Comme les sources de la documentation sont accessibles sur GitHub, j'ai décidé de mener l'investigation. Il se trouve que la documentation ASP.NET Core a été nettoyée des portions à propos des versions 2.X, comme le montre le ticket GitHub suivant :

#24695 Drop 2.x content and sample apps

Bien ASP.NET Core 2.X n'est plus supporté en .NET Core, ASP.NET Core 2.1 est toujours supporté en .NET Framework. Et j'insiste, la documentation est une part intégrante du produit. Donc, je trouve cette décision inconvenante. Alors, j'ai ouvert un ticket pour remonter le problème et demander le retour de la documentation ASP.NET Core 2.1 :

#25171 Rollback the ASP.NET Core 2.X content

En toute franchise, je pensais que ma demande serait déclinée. Et bien non, en moins de 24h le contenu a été restauré. Je remercie Rick Anderson pour ce travail :

#25174 restore 2.2 Web API /1

Support d'ASP.NET Core 2.1

Dans le ticket que j'ai ouvert, Luke Latham a soulevé un problème à propos de la spécification du support d'ASP.NET Core 2.1. Dans " la police de support d'ASP.NET, il est indiqué :

ASP.NET Core 2.1 is defined as "Tools" in the Microsoft Support Lifecycle Policy.
ASP.NET Core 2.1 est défini comme « Outils » dans la politique de cycle de vie du support Microsoft.

Seulement, dans la liste de ces outils, il n'y a pas ASP.NET Core 2.1:

The following products are supported as Tools according to the Microsoft Support Lifecycle guidelines:
  • ASP.NET Web Stack
    • ASP.NET MVC4
    • ASP.NET Web API
    • ASP.NET Web API 2
    • ASP.NET Web Pages 2
    • ASP.NET Web Pages 3
  • Entity Framework 6
  • Microsoft OWIN
  • Microsoft Web Developer Tools 2013
  • ODataLib
  • WCF RIA Services v1.0 SP2

Par conséquent, ASP.NET Core 2.1 se retrouve avec la politique de support classique de .NET Core 2.1, soit que le support aurait pris fin le samedi 21 août 2021.

Face à cette incohérence, j'ai demandé des explications. La réponse a été :

The entries listed for "Tools" don't include "ASP.NET Core 2.1" as the original post copied from the first doc. However, support will be maintained per PU management regardless of the incorrect remark in the doc.
La liste des "outils" n'inclut pas "ASP.NET Core 2.1" contrairement à ce qui est indiqué dans la première documentation (fessant référence à la politique de support d'ASP.NET). Cependant, le support (d'ASP.NET Core 2.1) sera maintenue par l'équipe PU (product unit) en dépit de l'erreur indiquée en amont.

Cela confirme que le support d'ASP.NET Core 2.1 est bien effectif pour .NET Framework.

La documentation constitue une partie importante de l'ingénierie logicielle, qui est souvent négligée.