Microsoft annonce la disponibilité de la première préversion de .NET Core 2.1
Pour Windows, macOS et Linux

Le , par François DORIN, Responsable .NET & Magazine
05/02/2108 : L'équipe .NET a passé ces derniers mois sur GitHub à travailler sur .NET Core 2.1. De nombreux développeurs utilisent maintenant .NET Core 2.0 depuis sa publication en août dernier et souhaitent savoir quelles seront les fonctionnalités à venir. L'équipe .NET a suffisamment avancé ses travaux pour faire un tour d'horizon de cette prochaine version. Comme pour les versions précédentes, la communauté a contribué à de nombreuses améliorations.

.NET Core 2.1 est une version orientée « retour utilisateur » après une version 2.0 qui était une version plus fonctionnelle :

  • CLI : réduction des temps de compilation ;
  • CLI : outils globaux ;
  • CoreCLR : compatibilité ascendante sur version mineure ;
  • CoreCLR : pas de copie de tableau avec Span ;
  • CoreFX : amélioration des performances de HttpClient ;
  • CoreFX : pack de compatibilité Windows ;
  • ASP.NET : SignalR est maintenant disponible pour .NET Core ;
  • ASP.NET : HTTPS est activée par défaut ;
  • EF : support basic du lazy loadgin ;
  • EF : support pour Azure Cosmos DB.


Réduction des temps de compilation
Les temps de compilation ont été fortement réduits avec .NET Core 2.1, particulièrement lors d'une compilation incrémentale. Les améliorations ont été faites dans les outils CLI et dans MSBuild afin de fournir une meilleure expérience, que ce soit durant les compilations en ligne de commande ou depuis Visual Studio.

Le diagramme ci-dessous montre de manière concrète les améliorations que vous pouvez espérer via cette nouvelle version. Sur le diagramme, deux cas de figure sont présentés, avec pour chacun d'entre eux les temps de compilation :
  • le temps de compilation avec .NET Core 2.0 ;
  • le temps de compilation avec une préversion de .NET Core 2.1 ;
  • l’espérance de gain avec la version finale de .NET Core 2.1.




Outils globaux .NET Core
La prochaine version de .NET Core va introduire un nouveau déploiement et un nouveau mécanisme d'extensions pour ses outils. Cette nouvelle expérience est très similaire aux outils globaux Node.js dont elle est inspirée.

Les outils .NET Core sont des applications consoles distribuées en tant que paquets NuGet. Par défaut, ces outils sont dépendants d'un framework particulier et incluent l'intégralité de leurs dépendances NuGet. Cela signifie que ces outils fonctionneront quel que soit le système d'exploitation et quelle que soit l'architecture, à partir du moment où le framework .NET Core est disponible.

Actuellement, les outils .NET Core ne supportent que les installations globales. Des travaux sont en cours pour permettre une installation locale. La syntaxe actuelle ressemble à :
Code Shell : Sélectionner tout
1
2
   dotnet tool install -g awesome-tool 
   awesome-tool

Oui, une fois un outil installé (ici, awesome-tool), vous pourrez l'utiliser directement. Vous n'aurez plus besoin de saisir dotnet awesome-tool mais juste awesome-tool.

Avec ce nouveau déploiement, un nouvel écosystème devrait voir le jour, où les outils seront déployés via des paquets NuGet. Par défaut, les paquets seront recherchés sur NuGet.org.

Span, Memory
De nouveaux types font leur apparition pour gérer les tableaux et la mémoire de manière plus efficace. Aujourd'hui, si on veut passer en paramètre les 1000 premiers éléments d'un tableau de 10 000 éléments, on doit passer une copie de ces 1000 éléments. Cette opération est coûteuse en temps et en mémoire. Le nouveau type Span permet de fournir une « vue » d'un tableau sans les coûts associés à une copie. Et comme il s'agit d'une structure, il n'y a pas le coût lié à une allocation non plus.

Jared Parsons donne une très bonne introduction dans sa vidéo video C# 7.2: Understanding Span disponible sur Channel 9. Stephen Toub donne encore plus de détails dans un post de blog.

