Microsoft publie la deuxième préversion de Blazor
Son framework web .NET expérimental qui s'exécute au sein du navigateur

Le , par Michael Guilloux

83PARTAGES

10  0 
Près d'un mois après la sortie de Blazor 0.1.0, Microsoft annonce la deuxième préversion publique de son framework Web expérimental. Le projet a été dévoilé début février avec pour objectif d'offrir aux programmeurs un framework web .NET basé sur C#, Razor et HTML et qui s'exécute directement au sein du navigateur via WebAssembly. D'après Microsoft, Blazor devrait permettre le développement Web full stack avec la stabilité et la productivité de .NET, mais aussi simplifier la création d'applications web monopages (single-page application) performantes qui s'exécutent dans n'importe quel navigateur. Les fonctionnalités prévues comprennent :

  • un modèle de composant pour construire des interfaces utilisateur composables ;
  • le routage ;
  • la mise en page ;
  • les formulaires ainsi que leur validation ;
  • l'injection de dépendances ;
  • l'interopérabilité avec JavaScript ;
  • le rechargement à chaud pendant le développement ;
  • le rendu côté serveur ;
  • le débogage .NET à la fois dans le navigateur et dans l'IDE ;
  • le support d'IntelliSense et de différents outils ;
  • le support de vieux navigateurs (non WebAssembly) via asm.js ;
  • la publication d'applications ainsi que la réduction de leur taille.

La version 0.1.0 publiée le mois dernier a permis de jeter les fondements du framework et ajouter des fonctionnalités de base, notamment le routage, l'injection de dépendances et l'interopérabilité avec JavaScript. Dans cette nouvelle préversion, Microsoft poursuit son travail avec des améliorations et des fonctionnalités supplémentaires.

Cette préversion vous permet par exemple de construire vos propres bibliothèques de composants réutilisables. Dans un billet de blog, Microsoft décrit en six étapes la procédure pour le faire. On notera également une syntaxe améliorée pour la gestion des événements et la liaison de données.

Avec une fonctionnalité « Build on save » dans Visual Studio, Microsoft permet aussi le workflow de développement Web standard avec Blazor. Rappelons en effet que le workflow de développement typique de nombreux développeurs Web consiste à éditer le code, à l'enregistrer et à actualiser le navigateur. Ce flux de travail est rendu possible par la nature interprétée de JavaScript, HTML et CSS. Blazor est toutefois un peu différent, car il repose sur la compilation de code C# et Razor en assemblies .NET. Pour permettre le workflow de développement Web standard avec Blazor, Visual Studio va désormais surveiller les modifications de fichiers dans votre projet Blazor et va régénérer et redémarrer votre application alors que les éléments seront modifiés. Vous pouvez ensuite actualiser le navigateur pour voir les modifications sans avoir à régénérer manuellement l'application.

Parmi les fonctionnalités mises en avant dans cette préversion, on peut citer encore les attributs conditionnels ainsi que des améliorations de HttpClient. Vous trouverez dans les notes de version sur GitHub une liste complète des changements dans cette version.

Pour installer Blazor 0.2.0, vous devez d'abord installer le SDK .NET Core 2.1 Preview 2, puis la dernière préversion de Visual Studio 2017 (15.7) avec la charge de travail de développement Web. Après cela, il ne restera plus qu'à installer l'extension ASP.NET Core Blazor Language Services à partir de Visual Studio Marketplace. Microsoft fournit également des instructions à suivre pour passer de la version 0.1.0 à la version 0.2.0.

Rappelons aussi que pour créer votre premier projet Blazor à partir de Visual Studio, vous devez aller dans Fichier -> Nouveau projet -> Web -> Application Web ASP.NET Core. Vous devez ensuite vous assurez que .NET Core et ASP.NET Core 2.0 soient sélectionnés dans les listes déroulantes en haut de la boite de dialogue qui s'affiche et choisir le modèle de projet Blazor.


Sources : Blog Microsoft, GitHub

Et vous ?

Qu'en pensez-vous ?
L'avez-vous déjà testé ? Si oui, partagez votre expérience !

