.NET Core 3.0 en version finale : applications desktop, C# 8, performances et Docker

.NET Core 3.0 en version finale : applications desktop, C# 8, performances et Docker

.NET Core 3.0 en version finale : applications desktop, C# 8, performances et Docker

Microsoft a publié hier soir la version finale de son environnement .NET Core 3.0, attendu de pied et ferme et devant jouer un rôle majeur dans la stratégie de l’éditeur.

.NET Core est pour rappel un « reboot » presque complet de l’environnement .NET, cette fois open source (licence MIT) et multiplateforme (Linux, macOS, Windows…). Toutes les technologies associées sont également open source, comme tout (ou presque) ce qui touche au développement désormais (Visual Studio est la plus grosse exception).

.NET Core 3.0 est une version majeure à plusieurs égards. Selon Microsoft, elle est prête pour la production depuis plusieurs RC (release candidates) et ses performances sont largement améliorées. Elle supporte C#8 et F# 4.7 et intègre la bibliothèque .NET Standard 2.1.

Cette dernière contient pour rappel l’ensemble des interfaces de programmation accessibles à l’environnement .NET. La version 2.1 est sortie en novembre 2018 et ajoutait alors environ 3 000 API supplémentaires aux 32 000 que comptait déjà la version 2.0 (contre 13 000 pour la 1.0).

La plus grosse nouveauté cependant de .NET Core 3.0 est sa prise en charge des applications Windows Desktop, pour les projets WinForms comme WPF. Ce qui ouvre la voie, pour les développeurs, à un lot d’API beaucoup plus récentes que Win32 pour les applications natives (puisque .NET Core dispose de cette compilation), même si la parité fonctionnelle n’est pas encore complète.

Autre apport, lié d’ailleurs au précédent, les applications .NET ont désormais des exécutables par défaut et ne réclament donc plus de ligne de commande pour être lancées.

Dans la catégorie performances, Microsoft note tout particulièrement les progrès faits sur le ramasse-miettes. Il consomme moins de mémoire, « souvent beaucoup moins » selon l’éditeur. Il utilise également mieux les cœurs multiples, surtout sur les machines présentant 64 cœurs et davantage.

Parmi les autres améliorations, citons un renforcement (hardening) spécifique pour Docker, le support des Raspberry Pi et des puces ARM pour le développement IoT, l’ajout d’API « hautes performances » pour JSON, ou encore l’arrivée d’ASP.NET Core 3.0. Nouveauté principale de ce dernier, Blazor, qui permet le développement de pages WebAssembly depuis C# plutôt que JavaScript.

La disponibilité est immédiate et Microsoft encourage les développeurs à mettre à jour leur environnement. De nouvelles versions sont disponibles pour Visual Studio, Visual Studio pour Mac et Visual Studio Code, obligatoires pour pouvoir exploiter .NET Core 3.0 et les technologies associées.

Les plateformes supportées (versions minimales) sont actuellement : Alpine 3.9, Debian 9, openSUSE 42.3, Fedora 26, Ubuntu 16.04, RHEL 6, SLES 12, macOS 10.13, Windows 7 SP1 et Windows Server 2012 R2 SP1. .NET Core 3.0 sera également disponible pour RHEL 8.0 dans Application Streams.

Une version 3.1 est déjà prévue pour novembre. Cette mouture sera LTS (support d’au moins trois ans) et facilitera les scénarios de cohabitation entre codes C++ et C#. Microsoft estime cependant qu’il n’est pas nécessaire d’attendre, ne serait-ce que pour s’habituer aux nouveautés.

Commentaires (5)


Pour ceux qui connaissent bien le sujet: Est-ce qu’il manque encore quelque chose pour développer et héberger complètement sous Linux un site/appli web complète en C#/ASP.NET + MSSQL (avec voir sans Kestrel)? 


Pour héberger, aucun problème. Même si Kestrel suffit pour servir un site, c’est quand même mieux de mettre un Nginx devant : https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/linux-nginx?view=aspnetcore-3.0



Pour développer du C#/.NET, je préfère Visual Studio 2019 que Visual Studio Code (qui est le seul dispo sous Linux), mais les deux font le taff et c’est donc aussi possible sous Linux.



Après, pour la base de données, MS SQL Server s’installe aussi sous Linux, mais sauf besoins assez spécifiques, tu peux plutôt utiliser PostgreSQL, qui fonctionne très bien avec ASP.NET (les benchmarks que font MS avec ASP.NET Core sur Techempower utilisent PostgreSQL)


Au boulot on utilise .NET Core 2.2 pour notre backend (sous Linux), mais MongoDB pour la DB et Vue.js pour le front. Pour la DB, NoSQL est plus pratique pour nous, et pour le front, je ne pense pas que .NET Core n’est pas capable de faire du front, c’est juste une décision qu’on a pris.. nos devs front préfèrent un framework directement en typescript.


Merci pour vos réponses. Je connais les alternatives pour le développement sous Linux, mais je voulais savoir si certains utilisaient toute la suite de MS .NET/MSSQL sous Linux aussi bien pour le développement que pour la production. On n’a malheureusement pas toujours le choix du langage, ni du SGDB.  

 







PanDaReN a écrit :



Pour héberger, aucun problème. Même si Kestrel suffit pour servir un site, c’est quand même mieux de mettre un Nginx devant : https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/linux-nginx?view=aspnetcore-3.0



Pour développer du C#/.NET, je préfère Visual Studio 2019 que Visual Studio Code (qui est le seul dispo sous Linux), mais les deux font le taff et c’est donc aussi possible sous Linux.



Après, pour la base de données, MS SQL Server s’installe aussi sous Linux, mais sauf besoins assez spécifiques, tu peux plutôt utiliser PostgreSQL, qui fonctionne très bien avec ASP.NET (les benchmarks que font MS avec ASP.NET Core sur Techempower utilisent PostgreSQL)





Merci pour le lien sur l’utilisation de Nginx, c’est intéressant.





Creak a écrit :



Au boulot on utilise .NET Core 2.2 pour notre backend (sous Linux), mais MongoDB pour la DB et Vue.js pour le front. Pour la DB, NoSQL est plus pratique pour nous, et pour le front, je ne pense pas que .NET Core n’est pas capable de faire du front, c’est juste une décision qu’on a pris.. nos devs front préfèrent un framework directement en typescript.





Intéressant comme archi. Je ne m’attendais pas à ce que .NET Core 2.2 soit déjà utilisé sous Linux autrement que comme POC ou comme mesure vraiment exceptionnelle dû à des contraintes historiques. 



L’environnement .net de microsoft avec maintenant son support multiplateform : web, mobile, desktop, jeux, Realité augmenté + le rachat de Git, l’integration de linux dans l’environnement microsoft et le passage en open source des technos me semble signer la fin de Java à plus ou moins long terme en entreprise. Egalement le cloud avec Azure et la possibilité de deployer directement sous Linux ou Windows sur des VM.



Java EE qui n’appartient plus à oracle mais qui a été transferer à la fondation eclipse avec quel suivi… Java oracle lui qui devient payant sous certaines conditions d’utilisation, le remplacement de Java par Kotlin pour le developpement Android.



Je ne vois pas comment une entreprise peut choisir de demarrer un projet sous Java EE à notre epoque. 



Quels sont encore les avantages outre le fait qu’il y a pletore de développeurs disponibles qui maitrisent Java?


Fermer