Span et les types associés proposent une représentation unifiée de la mémoire depuis de nombreuses sources différentes, comme les tableaux, les allocations sur la pile ou la mémoire native. Avec ses possibilités de découpage, il n'est plus nécessaire de procéder à de coûteuses copies et allocations dans la plupart des scénarios. Cette nouvelle approche fournit également une alternative sûre là où, auparavant, il aurait été nécessaire d'utiliser du code unsafe.

Par exemple, pour créer un Span à partir d'un tableau :

Code C# : Sélectionner tout
1
2
var arr = new byte[10]; 
Span<byte> bytes = arr; // Cast implicite de T[] en Span<T>

Il est facile de créer un span pour représenter une partie d'un tableau, en utilisant une surcharge de la méthode Slice. Ensuite, les accès en lecture/écriture à partir de ce nouveau span se font de manière transparente dans la partie correspondante du tableau original :

Code C# : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
Span<byte> slicedBytes = bytes.Slice(start: 5, length: 2); 
slicedBytes[0] = 42; 
slicedBytes[1] = 43; 
Assert.Equal(42, slicedBytes[0]); 
Assert.Equal(43, slicedBytes[1]); 
Assert.Equal(arr[5], slicedBytes[0]); 
Assert.Equal(arr[6], slicedBytes[1]); 
slicedBytes[2] = 44; // Throws IndexOutOfRangeException 
bytes[2] = 45; // OK 
Assert.Equal(arr[2], bytes[2]); 
Assert.Equal(45, arr[2]);

Performance de HttpClient
Les requêtes sortantes représentent une part importante de la performance pour certains types d'applications, comme les microservices. .NET core 2.1 vient avec un nouveau gestionnaire HttpClient, réécrit pour de hautes performances. Un premier retour de la part de quelques bêta testeurs montre que ce nouveau gestionnaire a grandement amélioré leurs applications.

Compatibilité ascendante sur version mineure
Maintenant, il sera possible d'exécuter des applications .NET Core sur des versions plus récentes du framework tant que la version majeure reste la même. Ainsi, il sera possible d'exécuter une application .NET Core 2.0 sur le framework .NET Core 2.1 ou une application .NET Core 2.1 sur le framework .NET Core 2.5 (bien entendu, si une telle version venait à être publiée). La compatibilité ascendante est pour les versions mineures seulement, c'est-à-dire qu'il ne sera pas garanti qu'une application .NET Core 2.x puisse tourner sur une version 3.0 ou ultérieure de .NET Core.

Si la version requise de .NET Core est disponible, elle sera utilisée. La compatibilité ascendante ne sera utilisée que si la version requise de .NET Core n'est pas disponible dans un environnement donné.

Notez également qu'il sera possible de désactiver cette fonctionnalité.

Pack de compatibilité Windows
Lors du portage d'une application du framework .NET vers le framework .NET Core, vous pouvez utiliser le nouveau pack de compatibilité Windows. Il donne accès à 20 000 API supplémentaires, en plus de celles fournies via le .NET Core. Le pack inclut System.Drawing, EventLog, WMI, les compteurs de performance et les services Windows.

Si vous prévoyez de réaliser une application multiplateforme, vous pouvez utiliser un nouvel analyseur d'API pour vous assurer que vous n'utilisez pas par mégarde une API disponible uniquement pour Windows.

Disponibilité
Les préversions de .NET Core 2.1 sont prévues tous les mois à partir de ce mois, jusqu'à la publication finale qui devrait avoir lieu durant le premier semestre 2018.

Mise à jour le 28/02/2018 : Microsoft annonce la disponibilité de la première préversion de .NET Core 2.1

Microsoft a annoncé hier la disponibilité de .NET Core 2.1 Preview 1 pour Windows, macOS et Linux. Avec cette version, Microsoft a déjà atteint une bonne partie des objectifs définis dans sa feuille de route pour .NET Core 2.1. Il s'agit notamment de la disponibilité de .NET Core Global Tools (outils globaux .NET Core), de la réduction des temps de compilation ou encore de la compatibilité ascendante sur version mineure. Dans sa feuille de route, Microsoft présentait également de nouveaux types (comme Span, Memory) pour gérer les tableaux et la mémoire de manière plus efficace et ils sont inclus dans cette préversion.