Voir aussi :

Microsoft publie la première préversion publique de Blazor, son framework web .NET expérimental qui s'exécute au sein du navigateur
Microsoft lance un nouveau projet expérimental baptisé Blazor, qui simplifie la création d'applications web monopages avec .NET

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

Avatar de Madmac
Membre éprouvé https://www.developpez.com
Le 20/04/2018 à 16:25
L'idée est bonne. Mais je déteste le navigateur et la compagnie qui a l'habitude de saigner tous le mondes (développeur inclus).
Avatar de Stéphane le calme
Chroniqueur Actualités https://www.developpez.com
Le 28/07/2018 à 23:34
Microsoft annonce la disponibilité de Blazor 0.5.1,
son framework web .NET expérimental qui s'exécute au sein du navigateur

Début février, Microsoft a annoncé un nouveau projet expérimental baptisé Blazor (contraction de Browser et Razor), dont le but est d'offrir aux développeurs un framework web .NET basé sur C#, Razor et HTML et qui s'exécute directement au sein du navigateur via WebAssembly. D'après Microsoft, Blazor permet le développement Web full stack avec la stabilité et la productivité de .NET. Avec ce projet, Microsoft veut aussi simplifier considérablement la tâche de création d'applications web monopages (single-page application) performantes qui s'exécutent dans n'importe quel navigateur. Pour cela, le projet devrait donc offrir des fonctionnalités dignes d'un framework moderne, y compris :
  • un modèle de composant pour construire des interfaces utilisateur composables ;
  • le routage ;
  • la mise en page ;
  • les formulaires ainsi que leur validation ;
  • l'injection de dépendances ;
  • l'interopérabilité avec JavaScript ;
  • le rechargement à chaud pendant le développement ;
  • le rendu côté serveur ;
  • le débogage .NET à la fois dans le navigateur et dans l'IDE ;
  • le support d'IntelliSense et de différents outils ;
  • le support de vieux navigateurs (non-WebAssembly) via asm.js ;
  • la publication d'applications ainsi que la réduction de leur taille.

Cette fois-ci, Microsoft a annoncé la disponibilité de Blazor 0.5.0 (puis Blazor 0.5.1 pour corriger les problèmes reportés par les utilisateurs).

Les nouvelles fonctionnalités de cette version sont :
  • Blazor côté serveur
  • Modèle de démarrage aligné avec ASP.NET Core
  • Améliorations d'interopérabilité JavaScript
  • Suppression de l'obligation de pré-enregistrer les méthodes JavaScript
  • Invoquer la méthode d'instance .NET à partir de JavaScript
  • Transférer les objets .NET en JavaScript par référence
  • Ajouter Blazor à n'importe quel fichier HTML en utilisant un tag de script normal
  • Rendre le HTML brut
  • Nouvel extrait de paramètre de composant
  • Prise en charge précoce du débogage dans le navigateur

Qu'est-ce que Blazor côté serveur?

Blazor est principalement un framework web côté client destiné à s'exécuter dans un navigateur où la logique du composant et les interactions DOM se produisent toutes dans le même processus.


Cependant, Blazor a été construit pour être assez flexible pour gérer les scénarios où l'application Blazor s'écarte du processus de rendu. Par exemple, vous pouvez exécuter Blazor dans un processus Web Worker afin qu'il s'exécute séparément du processus d'interface utilisateur. Les événements seraient transférés du processus de l'interface utilisateur vers le processus de Blazor, et Blazor pousserait les mises à jour de l'interface utilisateur vers le processus de l'interface utilisateur si nécessaire. Ce scénario n'est pas encore supporté, mais c'est quelque chose que Blazor a été conçu pour gérer.


Un autre cas d'utilisation potentiel pour exécuter Blazor dans un processus séparé est l'écriture d'applications de bureau avec Electron. La logique du composant Blazor peut s'exécuter dans un processus .NET Core normal, tandis que les mises à jour de l'interface utilisateur sont gérées dans le processus de rendu Electron.


