Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

ASP.Net Core 3 Preview 2 est disponible
Avec la prise en charge de Razor Components et l'intégration du streaming client-serveur avec SignalR

Le , par Olivier Famien

213PARTAGES

11  0 
Depuis quelques jours, Microsoft a annoncé la disponibilité de la seconde préversion de ASP.Net Core 3.0. Dans cette nouvelle mouture du framework modulaire, Microsoft met en avant des changements notables et des améliorations.

Dans ASP.Net Core 3 Preview 2, Microsoft a souhaité faire le nettoyage de son framework partagé. Cela a conduit les mainteneurs du projet à expurger le framework de certaines fonctionnalités. Parmi le lot des changements apportés, nous avons Json.Net qui est en train d’être supprimé du framework partagé. Pour permettre à ASP.Net de prendre en charge le framework JSON pour .Net dans les projetst, il va falloir ajouter Json.Net comme un package indépendant. Toujours sur cette même lancée, l’équipe de Microsoft a décidé de supprimer la prise en charge de la compilation au moment de l’exécution des pages et des vues. Ce changement a été opéré afin de ne plus dépendre du compilateur Roslyn. Pour remédier au délestage du compilateur Roslyn, la compilation des pages et des vues est effectuée au moment de la construction. Dans une prochaine mise à jour, Microsoft annonce qu’elle fournira des packages NuGet pour éventuellement activer le support de la compilation à l'exécution dans les applications.

Razor Components, que retenir ?

Du côté des améliorations, nous avons cette seconde préversion de ASP.Net Core 3.0 qui prend en charge Razor Components. Pour les développeurs qui n’ont pas suivi l’évolution du projet Blazor, il faut savoir que Razor Components représente l’intégration du modèle de Blazor Components dans ASP.NET Core ainsi que le modèle d’hébergement Blazor côté serveur. Autrement dit, la fonctionnalité Razor Components s’exécute côté serveur dans ASP.NET Core, tandis que Blazor (Razor qui s’exécute côté client) est un framework Web .NET expérimental utilisant C#/Razor et HTML qui exécute Razor Components directement dans le navigateur à l’aide d’un environnement d’exécution .NET basé sur WebAssembly. Pour mieux se représenter l’idée de ces composants Razor, Microsoft explique que ce sont des fragments d’interface utilisateur tels qu’une page, une boite de dialogue ou un formulaire qui peuvent être utilisés comme un nouveau moyen de créer une interface utilisateur Web interactive côté client avec ASP.NET Core sans pour autant avoir besoin d’écrire du code JavaScript. En outre, les composants Razor sont également des classes .NET normales qui définissent la logique de rendu de l'interface utilisateur et des gestionnaires d'évènements côté client.

Hébergement de Razor Components

Étant donné que Razor Components dissocie la logique de rendu d'un composant de la manière dont les mises à jour de l'interface utilisateur sont appliquées, la manière dont les composants Razor peuvent être hébergés est très flexible. ASP.NET Core Razor Components dans .NET Core 3.0 ajoute la prise en charge de l'hébergement de composants Razor sur le serveur dans une application ASP.NET Core où toutes les mises à jour de l'interface utilisateur sont gérées via une connexion SignalR. Le moteur d'exécution envoie les évènements d'interface utilisateur du navigateur au serveur, puis applique les mises à jour d'interface utilisateur envoyées par le serveur au navigateur après l'exécution des composants. La même connexion est également utilisée pour gérer les appels JavaScript interop. À noter que les composants Razor peuvent également utiliser du code JavaScript côté client si nécessaire. De même, à partir d’un composant Razor, il est possible de faire appel à n'importe quelle API du navigateur ou à une bibliothèque JavaScript existante exécutée dans le navigateur.


Compatibilité assurée avec les applications MVC existantes en utilisant Razor Components

Pour ceux qui craignent une réécriture complète du code de leur application en souhaitant utiliser Razor Components, Microsoft rassure que les composants Razor peuvent être utilisés avec vos applications MVC et pages Razor existantes. Il n'est pas nécessaire de réécrire les vues ou les pages existantes pour utiliser les composants Razor. Et pour ceux qui ont déjà commencé à utiliser la préversion de l’EDI Visual Studio 2019, une prise en charge de Razor Components a été intégrée dans l’environnement de développement. Pour ce qui concerne Visual Studio pour Mac et Visual Studio Code, il va falloir patienter encore un peu pour voir la fonctionnalité Razor Components être supportée.

