Microsoft annonce la disponibilité de Blazor 0.5.1, son framework web .NET expérimental
Qui s'exécute au sein du navigateur

Le , par Stéphane le calme, Chroniqueur Actualités
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


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster une réponse Signaler un problème

Avatar de jpouly 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 redcurve - Membre averti 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 jolt-counter - Membre du Club 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 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 François DORIN - Responsable .NET & Magazine 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