À ce propos, Microsoft indique avoir un prototype fonctionnel dont vous pouvez vous servir pour essayer d’utiliser Blazor et Electron de cette manière.

Blazor 0.5.0 prend le modèle hors-processus de Blazor et le filtre sur une connexion réseau pour que vous puissiez exécuter Blazor sur le serveur. Avec Blazor 0.5.0, vous pouvez exécuter vos composants Blazor côté serveur sur .NET Core pendant que les mises à jour de l'interface utilisateur, la gestion des événements et les appels d'interopérabilité JavaScript sont gérés via une connexion SignalR.


L'exécution de Blazor côté serveur présente plusieurs avantages:
  • Vous pouvez toujours écrire votre application entière avec .NET et C # en utilisant le modèle de composant Blazor.
  • Votre application a toujours un aspect interactif riche et évite les actualisations de page inutiles.
  • La taille de téléchargement de votre application est significativement plus petite et le temps de chargement initial de l'application est beaucoup plus rapide.
  • La logique de votre composant Blazor peut tirer pleinement parti des capacités du serveur, notamment en utilisant des API compatibles .NET Core.
  • Étant donné que vous utilisez .NET Core sur le serveur, les outils .NET existants, comme le débogage, fonctionnent.
  • Fonctionne avec les clients légers (ex: les navigateurs qui ne supportent pas WebAssembly, les périphériques à ressources limitées, etc.).

Bien sûr, il y a aussi des inconvénients:
  • Latence: chaque interaction utilisateur implique désormais un saut réseau.
  • Pas de support hors ligne: si la connexion client est interrompue, l'application cesse de fonctionner.
  • Évolutivité: le serveur doit gérer plusieurs connexions client et gérer l'état du client.

Modèle de démarrage

Tous les projets Blazor dans la version 0.5.0 utilisent désormais un nouveau modèle de démarrage similaire au modèle de démarrage dans ASP.NET Core. Chaque projet Blazor a une classe Startup avec une méthode ConfigureServices pour configurer les services pour votre application Blazor, et une méthode Configure pour configurer les composants racine de l'application.

Code : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    {
    }

    public void Configure(IBlazorApplicationBuilder app)
    {
        app.AddComponent<App>("app");
    }
}
Le point d'entrée de l'application dans Program.cs crée un hôte Blazor configuré pour utiliser la classe Startup.

Code : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
public class Program
{
    public static void Main(string[] args)
    {
        CreateHostBuilder(args).Build().Run();
    }

    public static IWebAssemblyHostBuilder CreateHostBuilder(string[] args) =>
        BlazorWebAssemblyHost.CreateDefaultBuilder()
            .UseBlazorStartup<Startup>();
}
Dans les applications Blazor côté serveur, le point d'entrée provient de l'application hôte ASP.NET Core, qui référence la classe Blazor Startup pour ajouter les services Blazor côté serveur et pour ajouter l'application Blazor au pipeline de gestion des demandes:

Code : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    {
        ...
        services.AddServerSideBlazor<App.Startup>();
    }

    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        ...
        app.UseServerSideBlazor<App.Startup>();
    }
}
Alors que le projet Blazor côté serveur peut également avoir une classe Program, il n'est pas utilisé lors de l'exécution sur le serveur. Cependant, il serait utilisé si vous passiez à l'exécution côté client (WebAssembly) en changeant simplement la balise <script> dans index.html pour charger blazor.webassembly.js au lieu de blazor.server.js.

L'application Blazor et l'application ASP.NET Core partagent le même fournisseur de services. Les services ajoutés dans les méthodes ConfigureServices sont visibles par les deux applications. Les services étendus sont limités à la connexion client.

Ajouter Blazor à n'importe quel fichier HTML

Dans les éditions antérieures de Blazor, la version du projet a été modifiée pour remplacer la balise de script blazor-boot par une balise de script réelle qui gérait le téléchargement du démarrage. Cette configuration a rendu difficile l'utilisation de Blazor dans des fichiers HTML arbitraires.