Le streaming client-serveur avec SignalR

Comme autres améliorations dans ASP.Net Core Preview 2, une prise en charge du streaming client-serveur a été ajoutée avec ASP.NET Core SignalR afin de permettre la transmission en continu des valeurs de retour à partir de méthodes côté serveur. Ceci est utile lorsque des fragments de données arrivent sur une période de temps.

API System.IO.Pipelines sur HttpContext

Microsoft informe que son équipe travaille actuellement dans ASP.NET Core 3.0 pour consommer l'API System.IO.Pipelines et l'exposer afin de permettre aux développeurs d'écrire des applications plus performantes.

Hôte générique dans les modèles

Les modèles ont été mis à jour pour utiliser l'hôte générique au lieu de WebHostBuilder comme cela se faisait dans le passé.

En dehors de ces améliorations, l'ajout de plusieurs nouvelles fonctionnalités a été effectué dans cette version de ASP.Net Core 3 Preview 2.

Source : Microsoft

Et vous ?

Quel est votre avis sur la nouvelle implémentation de ASP.Net Core 3 ?

Les nouveautés annoncées sont-elles en phase avec vos attentes ?

Voir aussi

ASP.NET Core 2.2 est disponible en version stable avec un nouveau module d'hébergement dans IIS et une nouvelle API pour suivre l'état des apps
Apprendre à créer une application CRUD avec ASP.NET Core Razor Pages sous Visual Studio Code et Entity Framework Core, un tutoriel d'Hinault Romaric
Apprendre à déployer une application ASP.NET Core avec un conteneur Docker, un billet d'Hinault Romaric
.NET Core ou .NET Framework ? Quelle implémentation adopter pour son projet ? Par Hinault Romaric
ASP.NET 5 devient ASP.NET Core 1 et .Net Core 5 est maintenant appelé .NET Core 1.0 pour mieux se démarquer des anciens frameworks

Une erreur dans cette actualité ? Signalez-le nous !

Avatar de micka132
Expert confirmé https://www.developpez.com
Le 30/09/2019 à 12:27
Citation Envoyé par dfiad77pro Voir le message
je doute que Microsoft investisse dans la création d'un Framework multi-plateforme…
En fait si, il y a Xamarin pour du multi-plateforme utile : le mobile.
Les IHM sur du linux desktop ca touche tellement peu de cas que c'est s'attirer beaucoup d’emmerde pour pas grand chose.
2  0 
Avatar de freesket
Membre du Club https://www.developpez.com
Le 01/10/2019 à 8:03
Xamarin.Forms est multiplateforme : Windows UWP, IOS, Android mais aussi (en preview pour le moment) Linux (GTK), MacOs et Windows desktop (WPF) :
https://docs.microsoft.com/en-us/xam...latform/other/
2  0 
Avatar de sergio_is_back
Membre émérite https://www.developpez.com
Le 17/10/2019 à 16:57
Citation Envoyé par denisys Voir le message
Etant déçus des résultat de .Net Core 3.0 , je préfère continuer a utiliser mono , pour le portage des applications WinForm , sur linux et mac .
https://www.mono-project.com/
Ce serai bien que tu développe un peu, ça pourrai toujours être intéressant de savoir pourquoi...
2  0 
Avatar de rt15
Membre confirmé https://www.developpez.com
Le 11/02/2019 à 17:40
Pardon mais en première lecture j'ai trouvé ces résultats suffisamment surprenant pour me demander si c'était pas pondu par une boîte, comment dire, légèrement influencée par M$.
Genre une boîte qui vend des produits basés sur ASP.NET et qui est toute contente d'avoir comme par hasard choisi la meilleur technologie.

Pour remettre dans le contexte, il y a quelques années, je me suis un peu intéressé à nodejs.
Avant cette étude, j'imaginais qu'un serveur en nodejs devais être au mieux 20 ou 30% plus lent qu'un serveur en C, C++ ou en Java.
Généralement le javascript peut difficilement espérer faire mieux, même exécuté par le V8 de Google qui est utilisé par nodejs.

Je me disais que les utilisateurs de nodejs acceptaient cette perte de performance.
Mais en fait pas du tout.
L'architecture d'un serveur nodejs est bien différente de la plupart des serveurs de l'époque.
Alors que beaucoup utilisaient (et utilisent encore) un thread par requête HTTP et parallélisaient les traitements sur différents coeurs, nodejs utilise un seul thread (du point de vue du développeur JS) et se base sur les entrées sorties asynchrones.

