Dot.Blog

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

.NET Core ASP.NET Core et Xamarin

Microsoft s’engage sur une voie totalement révolutionnaire, Open Source et cross-plateforme. C’est un tournant décisif dont peu de personnes perçoivent pour l’instant les conséquences…

.NET Core

imageJe ne vais pas vous faire un papier détaillé sur .NET Core j’y reviendrai dans le futur et il commence à y avoir suffisamment de choses en ligne depuis la sortie de la version 1.0 en juin pour que celui qui veut savoir puisse en apprendre plus. Je m’adresse plus aux lecteurs qui ne savent pas encore ce qu’est .NET Core et ce qu’il implique. Une sorte de teasing. C’était aussi l’un des sujets présenté au Meetup chez Deezer auquel j’ai participé dernièrement. Tout le monde devrait en parler progressivement, c’est l’avenir.

Sous l’impulsion de Satya Nadella et de Scott Guthrie et de certainement d’autres membres de Microsoft .NET Core est devenu l’aboutissement d’une réflexion mais surtout d’un changement radical de point de vue. Un virage à 180° du dogme Microsoft du tout propriétaire.

Techniquement .NET Core se veut un nouveau noyau .NET totalement cross-plateforme et Open Source.

Je dis bien cross-plateforme, par nature même, et non pas possiblement portable ou “universel” comme UWP ou WinRT ce qui ne voulait rien dire puisque cet “univers” là était limité aux machines Windows récentes.

.NET Core est un framework issu de .NET mais totalement cross-plateforme. Il se pose sur l’OS, reste managé et supporte toujours l’essentiel de .NET. Il est par natif dans tous les environnements qu’il supporte. En quelque sorte le retour de Silverlight par la porte dérobée, et en mieux.

Mais en version modulaire. Car la modularité est aussi le point de fort de cette approche. C’est à dire que de nombreuses fonctions de .NET se trouvent désormais séparées “physiquement” du Framework Core pour ne devenir que des extensions de celui-ci qu’on ajoute à son projet que s’il en a besoin, des paquets Nuget automatiquement chargés selon la configuration de l’appli.

Avantages

Tout d’abord la réécriture en version “light” du framework apporte plus de vitesse, je n’entrerai pas dans la bagarre de chiffre, mais c’est plus rapide c’est un effet.

Ensuite la portabilité du code. Tout comme Silverlight permettait de faire tourner une application aussi bien sur PC que sur Mac (et après sur Windows Phone), .NET Core va permettre d’écrire des applications totalement cross-plateforme avec une grande cohérence. Même des applications Web… (d’où mon évocation de Silverlight).

A l’heure actuelle Microsoft nous propose déjà des solutions natives cross-plateforme mais avec des frameworks .NET spécialement développés pour cela. Avec la version Core, c’est terminé, tout est unifié c’est vraiment le même framework partout sur tous les OS, même et surtout hors de ceux de Microsoft.

Enfin c’est Open Source.

Bien entendu la petite touche Nadella se fait sentir, .NET Core est particulièrement bien intégré aux utilisations du Cloud son dada (et à raison puisque MS gagne de plus en plus d’argent avec ses solutions Cloud).

Modulaire, Managé et Cross-plateforme

Pour résumer ce qu’est .NET Core il s’agit d’un framework .NET modulaire, on utilise ce dont on a besoin, managé, toujours pas à se soucier de la libération des objets, et cross-plateforme, ça tourne partout.

C’est la première plateforme de ce type au monde.

La modularité est essentiel pour en faire une plateforme rapide et déployable sur tous les OS même ceux des mobiles. Les tests effectués montrent que .NET Core en environnement Web permet d’aller beaucoup plus vite sur le même matériel que Node JS par exemple.

Le managé ne se vante plus. Grâce à lui les plantages si fréquents des applications en C ou C++ avec leur ballet de pointeurs non libérés par erreur n’existe plus. Le managé est une garantie de fiabilité (au moins jusqu’à un certain).