Dans Blazor 0.5.0, ce mécanisme a été remplacé. Pour les projets côté client, ajoutez un tag de script qui fait référence au script _framework / blazor.webassembly.js (qui est généré dans le cadre de la construction). Pour les projets côté serveur, vous référencez _framework / blazor.server.js. Vous pouvez ajouter ce script à n'importe quel fichier HTML, y compris le contenu généré par le serveur.

Par exemple, au lieu d'utiliser le fichier index.html statique du projet client Blazor, vous pouvez ajouter une page Razor à votre projet hôte ASP.NET Core, puis y ajouter la balise de script Blazor ainsi que toute logique de rendu côté serveur.

Source : Microsoft

Voir aussi :

Windows 10 : Microsoft présente de nouvelles builds dopées au machine learning pour éviter les redémarrages inopportuns après des mises à jour
Slack rachète la plateforme HipChat à Atlassian et envisage de la fermer et récupérer ses utilisateurs, afin d'être plus solide face à Microsoft Teams
Un ingénieur de Mozilla affirme que YouTube est plus lent sur Firefox et Microsoft Edge que sur Google Chrome
Microsoft se lance dans la console de jeu orientée cloud, comme annoncé lors de l'édition 2018 de l'Electronic Entertainment Expo
Un développeur tiers publie LibreOffice pour Windows 10 sur le Microsoft Store, The Document Foundation s'en dédouane et la firme de Redmond l'éjecte
Avatar de jpouly
Membre actif https://www.developpez.com
Le 30/07/2018 à 11:16
Acte 1 : Sun crée Java. Avec les applets, permettant de faire tourner des applications java sur un navigateur.

Acte 2 : Microsoft se dit : He, c'est pas mal tout ça. Vais faire ma propre JVM pour mon propre navigateur.

Acte 3 : Sun grogne. Microsoft crée .NET

Acte 4 : Adobe Flash a repris le flambeau. Microsoft se dit : He c'est pas mal tout ça. Un peu échaudé quelques années auparavant, il crée Silverlight, pour pas se faire taper sur les doigts.

Acte 5 : Flash est "presque" mort, Silverlight est mort né, snifff.

Acte 6 : Microsoft revient à sa première idée : Faire des applets, mais en .NET, cette fois-ci.

Moral de l'histoire : le recyclage n'est pas qu'une affaire d'écologistes
Avatar de redcurve
Membre confirmé https://www.developpez.com
Le 30/07/2018 à 11:32
Citation Envoyé par jpouly Voir le message
Acte 1 : Sun crée Java. Avec les applets, permettant de faire tourner des applications java sur un navigateur.

Acte 2 : Microsoft se dit : He, c'est pas mal tout ça. Vais faire ma propre JVM pour mon propre navigateur.

Acte 3 : Sun grogne. Microsoft crée .NET

Acte 4 : Adobe Flash a repris le flambeau. Microsoft se dit : He c'est pas mal tout ça. Un peu échaudé quelques années auparavant, il crée Silverlight, pour pas se faire taper sur les doigts.

Acte 5 : Flash est "presque" mort, Silverlight est mort né, snifff.

Acte 6 : Microsoft revient à sa première idée : Faire des applets, mais en .NET, cette fois-ci.

Moral de l'histoire : le recyclage n'est pas qu'une affaire d'écologistes


Tu racontes nawak, il s'agit juste de webassembly le code C# n'est jamais exécuté.
Avatar de jolt-counter
Membre régulier https://www.developpez.com
Le 30/07/2018 à 14:14
Citation Envoyé par jpouly Voir le message
Acte 1 : Sun crée Java. Avec les applets, permettant de faire tourner des applications java sur un navigateur.

Acte 2 : Microsoft se dit : He, c'est pas mal tout ça. Vais faire ma propre JVM pour mon propre navigateur.

Acte 3 : Sun grogne. Microsoft crée .NET

Acte 4 : Adobe Flash a repris le flambeau. Microsoft se dit : He c'est pas mal tout ça. Un peu échaudé quelques années auparavant, il crée Silverlight, pour pas se faire taper sur les doigts.

Acte 5 : Flash est "presque" mort, Silverlight est mort né, snifff.