Le coeur de nodejs, c'est libuv, une bibliothèque écrite en C par le créateur de nodejs.
Cette librairie permet avant tout de faire en asynchrone les I/O sur les sockets et les disques.

En gros le thread principal ne fait que soumettre des demandes de "tâches" au système d'exploitation, du genre écrit moi ça sur telle socket.
Mais le thread n'attends pas la fin de la lecture ou de l'écriture : la demande de l'exécution d'une tâche n'est pas bloquante.
Au lieu de cela, le thread principal se met en attente sur un ensemble d’évènements tels que "fin de l'écriture" ou "il y a quelque chose à lire sur tel socket".
Le système réalise les tâches en arrière plan et notifie quand elles sont terminées.
Dès qu'un événement se déclenche, le thread principal va le traiter, généralement en soumettant de nouvelles tâches d'entrée/sortie, puis se remettre en attente d'un nouvel évènement.
De cette manière le thread principal a "très peu" de travail et peut gérer des quantités astronomiques de connections et de lectures/écritures sur disque.
Le fait d'avoir peu de threads est très avantageux par rapport à un serveur classique car quand le processeur change de thread, il faut qu'il remplace son contexte d'exécution et ça prend un certain temps.
Ce contexte et la pile associée au thread prend aussi de la place en mémoire.
Par contre le désavantage d'avoir un seul thread principal est que si on a besoin de faire une tâche gourmande en CPU et qu'on l'a fait en JS, ça va bloquer le thread principal et le serveur ne fera rien d'autre : il ne sera pas à l'écoute des évènements pendant ce temps là.

Le résultat c'est que pour certaines applications, un serveur nodejs ne vas pas être 20 ou 30% plus lent qu'une appli JEE. Le serveur nodejs peut battre le JEE à plate couture.
Mais ce n'est pas JS qui est plus rapide que le Java. C'est la librairie C libuv qui bat l'archi JEE.

Donc sachant la qualité de l'approche et de l'implémentation de nodejs dans ce domaine, j'ai été surpris que aspcore puisse écraser nodejs sur un "Best plaintext responses per second".

Qu'est ce qui peut expliquer une telle différence ?
En y regardant de plus près, a priori, le serveur web utilisé par ASP.NET Core dans ce benchmark s'appelle Kestrel (c'est celui par défaut).
https://github.com/TechEmpower/Frame...rks/Program.vb
(à noter qu'ils ont implémentés le benchmark en VB, pas en C#!)

Et devinez sur quoi est basé Kestrel à la base ? Sur libuv...

Depuis l'utilisation de libuv a été supprimé mais en fin de compte la nouvelle implémentation se base certainement sur epoll sous Linux et les Overlapped I/O sous Windows.
Kestrel s'appuie donc sur les mêmes fonctions systèmes que libuv.

En tout cas chapeau aux développeurs C/C++ de M$ pour leur résultat sur ce bench.
1  0 
Avatar de FatAgnus
Membre confirmé https://www.developpez.com
Le 26/09/2019 à 21:16
Citation Envoyé par kilroyFR Voir le message
Ca n'aura de réel intérêt que le jour ou ca ne fonctionnera pas QUE sous Windows (WPF/WinForms j'entends). Le reste c'est du détail.
Microsoft ne veut pas pas d'une implémentation multiplate-formes de Windows Forms ou WPF, c'est eux même qui l'écrivent sur la page Contributing Guide : « Nous n'avons pas non plus l'intention d'accepter des contributions qui fournissent des implémentations multiplate-formes pour Windows Forms ou WPF. ».
2  1 
Avatar de redcurve
Membre confirmé https://www.developpez.com
Le 27/09/2019 à 21:01
Citation Envoyé par kilroyFR Voir le message
Ca n'aura de reel interet que le jour ou ca ne fonctionnera pas QUE sous windows (WPF/Winforms j'entends). Le reste c'est du detail.
Déjà winform ne fonctionnera jamais en dehors de Windows, et Wpf non plus. L'un est une flat api par dessus win32 le second utilise massivement directX.

Il a des mots clefs dans ces technologies comme Windows ou Win32... Ce qui laisse peu de doute concernant la portabilité.