Le cross-plateforme c’est non plus la cerise sur le gâteau mais le cœur même de toute solution d’avenir. Ce n’est pour rien que je vous en parle depuis maintenant plus de 3 ans ! Un seul code peut tourner sur Windows, Mac, Linux et toutes les moutures comme Android. Vous me voyez venir… Et les Xamarin.Forms dans tout ça ? je vais en parler.

ASP.NET Core

Encore un sujet passionnant que je ne développerai pas dans cet article que je veux court. ASP.NET Core c’est ASP.NET bâti sur .NET Core. C’est donc un ASP.NET qui tourne plus vite et sur toutes les plateformes…

image

Comme le montre ce petit schéma provenant de chez Microsoft ASP.NET Core peut aussi tourner sous .NET classique, ce qui dans ce cas le limite à Windows comme tout ce qui est purement .NET (en dehors de Xamarin). Comme .NET Core est compatible avec .NET une application ASP.NET Core peut tourner sous .NET classique. L’inverse n’est pas vrai mais la rétrocompatibilité est une chose rare en informatique. La modification d’une application .NET Classique en .NET Core reste en revanche tout à fait possible à moindre frais (sauf si on utilise des fonctions propres à Windows).

On trouve en bas du schéma tous les compilateurs .NET comme Roselyn C#, VB, F# ce qui montre la cohérence avec l’existant.

Les projets ASP.Net Core sont plus “sains” dans le sens plus dépouillés. Par exemple tous les fichiers du répertoire sont chargés par VS, il n’y a plus de fichier projet. Il existe une configuration en JSON, format aujourd’hui généralisé, et par un fichier C# (le Web.Config de IIS disparait). L’abandon de System.Web casse le lien “en dur” avec IIS. Les applications ASP.NET Core ne sont donc plus liées à IIS et peuvent tourner dans d’autres environnements comme Docker sous Linux. Ce qui va changer très nettement les coûts d’exploitation d’une application ASP.NET !

Et Xamarin.Forms ?

Comme je montre dans mon livre paru sur ce sujet on trouve d’autres traces de schémas provenant de chez Microsoft où les logos de Apple et Linux apparaissent. Et on le sait, les Xamarin.Forms vont migrer sous .NET Core. Cela sera relativement transparent pour le développeur.

Les XForms sont déjà cross-plateforme grâce aux compilateurs Xamarin racheté par MS. Nous ne gagnerons pas sur ce plan puisqu’il est déjà en notre possession. Mais ces compilateurs sont aujourd’hui totalement intégrés à la nouvelle approche Microsoft. Ils sont même essentiels pour couvrir les plateformes Apple, Android, Linux (Mono) et Mac (ce qui va venir prochainement pour Xamarin natif). Tout ce qui était chez Xamarin devient non pas une simple caution d’ouverture ce qu’on pouvait craindre mais les briques fondamentales d’une approche résolument cross-plateforme.

Grâce aux Xamarin.Forms il deviendra donc possible de développer des applications plus rapide se fondant sur .NET Core, donc portables partout où .NET Core sera présent, c’est à dire toutes les plateformes puisque c’est son intérêt majeur…

N’est-ce pas merveilleux ?

Raison de plus de s’intéresser aux Xamarin.Forms (je connais un bon livre à conseiller sur le sujet Sourire).

Conclusion

Ah si Ballmer et Sinofsky le visionnaire de supermarché avaient été virés avant… Mais avec des “si” on mettrait Paris en bouteille parait-il…

Malgré ses petites lubies à lui aussi (comme le Cloud) Nadella est vraiment une chance pour Microsoft, il ne prend pour l’instant que de bonnes décisions qui vont vers plus d’ouverture sur le monde. Il désenclave Microsoft. Il universalise Microsoft.

C’est bon pour la société mais c’est bon, même très bon, pour nous aussi !

Dans le futur je ferai des papiers plus détaillés sur .NET Core, il y a beaucoup de choses à découvrir.

Pendant ce temps,

Stay Tuned !

blog comments powered by Disqus