Developpez.com

Le Club des Développeurs et IT Pro

Microsoft présente .NET Core

Son « fork open source du Framework .NET » pour Windows, Linux et OS X

Le 2014-12-08 14:45:36, par Hinault Romaric, Responsable .NET
Le mois dernier, lors d’un événement en ligne, Microsoft a présenté l’avenir de sa plateforme de développement .NET et de ses outils, notamment Visual Studio 2015.

Le mot d’ordre était l’ouverture ! La firme avait annoncé qu’elle allait publier en open source le code du cœur du Framework .NET (.NET Core), sous licence MIT.

L’ambition de Microsoft est de rendre .NET accessible à un nombre plus important de développeurs, sous plusieurs plateformes, y compris Linux et Mac.

Dans un long billet de blog sur MSDN, Microsoft présente de façon détaillée ce qu’est « .NET Core », comment il sera publié, ce qu’il représente pour le Framework .NET et ce que cela implique pour le développement multiplateforme et open source.

Lorsque Microsoft avait publié .NET pour la première fois en 2002, il était disponible comme un Framework unique. Peu de temps après, plusieurs déclinaisons ont vu le jour, dont .NET Compact Framework, un sous-ensemble de .NET à destination des terminaux à faibles ressources, comme les terminaux mobiles.

Au fil du temps, plusieurs déclinaisons du Framework .NET ont été expédiées pour Silverlight, Windows Phone, et plus récemment pour le Windows Store. Cela a créé une fragmentation de .NET, qui était désormais disponible en plusieurs plateformes, gérées par des équipes différentes au sein de Microsoft.

Cela ne poserait pas de problème si les développeurs créaient des applications spécifiques pour chaque plateforme. Cependant, il est assez fréquent pour ceux-ci de cibler plusieurs dispositifs et plateformes à travers leurs applications. Cette diversité pourrait même être l’une des principales causes de la faible croissance du Windows Store, car les applications Windows Desktop, ne peuvent figurer sur le store, qui supporte uniquement WinRT.


Pour contourner le problème, Microsoft a développé dans un premier temps les bibliothèques de classes portables (portable class libraries), dont l’objectif était d'écrire et générer des assemblys managés qui fonctionnent sur plusieurs plateformes .NET Framework. Puis, la firme a dévoilé en avril dernier lors de sa conférence Build, Universal Apps, un moyen pour les développeurs de créer une seule application, qui fonctionne de façon fluide sous l’ensemble des plateformes Windows (Windows 8 et Windows Phone 8).

Mais, il s’agissait des solutions limitées et partielles. .NET Core a pour ambition d’aller au-delà, en offrant une implémentation unifiée de .NET. « .NET Core est essentiellement un fork du Framework .NET, dont le développement a été optimisé autour de ces préoccupations », écrit Microsoft. .NET Core est une implémentation modulaire, qui pourra être utilisé dans une grande variété de plateformes. Il sera soutenu par Microsoft sur Windows, Linux et Mac OS X.

.NET Core comprend un BCL (Base Class Library) unifié qui sera le même code pour toutes les plateformes. « Même si les scénarios pour NET Native (dispositifs tactiles) et ASP.NET 5 (développement Web côté serveur) sont très différents, nous avons pu fournir une bibliothèque de classes de base unifiée. », se réjouit Microsoft.


Actuellement, Microsoft propose deux implémentations du .NET Core BCL : l’une pour .NET Native et l’autre pour CoreCLR, utilisé par ASP.NET 5.0. Cependant, la majeure partie de BCL de .NET Core est commune aux deux plateformes.

Autre fait intéressant : .NET Core introduira un nouveau modèle de déploiement des applications. Il sera possible de déployer des applications .NET avec des copies des bibliothèques du Framework .NET. L’idée est de permettre aux développeurs d’importer uniquement les parties de .NET dont ils ont besoin, et les déployer avec leur application. Les bibliothèques de .NET Core seront livrées à travers le gestionnaire de paquets NuGet.