Votre commentaire montre que vous ne semblez pas comprendre le fonctionnement des apis que utilisez ce qui est extrêmement inquiétant si vous êtes un professionnel.
2  1 
Avatar de StringBuilder
Expert éminent https://www.developpez.com
Le 01/10/2019 à 21:46
Citation Envoyé par micka132 Voir le message
Les IHM sur du linux desktop ca touche tellement peu de cas que c'est s'attirer beaucoup d’emmerde pour pas grand chose.
Oui et non.

En portant son SGBD SQL Server sous Linux, ainsi que son framework de développement .NET sous Linux, Microsoft s'ouvre clairement la voie vers ce système.
A ça, on combine le sous-système Linux pour Windows, et on en arrive à se demander quand des outils tels que Microsoft Office, qui sont déjà portés sous Mac OS... qui n'est qu'un Linux après-tout, seront enfin portés sous Linux.

Si je ne m'abuse, Visual Studio Code tourne sous Linux... pour quelle sombre raison SQL Server Management Studio, actuellement développé en .NET, ne serait pas porté sous Linux lui aussi ? C'est juste logique d'offrir un environnement complet de développement et d'administration SQL sous Linux.

Bref, si Microsoft ne se lance pas ouvertement dans le développement de logiciels grand public sous Linux, le simple fait d'avoir mis de côté le projet Mono au profit de .NET Core montre que Microsoft se recentre clairement sur Linux, et que l'objectif est bel et bien de ne pas seulement faire tourner ses langages sous Linux, mais bien de s'approprier Linux et devenir une plateforme de choix, y compris pour des projets 100% Linux. A partir de là, que ce soit Windows.Forms, WPF, UWP ou n'importe quoi de nouveau, Microsoft finira bien par se lancer dans les IHM multiplateforme.

Le simple fait que Microsoft développe en masse pour Android (qui, rappelons le, est basé sur Linux) montre bien cette volonté de ne plus devenir un choix des "windowsiens qui essaient de faire marcher leurs trucs ailleurs que sous Windows", mais bien une alternative réelle à Java... qui dispose d'IHM sur toutes les plateformes depuis toujours.
Actuellement, l'absence d'IHM portable est la seule réelle tare que traîne .NET face à Java.
1  0 
Avatar de dfiad77pro
Membre expérimenté https://www.developpez.com
Le 02/10/2019 à 4:29
pour les databases Microsoft à un logiciel electron basé sur vscode (mais vraiment différent), ça ne remplace pas le management studio mais c'est un bon début.
https://github.com/microsoft/azuredatastudio
1  0 
Avatar de xarkam
Membre confirmé https://www.developpez.com
Le 03/10/2019 à 20:32
Citation Envoyé par rt15 Voir le message
Bof. Désolé, je partage pas du tout cette analyse.

Accessoirement il me semble que le Java est complètement has been sur mobile (bouffé par javascript, Dart, Kotlin...) et de toute façon pour les interfaces graphiques, les librairies historiques portables Swing et JavaFX sont pas utilisées sur mobile.
Dart transpilé en java, Kotlin qui n'est qu'une surcouche pour apporter de la modernité à java.
Malgré que java passe pour un hasbeen sur mobile, sauf cordova, (il me semble que le reste transpile en java ou mettent un interpréteur), java sous android reste le best en terme de perf.

Citation Envoyé par rt15 Voir le message
Les applications desktop ça devient de plus en plus has been aussi, tout se fait de plus en plus dans le navigateur.
Par exemple pour Office, plutôt qu'un portage Linux, M$ a fait un portage (partiel) sur le web en proposant "Office Online"/"Office Web Apps"/"Office for the web"/"Office in a browser".
Mais bien sur. Pour des besoins ultra simple c'est ok, sinon office web ca vaut pas la peine. C'est plus un viewer web qu'autre chose.
Un exemple récent (avant hier), j'ai fait une présentation powerpoint via teams et j'ai eu besoin de faire une modification et ensuite grouper les éléments. Ca n'est pas dispo dans la version web.
Je pourrais dresser une liste assez longue de ce qui n'est pas dans les version web.
Quant à electron, prévoyons des machines dans le future avec 128gb ram vu comment sa prend des ressources.