Au niveau des sockets, .NET Core 2.1 Preview 1 introduit trois améliorations significatives de performances (et d'autres plus petites). C'est le cas par exemple de la prise en charge de Span / Memory dans Socket/NetworkStream. D'autres améliorations de performances sur Windows et Linux sont également obtenues grâce à une variété de corrections. À cela s'ajoutent des améliorations de performances pour SslStream, ainsi que la prise en charge d'ALPN (requis pour HTTP2) et la rationalisation des paramètres SslStream.

Un nouveau gestionnaire HttpClient, appelé SocketHttpHandler, est également disponible. Il s'agit d'une implémentation C# de HttpClient basée sur les sockets .NET et Span et qui est beaucoup plus rapide que l'implémentation existante. En dehors de la performance, il a aussi d'autres avantages comme l'élimination des dépendances de plateforme à libcurl (pour Linux) et WinHTTP (pour Windows).

Vous pouvez développer des applications .NET Core 2.1 avec Visual Studio 2017 15.6 Preview 6 ou une version ultérieure, ou Visual Studio Code. Le support pour Visual Studio pour Mac est prévu avec la sortie de 15.7.

Sources : Annonce de .NET Core 2.1 Preview 1(Blog Microsoft), Feuille de route .NET Core 2.1 (Blog Microsoft)


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster une réponse Signaler un problème

Avatar de Michael Guilloux Michael Guilloux - Chroniqueur Actualités https://www.developpez.com
le 12/04/2018 à 11:58
Microsoft annonce la sortie de la deuxième préversion de .NET Core 2.1
cette version est prête pour des tests plus larges

Début février, Microsoft a dévoilé sa feuille de route pour la version 2.1 de .NET Core, la déclinaison open source, modulaire et multiplateforme du .NET Framework. Avec la preview 1 publiée fin février, Microsoft a atteint une bonne partie des objectifs définis dans sa feuille de route. Il s'agit notamment de :

  • la disponibilité de .NET Core Global Tools (outils globaux .NET Core) : .NET Core introduit un nouveau mécanisme de déploiement et d'extensions pour ses outils. Une nouvelle expérience similaire aux outils globaux Node.js dont elle est inspirée ;
  • la réduction des temps de compilation ;
  • la compatibilité ascendante sur version mineure : possibilité d'exécuter des applications .NET Core sur des versions plus récentes du framework tant que la version majeure reste la même ;
  • de nouveaux types (comme Span<T>, Memory<T> pour gérer les tableaux et la mémoire de manière plus efficace ;
  • un nouveau gestionnaire HttpClient, appelé SocketHttpHandler : une implémentation C# de HttpClient basée sur les sockets .NET et Span<T> et qui est beaucoup plus rapide que l'implémentation existante ;
  • le nouveau pack de compatibilité Windows, que vous pouvez utiliser lors du portage d'une application du framework .NET vers le framework .NET Core. Il donne accès à 20 000 API supplémentaires, en plus de celles fournies via le .NET Core ;
  • diverses améliorations de performances.

Le 11 avril, Microsoft a annoncé la sortie de .NET Core 2.1 Preview 2. Avec cette deuxième préversion, Microsoft estime que .NET Core 2.1 est maintenant prêt pour des tests plus larges, car nous nous rapprochons d'une version stable dans les deux à trois prochains mois.

Les temps de compilation ont été fortement réduits en passant de .NET Core 2.0 à la preview 1 de .NET Core 2.1. Mais ils sont encore meilleurs dans cette deuxième préversion, comme vous pouvez le voir sur le graphique comparatif ci-dessous :


De nouveaux outils ont été ajoutés au SDK. Microsoft dit avoir constaté que ces outils sont si populaires que le fait de devoir les ajouter à des projets individuels ne semblait pas être la bonne conception. C'est pourquoi ils ont été intégrés au SDK. Il s'agit de :

  • dotnet watch ;
  • dotnet dev-certs ;
  • dotnet user-secrets ;
  • dotnet sql-cache ;
  • dotnet ef.

Ces outils étaient auparavant des outils DotNetCliToolReference. Dans .NET Core 2.1, ils ne seront plus livrés de cette manière. Vous pouvez donc supprimer les entrées DotNetCliToolReference dans votre fichier de projet lorsque vous adoptez .NET Core 2.1.

Avec la preview 2, la syntaxe des outils globaux .NET Core a aussi changé, comme vous pouvez le voir dans l'exemple suivant :

Code : Sélectionner tout
1
2
dotnet tool install -g dotnetsay
dotnetsay
Notons également que toutes les opérations relatives aux outils .NET Core utilisent maintenant la commande dotnet tool. La commande a donc de nouveaux arguments possibles puisque les nouvelles fonctionnalités suivantes ont été ajoutées dans .NET Core 2.1 Preview 2 :

  • dotnet tool install - pour installer un outil ;
  • dotnet tool update - pour désinstaller et réinstaller un outil, en utilisant une nouvelle version, ce qui revient à le mettre à jour ;
  • dotnet tool uninstall - pour désinstaller un outil ;
  • dotnet tool list - pour répertorier les outils actuellement installés ;
  • --tool-path - pour indiquer un emplacement spécifique pour installer, désinstaller ou lister des outils, par invocation.

Entre autres changements, on peut encore noter la consolidation de l'ensemble des dépôts Docker Hub utilisés pour .NET Core et ASP.NET Core. Il sera maintenant utilisé microsoft/dotnet comme seul dépôt .NET Core à l'avenir. Microsoft a également ajouté un ensemble de variables d'environnement aux images docker .NET Core, pour la version 2.0 et les versions ultérieures. Ces variables d'environnement permettent à plusieurs scénarios de fonctionner sans configuration supplémentaire, comme le développement d'applications ASP.NET Core dans un conteneur.

Vous pouvez développer des applications .NET Core 2.1 avec Visual Studio 2017 15.7 Preview 1 ou une version ultérieure, ou encore Visual Studio Code. Le support pour Visual Studio pour Mac est prévu avec la sortie de .NET Core 2.1 RTM.

Source : Blog .NET

Et vous ?

Qu'en pensez-vous ?
Avatar de Michael Guilloux Michael Guilloux - Chroniqueur Actualités https://www.developpez.com
le 08/05/2018 à 1:18
Microsoft annonce la disponibilité de .NET Core 2.1 RC1
cette version peut déjà être utilisée en production

Microsoft vient d'annoncer la sortie de la première release candidate (RC1) de .NET Core 2.1, la déclinaison open source, modulaire et multiplateforme du .NET Framework. C'est la troisième version publiée à ce jour sur le chemin de la version stable de .NET Core 2.1. Au cours des premières versions, Microsoft a essayé d'implémenter un certain nombre de fonctionnalités annoncées dans sa feuille de route dévoilée en février dernier. Pour la Preview 1, il s'agissait notamment de :

  • la disponibilité de .NET Core Global Tools (outils globaux .NET Core) : .NET Core introduit un nouveau mécanisme de déploiement et d'extensions pour ses outils. Une nouvelle expérience similaire aux outils globaux Node.js dont elle est inspirée ;
  • la réduction des temps de compilation ;
  • la compatibilité ascendante sur version mineure : possibilité d'exécuter des applications .NET Core sur des versions plus récentes du framework tant que la version majeure reste la même ;
  • de nouveaux types (comme Span<T>, Memory<T> pour gérer les tableaux et la mémoire de manière plus efficace ;
  • un nouveau gestionnaire HttpClient, appelé SocketHttpHandler : une implémentation C# de HttpClient basée sur les sockets .NET et Span<T> et qui est beaucoup plus rapide que l'implémentation existante ;
  • le nouveau pack de compatibilité Windows, que vous pouvez utiliser lors du portage d'une application du framework .NET vers le framework .NET Core. Il donne accès à 20 000 API supplémentaires, en plus de celles fournies via le .NET Core ;
  • diverses améliorations de performances.


Avec la preview 2, Microsoft a encore significativement réduit les temps de compilation et intégré de nouveaux outils de développement au SDK. Les outils en question (watch, dev-certs, user-secrets, sql-cache et ef), Microsoft a estimé qu'ils étaient si populaires qu'il n'était pas optimal de devoir les ajouter à des projets individuels. D'où la nécessité de les intégrer au SDK .NET Core.

.NET Core 2.1 preview 2 a également introduit de nouvelles fonctionnalités pour Global Tools, notamment dotnet tool list, dotnet tool uninstall et dotnet tool update, qui viennent d'ajouter à dotnet tool install et qui peuvent aussi être utilisés avec --tool-path.

Avec la RC1 disponible pour Windows, macOS et Linux, Microsoft estime que .NET Core 2.1 peut déjà être utilisée en production. « Nos tests de qualité, de fiabilité et de performance nous permettent de croire que la version est prête pour le premier groupe d'utilisateurs de production », a annoncé Microsoft dans un billet de blog. Mais comme toujours, il est recommandé de tester votre application avant de la déployer en production.

Dans cette version, Microsoft met en avant un certain nombre de nouveautés comme le support d'Alpine Linux, une distribution Linux ultralégère et axée sur la sécurité. Son support a en effet été réclamé par de nombreux développeurs, alors que la distribution est devenue l'image de base préférée pour Docker.

On notera également dans cette version de .NET Core 2.1 le support ARM, à la demande des développeurs : .NET Core est maintenant supporté sur les distributions Linux ARM32, comme Raspbian et Ubuntu. Il faut toutefois noter que .NET Core 2.1 est pris en charge sur Raspberry Pi 2+ et non sur le Pi Zero ou d'autres périphériques utilisant une puce ARMv6. .NET Core nécessite des puces ARMv7 ou ARMv8, comme l'ARM Cortex-A53.

Une autre nouveauté importante est le support de Brotli. Il s'agit d'un algorithme de compression sans perte à usage général qui compresse les données d'une manière comparable aux meilleures méthodes de compression à usage général actuellement disponibles. L'encodage Brotli est pris en charge par la plupart des navigateurs Web, les principaux serveurs Web et certains CDN (Content Delivery Networks). La RC1 de .NET Core 2.1 apporte également des améliorations aux API cryptographiques.

Comme dans les préversions précédentes, des améliorations ont encore été apportées à Global Tools et la fonctionnalité d'outils globaux .NET Core a été stabilisée. Entre autres nouveautés, on note surtout la compilation par niveaux (tiered compilation), une nouvelle fonctionnalité pour le runtime disponible en préversion. D'après le géant du logiciel, elle offre un moyen au runtime d'utiliser de manière plus adaptative le compilateur Just-In-Time (JIT) pour obtenir de meilleures performances.

Comme l'explique Microsoft, le défi fondamental pour les compilateurs JIT est que le temps de compilation fait partie du temps d'exécution de l'application. Produire un meilleur code signifie généralement passer plus de temps à l'optimiser. Mais si une portion de code donnée s'exécute seulement une fois ou seulement quelques fois, le compilateur passera plus de temps à l'optimiser que l'application ne passerait à exécuter une version non optimisée du code.

Avec la compilation par niveaux, le compilateur génère d'abord du code le plus rapidement possible, avec seulement des optimisations minimales (premier niveau). Puis, quand il détecte que certaines méthodes sont beaucoup exécutées, il produit une version plus optimisée de ces méthodes (deuxième niveau) qui sera plutôt utilisée. La compilation de deuxième niveau est effectuée en parallèle, ce qui supprime le compromis entre la compilation rapide et la production de code optimal. Vous pouvez tester la compilation par niveaux avec votre application .NET Core 2.1 RC en définissant une variable d'environnement : COMPlus_TieredCompilation="1".

Vous pouvez développer des applications .NET Core 2.1 avec Visual Studio 2017 15.7, Visual Studio pour Mac 7.5 ou Visual Studio Code.

Source : Blog .NET Core

Et vous ?

Que pensez-vous des nouveautés de .NET Core 2.1 annoncées jusqu'ici ?
Comptez-vous tester .NET Core 2.1 RC1 ?

Voir aussi :

.NET Framework 4.7.2 est disponible, avec le support de l'injection de dépendance dans les Web Forms et la sécurisation de cookies avec SameSite
Visual Studio Code 1.23 est disponible : tour d'horizon des nouveautés dans l'éditeur de code open source et multiplateformes de Microsoft
Feuille de route de Visual Studio 2017 : Microsoft donne un aperçu des prochaines fonctionnalités, pour les deuxième et troisième trimestres 2018
Microsoft publie la deuxième préversion de Visual Studio 2017 version 15.7, la prochaine mise à jour mineure de son EDI
.NET Framework 4.7.1 est disponible, avec le support de .NET Standard 2.0 et une amélioration des performances du ramasse-miettes
Avatar de François DORIN François DORIN - Responsable .NET & Magazine https://www.developpez.com
le 30/05/2018 à 22:26
Microsoft a annoncé aujourd'hui la publication de l'environnement .NET Core : .NET Core 2.1, ASP.NET Core 2.1 et Entity Framework Core 2.1.

De nombreux ajouts et améliorations viennent donc enrichir cet environnement, notamment :
  • amélioration des performances ;
  • amélioration des outils ;
  • possibilité de déployer des outils via NuGet ;
  • support des types Span<T> et Memory<T>.

Pour rappel, .NET Core est disponible pour Windows, MacOS et Linux et est supporté par Visual Studio 15.7, par Visual Studio for Mac, et par Visual Studio Code, en plus d'être disponible en tant qu'image Docker (disponible dans le dépôt microsoft/dotnet).

Support
La version 2.1 sera une version LTS (Long Term Support). Cela signifie que le support pour cette version sera de 3 ans. Le futur est encore de mise dans la mesure où cette version ne sera déclarée LTS que d'ici quelques mois, le temps d'effectuer de petites mises à jour.

D'ici là, n'hésitez donc pas à utiliser cette nouvelle version pour vos projets en cours de développement. Pour les projets déjà déployés, il est recommandé d'attendre quelques mois pour effectuer la migration.

Plateformes supportées

Avec cette version, .NET Core supporte officellement de nouvelles plateformes (en gras dans la liste suivante) :
  • Windows Client: 7, 8.1, 10 (1607+) ;
  • Windows Server: 2008 R2 SP1+ ;
  • macOS: 10.12+ ;
  • RHEL: 6+ ;
  • Fedora: 26+ ;
  • Ubuntu: 14.04+ ;
  • Debian: 8+ ;
  • SLES: 12+ ;
  • openSUSE: 42.3+ ;
  • Alpine: 3.7+.

Et les processeurs supportés sont :
  • x64 sous Windows, macOS, et Linux ;
  • x86 sous Windows ;
  • ARM32 sous Linux (Ubuntu 18.04+, Debian 9+).

Au niveau matériel, .NET Core 2.1 est supporté sur les raspberry basés sur un processeur ARMv7 ou ARMv8 (Rapsberry Pi 2 et ultérieurs), mais pas sur ceux basés sur un processeur ARMv6 (Raspberry Pi, Raspberry Pi Zero).

Amélioration des performances

Un énorme travail a été effectué depuis la version 2.0 de .NET Core pour l'amélioration des performances.

Tout d'abord, via la réduction des temps de compilation.


Comme vous pouvez le constater, les temps de compilation ont été largement réduits, notamment pour les gros projets, où la réduction peut atteindre un facteur 10 !

Mais aussi d'un point de vue exécution, où certaines opérations ont particulièrement été optimisées, comme le boxing (réduction de 90%), de nombreuses méthodes (comme String.IndexOf), dans la gestion des threads et bien d'autres encores. (vous pouvez retrouver une comparaison des performances assez complète dans cet article de blog paru sur la MSDN).

Compatibilité avec les versions précédentes de .NET Core

Cette nouvelle version de .NET Core est une version hautement compatible. Les applications .NET Core 2.0 tourneront sur .NET Core 2.1 sans nécessiter .NET Core 2.0. Cette compatibilité n'est assurée que pour les versions mineures, c'est-à-dire qu'une application .NET Core 1.1 ne sera pas compatible avec .NET Core 2.0, de la même manière que les applications .NET Core 2.x ne seront pas compatibles avec .NET Core 3.0 (quand il sera disponible, bien entendu !).

De nouvelles fonctionnalités

Cette nouvelle version de .NET Core vient également avec son lot de fonctionnalités.

Parmi les plus attendus, on peut citer le support des Span<T> et Memory<T> introduit avec C 7.2 et permettant de manipuler aisément toutes zones de mémoires contigües, et notamment faire référence à des sous-ensembles, sans avoir à réaliser une copie de la mémoire.

On peut noter également la présence d'un nouvel alogirhtme de compression : https://fr.wikipedia.org/wiki/Brotli...ression Brotli.

La cryptographie n'est pas en reste non plus, avec de nombreux ajouts :
  • nouvelle API SignedCms (dans l'espace de noms System.Security.Cryptography.Pkcs.SignedCms disponible dans l'assembly System.Security.Cryptography.Pkcspackage) ;
  • nouvelle surcharge pour X509Certificate.GetCertHash avec le support de SHA-2 ;
  • nouvelle API cryptographique basée sur Span<T>, permettant le calcul de hash, la génération de nombres aléatoires, la génération de signatures, etc. ;
  • amélioration des performances de Rfc2898DeriveBytes qui est 15% plus rapide ;
  • ajout de la classe CryptographicOperations, qui implémente des opérations de manière cryptographiquement sûre ;
  • ajout de la méthode statique RandomNumberGenerator.Fill ;
  • support de EnvelopedCms sur toutes les plateformes (incluant donc Linux et macOS) ;
  • ajout du support des courbes elliptiques de Diffie=Hellman (Elliptic-Curve Diffie-Hellman ou ECDH) ;
  • support de RSA-OAEP-SHA2 et RSA-PSS sur toutes les plateformes (et donc Linux et maCOS).


Windows Compatibility Pack

Le Windows Compatibility Pack est un ensemble de 20 000 API supplémentaires pour .NET Core, mais uniquement disponible pour les systèmes Windows. Cela permet de convertir plus en douceur un plus grand nombre d'applications du framework historique vers le framework .NET Core.

Compilateur JIT : la compilation par couche

Toujoues dans l'optique d'optimiser les performances, une nouvelle fonctionnalité liée au compilateur JIT et appelée compilation par couches (Tiered Compilation). Encore à ses débuts, cette fonctionnalité n'est qu'une première version et sera très certainement amenée à évoluer par la suite. Pour en bénéficier, il faut définit une variable d'environnement COMPlus_TieredCompilation="1".

Mais la compilation par couches, qu'est-ce que c'est ? Le compilateur JIT traduit en temps réel, lors de la première exécution d'un code, le code managé en code natif. Cette étape de compilation est effectuée durant l'exécution du programme et peut donc être impactée négativement les performances. Une compilation optimisée demande du temps (et donc à un impact majeur lors de la compilation), mais permet d'avoir des exécutions consécutives plus performantes. A contrario, une compilation sans optimisation permet une compilation plus rapide au détriment des performances futures.

La compilation par couches permet de résoudre ce problème, en commençant par une compilation simple, sans optimisation, et en procédant éventuellement à d'autres compilations plus optimisées par la suite, en fonction des besoins. Ainsi, un code qui n'est exécuté qu'une fois sera compilé rapidement, et l'impact sur le temps d'exécution du programme sera donc mince. Par contre, un code exécuté de nombreuses fois sera recompilé par le compilateur JIT avec des optimisations plus poussées. Cette compilation se fait en parallèle et viendra remplacer la précédente une fois terminée, minimisant alors l'impact d'une compilation avec optimisation sur le déroulement de l'application.

Débogage : lien vers la source

Une fonctionnalité bien pratique dans le cadre du débogage : le lien vers la source (SourceLink).

Il s'agit, lors de la distribution d'un packet NuGet, de pouvoir préciser un lien pour le téléchargement des sources (par exemple, un dépôt GitHub). Ainsi, lors du débogage, il sera possible de déboguer le code d'un paquet et d'en comprendre le moindre méandre.

La capture d'écran ci-dessous montre le débogage d'un paquet NuGet référencé par une application, avec la source du paquet automatiquement téléchargé depuis un dépôt GitHub sous Visual Studio 2017.


Source : blog MSDN

Et vous ?

Que pensez-vous des nouveautés de .NET Core 2.1 annoncées jusqu'ici ?
Comptez-vous tester .NET Core 2.1 ?

Voir aussi :
Microsoft annonce la disponibilité de .NET Core 2.1 RC1
.NET Framework 4.7.2 est disponible, avec le support de l'injection de dépendance dans les Web Forms et la sécurisation de cookies avec SameSite
Visual Studio Code 1.23 est disponible : tour d'horizon des nouveautés dans l'éditeur de code open source et multiplateformes de Microsoft
Feuille de route de Visual Studio 2017 : Microsoft donne un aperçu des prochaines fonctionnalités, pour les deuxième et troisième trimestres 2018
Microsoft publie la deuxième préversion de Visual Studio 2017 version 15.7, la prochaine mise à jour mineure de son EDI
.NET Framework 4.7.1 est disponible, avec le support de .NET Standard 2.0 et une amélioration des performances du ramasse-miettes

 
Contacter le responsable de la rubrique Accueil