Cette semaine, un an après la publication de. NET Standard 2.0, Microsoft annonce .NET Standard 2.1.

.NET

.NET Standard est un ensemble d’interfaces de programmation (API) que les implémentations de. NET doivent supporter afin de se conformer au standard.

Les principales implémentations. NET sont :

.NET Framework, l’implémentation originelle de. NET, installée sur les PC sous Windows. Comme cette version est exploitée par les entreprises depuis des années, la compatibilité est primordiale. C’est pourquoi le. NET Framework 4.8 ne sera pas compatible avec. NET Standard 2.1. Le développement de. NET Framework va ralentir.

.NET Core est la nouvelle implémentation en code source ouvert, multiplateforme (Windows, macOS, Linux) de. NET, et c’est là que se portent tous les efforts. Les offres de support des versions vont jusqu’à 3 ans, ce qui est largement inférieur aux offres de support du. NET Framework.

Ces deux versions peuvent coexister sans problème sur un poste de travail comme sur un serveur.

Les entreprises doivent donc faire un compromis pour leurs développements.

Les deux autres implémentations majeures sont Mono, une implémentation sur Linux, et Xamarin, la plateforme de développement mobile multiplateforme (Android, iOS, Windows Mobile) de Microsoft.

.NET Core, Xamarin et Mono seront adaptés pour être compatibles avec. NET Standard 2.1

Les nouveautés de. NET Standard 2.1

Pour cette dernière itération de. NET Standard, le mot d’ordre était l’amélioration des performances.

Span < T > est un type introduit par. NET Core 2.1, qui ressemble à un tableau et qui permet de représenter la mémoire, gérée ou non, de façon uniforme, qui est compatible avec le découpage sans copie, et qui est au cœur de la plupart des optimisations de performance.

API de base. Les APIs de base ont été étendues pour fonctionner avec Span < T >.  Par exemple Stream. Read (Span < Byte >). Pour profiter au maximum des performances optimisées, il faut utiliser ces nouvelles APIs.

Reflection emit. Cette fonctionnalité dynamique est généralement exploitée pour optimiser les performances, tout comme générer des types à la volée pour les interfaces proxy. Comme pour Span < T >, il n’a pas été possible d’inclure cette fonctionnalité par simple ajout de paquet, il a fallu changer le compilateur et l’environnement d’exécution. C’est pourquoi ils font partie du nouveau standard.

SIMD. Single Instruction on Multiple Data, ou instruction unique, données multiples, est un type de parallélisme au niveau du processeur. Déjà compatible avec. NET Framework et. NET Core, le support de SIMD a été étendu pour accélérer des fonctions de base comme la comparaison de chaînes de caractères.

ValueTask et ValueTask < T > sont exploités pour optimiser les codes asynchrones et synchrones en réduisant les allocations nécessaires. Elles sont par exemple utilisées par des types comme Socket et NetworkStream.

DbProviderFactories. DBProviderFactories est l’une des rares primitives de ADO.NET qui n’a pas pu être implémentée à temps pour. NET Standard 2.0, et qui permet aux librairies de code et aux applications d’utiliser un fournisseur ADO.NET sans connaître ses types spécifiques à l’exécution. Par exemple avec un nom récupéré dans un fichier de configuration. Ce qui est corrigé avec. NET Standard 2.1.

Général. Presque tous les ajouts aux classes de base de. NET Core, tels que System. HashCode ou de nouvelles fonctions surchargées de Sytem. String, soit plus de 800, ont été ajoutées au. NET Standard 2.1.