Citation Envoyé par rt15 Voir le message
Le combat Java vs C# (pas seulement niveau appli desktop où ils n'ont jamais vraiment percé) va pas perdurer bien longtemps s'ils se font complètement démonter par pléthore de nouvelles technos (node.js...) et autres langages (Go...) qui sont vachement hypés.
Alors, pour ce qui est de la france, en dehors de php et java, nulle espoir. D'ailleurs en france on forme des dev php à tour de bras.
Dans le reste du monde, les dev c# sont hyper courtisés justement depuis le renouvellement de c#
(ma femme et moi sommes des dev c# et nous pourrions changer de boite tout les mois. Ca en devient lassant ces relances pour bosser chez l'un et l'autre)

Pour moi la guerre java vs c# n'existe plus depuis belle lurette. C# apporte plein de modernité dans le langage que n'a pas java.
Pourtant, java rattrape doucement son retard, mais les applications métiers restent encore sur java 8.

Blazor quant à lui apporte une manière de coder à la react. J'ai vu dernièrement une vidéo montrant du débug de code c# directement dans les devtools de edge chromium. Bluffant.
1  0 
Avatar de rt15
Membre confirmé https://www.developpez.com
Le 04/10/2019 à 15:28
Dart peut être transpilé vers javascript ou être exécuté par sa propre VM. Il n'y a pas de lien technique entre Dart et Java.

Kotlin dépend de la JVM, pas du langage Java. Le lien entre Kotlin et Java est techniquement le même qu'entre C# et VB.NET.

Java reste très utilisé et ne va pas disparaître du jour au lendemain. Mais il me semble sur le début de la pente du déclin. Côté mobile il n'est plus poussé par Google. Côté serveur, les grosses boîtes osent démarrer des nouveaux projets en nodejs. Et la politique d'Oracle vis à vis de Java est désespérante, mais c'est un autre sujet.

Pour le best en terme de perf à l'exécution sous Android il faut certainement oublier Java et se tourner vers le NDK.

Office dans le navigateur, c'est bien de la merde, on est d'accord. Je suis obligé d'utiliser de temps en temps Excel dans le navigateur et c'est très pénible car l'édition est très lente .
Mais c'est pas moi qui le pousse. C'est Microsoft :
Office Online is Now Simply Office
Why you should use Office for the web

Sauf grande surprise, Office (sans Wine) sous Linux, c'est pas pour demain.
De toute façon sous Linux les applis Desktop, c'est un peu la merde à développer. Trop de distributions. Une appli GTK dans un environnement de bureau KDE ou une appli QT dans un environnement GNOME, c'est réputé hideux...
Electron idem, ce n'est pas moi qui ait poussé Microsoft à le choisir pour Visual Studio Code.
Le choix d'architecture est très osé de se basé sur Electron donc Chromium, donc du Google, donc du concurrent.
D'un côté cela montre une ouverture de M$, d'un autre côté, ça leur fait un peu perdre en crédibilité de ne pas faire du Dogfooding.
Mais bon au moins ils ont utilisé leur TypeScript.
C'est comme le choix d'utiliser Chromium dans Edge. Économiquement à court terme, c'est efficace. Stratégiquement, sur le long terme, ça me paraît complètement foireux.

Bref, ils auraient pu faire un portage au moins partiel de XAML/WPF sous Linux (en partant de Mono ?) et faire Visual Studio Code en .NET.
Mais ce n'est pas du tout ce qu'ils ont fait.
Quoiqu'il en soit pas mal de développeurs semblent s'être tourné vers Visual Studio Code, le produit est loin d'être un échec niveau adoption.

Pour ce qui est de Blazor, ce sera plus intéressant quand le code que l'on écrit sera compilé directement vers WebAssembly. Parce que là, du code intermédiaire (.NET) exécuté par une runtime en code intermédiaire (wasm), c'est un peu lourd...

En fait peut être que Blazor sera une solution proposé par M$ pour les applis de bureau portables en .NET.
Ce serait bien plus logique que VSCode soit basé sur C#/Blazor et pas sur TypeScript. Mais bien sûr quand ils ont commencé à développer VSCode, WebAssembly n'était pas vraiment une option...

Certains prédisent que WebAssembly va beaucoup diminuer l'utilisation de javascript dans les SPA. J'imagine que oui et que c'est une bonne chose (meilleure perf à l'exécution, possibilité de choisir le langage de développement de son choix compilant vers wasm), mais pour le moment ça patine... Peut être le temps que les outils type Blazor soient bien au point.

D'autres prédisent que WebAssembly sera utilisé pour faire des applications desktop portable (et donc qu'il va tuer au moins Electron, à part si Electron devient l'hôte standard des applis wasm). Là j'en sais trop rien.
1  0