Les avantages de cette approche sont multiples. Une machine n’aura plus besoin d’une version complète de .NET Framework pour exécuter une application, car chaque application sera livrée avec son propre Framework. De plus, les mises de .NET Core ne briseront plus les applications existantes.

Le diagramme ci-dessus soulève cependant quelques interrogations puisqu’au-dessus, on retrouve uniquement « Windows Store App Model » pour les applications WinRT et « ASP.NET 5 App Model ». Qu’en est-il des applications desktop et ASP.NET 4 ?

.NET Core représente un sous-ensemble du Framework .NET, selon Microsoft. Le développement d’application desktop avec WPF ou Windows Forms continuera à se faire sous le Framework .NET et non .NET Core. Microsoft compte mettre à jour ce dernier chaque année. Il y’aura donc des fonctionnalités qui seront exclusives au Framework .NET.


Pour les développeurs qui souhaitent exécuter leur code à la fois sur le Framework .NET et .NET Core, Microsoft prévoit d’étendre les bibliothèques de classes portables pour couvrir ce cas, car pour la firme, .NET Core est « le fondement de toutes les futures plateformes .NET »

Source : MSDN

Et vous ?

Que pensez-vous de .NET Core ? Et de son ouverture par Microsoft ?
  Discussion forum
197 commentaires
  • tomlev
    Rédacteur/Modérateur
    Envoyé par kilroyFR
    encore une nouvelle syntaxe barbare a la M$ !
    De quelle syntaxe parles-tu ? Cet article ne parle pas des langages, mais de la plateforme .NET

    Il y a toutes sortes de langages basés sur .NET, avec des syntaxes très différentes (C#, VB.NET, F#, C++/CLI, Nemerle...). Après, on peut aimer ou non la syntaxe de ces langages, mais C# par exemple a des qualités largement reconnues, et de nombreux langages récents s'en inspirent (Swift, ECMAScript...)

    Au passage, la syntaxe de ces langages ne sort pas de nulle part. Celle de C# est largement inspiré de Java et de C++, F# a une syntaxe presque identique à OCaml, etc. Donc je ne vois pas trop en quoi ils ont une syntaxe "a la M$" (sic).

    Bref, renseigne-toi un minimum avant de troller gratuitement
  • youtpout978
    Expert confirmé
    Envoyé par matthius
    Les entreprise privées sont faites pour couler, par le simple fait qu'elle veulent s'approprier ce qui ne leur appartient.
    Microsoft ne cherche qu'à survivre. En effet, les plus grosses entreprises montrent qu'elles veulent s'approprier la vie.
    Allo Houston je crois qu'on l'a perdu.
  • Bono_BX
    Membre confirmé
    Envoyé par kilroyFR
    encore une nouvelle syntaxe barbare a la M$ !
    Qui sera tellement barbare qu'elle sera reprise plus tard par les pro / sectaire de l'open source en arguant que c'est tout nouveau et que c'est eux qui ont tout inventé, comme d'habitude ... (voir HTML 5)
    Et sinon, tu peux argumenter STP ?
  • Lutarez
    Membre chevronné
    Envoyé par imikado
    C'est cher de développer pour windows (par rapport aux autres plateformes...)
    Développer pour Windows coûte actuellement 0 euros : bloc-note et une console DOS/Powershell pour la compilation suffisent. Même en ligne de commande, compiler du .net n'est pas trop inbuvable avec un peu de rigueur.

    Comme tu le fait remarquer, ils existent des alternatives, mais si n'importe quel développeur .Net te dira qu'aucune d'elle n'arrive à la cheville de Visual Studio, ce n'est pas un hasard. Tout est ensuite une question de choix : VS n'est certes pas donné (et encore, la version Community est un immense bond en avant pour les hobbyistes), mais il procure une productivité et un confort de développement sans égal pour du développement .Net.

    Si tu n'as jamais essayé, je t'invite à créer par curiosité un petit site utilisant ASP.Net MVC. C'est, je pense, l'une des technologies qui illustre le mieux la gain de productivité que VS peut apporter à un développeur.
  • tomlev
    Rédacteur/Modérateur
    Envoyé par imikado
    Pour visual studio, elles vont toutes être gratuite ?
    Actuellement, on regarde pour la 2013, ça va jusqu'à 14 000 euros !!!
    Attention de pas tout mélanger... C'est pas Visual Studio qui coute 14000 euros, c'est l'abonnement MSDN, qui te donne accès à l'intégralité des logiciels Microsoft (outils de dev, serveurs, applications bureautiques, OS...), et pas mal d'avantages (support, compte Azure, compte Windows Store, etc)
  • jolt-counter
    Membre régulier
    Envoyé par Lutarez
    Développer pour Windows coûte actuellement 0 euros : bloc-note et une console DOS/Powershell pour la compilation suffisent. Même en ligne de commande, compiler du .net n'est pas trop inbuvable avec un peu de rigueur.
    Ça coûte le prix de la licence Windows.
  • tomlev
    Rédacteur/Modérateur
    Envoyé par imikado
    Quand on créé un projet, il n'y a pas de réel arborescence de projet web
    Ah ? Je ne vois pas très bien ce que tu reproches à l'arborescence par défaut des projets MVC, moi je trouve ça plutot clair... Un dossier pour les controlleurs, un pour les modèles, un pour les vues, etc, bref, c'est plutôt carré je trouve.

    Envoyé par imikado
    il faut ensuite installer manuellement Entity framework pour l'ORM et MVC 3... (via Nugget)
    Je pensais comme les autres frameworks que l'on avait une solution clé en main comme les autres
    Ca dépend du template que tu utilises pour créer le projet, mais avec les templates de la version actuelle, il y a tout ce qu'il faut : Entity Framework, JSON.NET, Web API, jQuery, Bootstrap... il y en a même probablement un peu trop

    Après il faut voir que MVC est un framework complètement modulaire ; tu n'es pas obligé de tout utiliser, tu peux prendre juste les briques dont tu as besoin. Donc même si le template par défaut te met quasiment tout, ce n'est pas forcément la bonne option pour tous les projets...
  • Washmid
    Membre averti
    Ça fait des années (depuis toujours?) qu'on peut faire ça en java, déployer les APIs avec les applis, avoir des binaires uniques pour toutes les plateformes, et ça pose pas vraiment de soucis (à ma connaissance).

    Bon, java permet également de déployer le runtime carrément dans les exécutable ce qui ne semble pas être le cas ici.

    Bref, très bonne nouvelle pour la portabilité, marre des moulinettes de "csproj" pour gérer plusieurs plateformes.
  • Olivier Famien
    Chroniqueur Actualités
    Voilà que les choses avancent dans le bon sens. Ils ont compris que les dev d'aujourd'hui sont de gros "paresseux" qui ne veulent plus apprendre 1 langage pour 1 plateforme mais 1 langage pour x plateforme. Et puis à quoi ca sert une multitude de langages, si je peux faire tout et n'importe quoi avec le même langage et même sortir le chien ou me faire du thé pendant qu'on y est .
    Vive le CODE (Code once deploy everywhere).
  • bouye
    Rédacteur/Modérateur
    Envoyé par Gugelhupf
    Les programmes Java n'embarquent pas de runtime (des projets hors du standard le permettent peut-être).
    Un projet là-dessus est en cours (JEP 148).
    Ca fait plus de 10 ans que des outils tiers permettent empaqueter des runtimes avec un exécutable lanceur natif pour le programme et cela fait plus de 2 ans maintenant qu'Oracle fourni un outil pour faire de même avec le JDK (javapackager dans le JDK8, anciennement javafxpackager dans le JDK7).
    Deux des principaux buts annoncés de longue date (puisque Jigsaw date quand même de pas mal d'années) pour la modularisation du JDK sont :
    • Reduire l'empreinte mémoire.
    • Améliorer le temps de chargement.


    Plus de portabilité pour .NET, moi ça me plait bien, je ne suis pas contre faire du C# de temps à autre. Par contre ça reste dommage que pour WPF, ça ne soit toujours pas ça...