Dot.Blog

C#, XAML, Xamarin, UWP/Android/iOS

.NET Standard quelle couverture des APIs ?

.NET Standard s’impose pour unifier toutes les versions de .NET mais il reste difficile de connaître par cœur le tableau croisé des API supportées. Un petit tableau vous aidera !

.NET Standard

Je ne dirai rien dans ce poste sur cette normalisation de tous les .NET j’en ai déjà beaucoup parlé et je vais en reparler (lire les billets .NET Standard arrive !, .NET Standard avec Xamarin ou .NET Core ASP.NET et Xamarin).

Juste pour rappel, .NET Standard n’est pas une énième mouture de .NET mais un standard comme son nom l’indique, c’est à dire une sorte de contrat que tous les .NET doivent respecter ce qui facilite la portabilité du code et le cross-plateforme tout en évitant dans l’immédiat de réécrire tous les .NET existants. .NET Standard est un peu à .NET ce qu’une interface C# est à une classe donc.

Les versions

Comme toute norme, comme tout standard, .NET Standard évolue au fil du temps. Il se trouve donc que .NET Standard possède aussi un numéro de version comme n’importe quelle “vraie” mouture de .NET.

Là où cela commence à devenir plus “rock & roll” c’est que pour une version donnée de .NET Standard il existe donc pleins de versions différentes des “véritables” implémentations de .NET. Et savoir quelles APIs sont couvertes dans Xamarin, WPF ou UWP par telle ou telle version de .NET Standard est un peu difficile.

Quelle importance ?

Elle est grande ! Car selon le niveau de .NET Standard que vous adoptez vous ne pouvez pas utiliser en face n’importe quelle version des implémentations de .NET !

Par exemple si vous avez opté pour .NET Standard 1.2 vous ne pourrez pas utiliser .NET 4.6 pour WPF mais seulement 4.5.1, c’est tout bête mais si vous misiez sur certains ajouts de la 4.6 c’est cuit… En revanche votre code sera compatible avec UWP 10.0 et Mono 4.6 ainsi que .NET Core 1.0 mais pas avec Xamarin IOS 10.14…

Vous voyez ça prend vite la tête !

Un petit tableau (ou plutôt plusieurs !)

L’équipe de .NET Standard a créé un petit outil Web qui affiche les APIs couvertes par chaque version de .NET Standard. C’est un outil intéressant car comme je viens de le montrer il est plutôt difficile de se rappeler de toutes les combinaisons existantes.

Vous trouverez ce tableau en cliquant ici (sélectionnez en haut à gauche le numéro de version de .NET Standard pour changer les données du tableau).

Je ne vais pas recopier ces tableaux ici, mais je vous montrerai uniquement le dernier, celui qui concerne .NET Standard 2.0, pour les versions précédentes et les futures à venir mieux vaut conserver le lien vers l’original :

image

(comme toujours sur Dot.Blog un clic sur l’image vous donnera un affichage à 100% souvent plus lisible)

Conclusion

.NET Standard est en train de modifier profondément le paysage .NET en l’unifiant tout en respectant les spécificités de chaque implémentation et leur propre rythme de mise à jour. C’est une idée brillante de la part de Microsoft.

Désormais votre code devrait cibler une version de .NET Standard plutôt qu’une version spécifique d’une implémentation spécifique de .NET, votre code deviendra ainsi totalement portable. En cross-plateforme cela devient possible en préférant cibler .NET Standard plutôt qu’un “profil .NET”.

En ciblant .NET Standard 2.0 aujourd’hui vous vous assurez une couverture maximale puisqu’il est supporté par toutes les dernières versions de .NET, aussi bien Core que Xamarin.

Bon dev Standard et portable…

Stay Tuned !

blog comments powered by Disqus