Acte 6 : Microsoft revient à sa première idée : Faire des applets, mais en .NET, cette fois-ci.

Moral de l'histoire : le recyclage n'est pas qu'une affaire d'écologistes
Il y a une différence majeur dans le cas de Blazor.
Comme cité plus haut Blazor compile vers le langage WebAssembly ou JavaScript avec asm.js si le navigateur web ne supporte pas WebAssembly.
Contrairement à Flash, aux Applets Java et à Silverlight, il n'y a aucun plugin à installer sur son navigateur web.

C'est justement l'un des but de WebAssembly, offrir de manière natif dans le navigateur web un moyen d’exécuter un langage ouvert, standardisé et de bas niveau vers lequel un langage de haut niveau peut compiler, tout comme les langages HTML, CSS et JavaScript offrent la possibilité de créer des sites web de manières standardisées sur la majorité des navigateurs web.
Du coup le développeur pourra utiliser un langage de son choix (JavaScript, C#, Python, C++, Rust, ...) au lieu d'uniquement le JavaScript pour dynamiser son site web côté client.

On évite les écueils de Flash, Applet Java et Silverlight car ici il n'y a pas de plugin à installer ou à mettre à jour avec les risques de sécurité liés à leur utilisation.

Je trouve Blazor très intéressant surtout si on veut faire un site web 100% C# côté client et serveur avec Blazor + Asp.net Core.

Je rajoute que contrairement à Silverlight, Blazor semble open source, multiplateforme, gratuit et plus léger et plus simple à déployer. (dotnet core + la ligne de commande suffise).
Avatar de jpouly
Membre actif https://www.developpez.com
Le 30/07/2018 à 16:46
Citation Envoyé par jolt-counter Voir le message
Il y a une différence majeur dans le cas de Blazor.
Comme cité plus haut Blazor compile vers le langage WebAssembly ou JavaScript avec asm.js si le navigateur web ne supporte pas WebAssembly.
Contrairement à Flash, aux Applets Java et à Silverlight, il n'y a aucun plugin à installer sur son navigateur web.

C'est justement l'un des but de WebAssembly, offrir de manière natif dans le navigateur web un moyen d’exécuter un langage ouvert, standardisé et de bas niveau vers lequel un langage de haut niveau peut compiler, tout comme les langages HTML, CSS et JavaScript offrent la possibilité de créer des sites web de manières standardisées sur la majorité des navigateurs web.
Du coup le développeur pourra utiliser un langage de son choix (JavaScript, C#, Python, C++, Rust, ...) au lieu d'uniquement le JavaScript pour dynamiser son site web côté client.

On évite les écueils de Flash, Applet Java et Silverlight car ici il n'y a pas de plugin à installer ou à mettre à jour avec les risques de sécurité liés à leur utilisation.

Je trouve Blazor très intéressant surtout si on veut faire un site web 100% C# côté client et serveur avec Blazor + Asp.net Core.

Je rajoute que contrairement à Silverlight, Blazor semble open source, multiplateforme, gratuit et plus léger et plus simple à déployer. (dotnet core + la ligne de commande suffise).
Si le "plug-in" est "natif", forcément on a pas besoins de l'installer.

Mais quand j'entend parler de bytecode et de sandbox (cf. wikipedia), je me dis que dans l'idée, c'est pas très éloigné d'un Silverlight ou d'un flash.

Pour le cotés open source, quand je vois la liste des contributeurs (Microsoft, Apple, Google, Mozilla et W3C), je reste septique.
Avatar de François DORIN
Rédacteur https://www.developpez.com
Le 30/07/2018 à 17:13
Citation Envoyé par jpouly Voir le message
Pour le cotés open source, quand je vois la liste des contributeurs (Microsoft, Apple, Google, Mozilla et W3C), je reste septique.
Enlève Apple, et tu as pourtant une liste d'entreprises faisant parti des plus grands contributeurs à l'open-source en général. Bon, sauf le W3C, qui est plutôt orienté standardisation qu'open-source à proprement parler...
Contacter le responsable de la rubrique Accueil

Partenaire : Hébergement Web