Scénarios d'utilisation et performances de Blazor Server dans .NET Core 3.0

Depuis la sortie de Blazor Server avec .NET Core 3.0 le mois dernier, de nombreuses personnes ont partagé avec nous leur enthousiasme pour la possibilité de créer une interface client Web utilisant uniquement .NET et C #. Dans le même temps, nous avons également entendu de nombreuses questions sur ce qu'est Blazor Server, comment il est associé à Blazor WebAssembly et dans quels scénarios Blazor Server est le mieux adapté. Dois-je choisir Blazor Server pour mon interface Web côté client ou attendre Blazor WebAssembly? Cet article est destiné à répondre à ces questions et à donner une idée du fonctionnement du serveur Blazor à l'échelle et de la façon dont nous envisageons le développement de Blazor à l'avenir.



Qu'est-ce que Blazor Server?


Les applications Blazor Server hébergent les composants Blazor sur le serveur et gèrent les interactions de l'interface utilisateur via la connexion SignalR en temps réel. Lorsqu'un utilisateur interagit avec l'application, des événements d'interface utilisateur sont envoyés au serveur via une connexion qui est traitée par les différents composants qui composent l'application. Lorsqu'un composant traite un événement d'interface utilisateur, il s'affiche en fonction de son état mis à jour. Blazor compare la sortie récemment rendue avec celle précédemment rendue, renvoie les modifications au navigateur et les applique au DOM.



Étant donné que les applications Blazor Server s'exécutent dans .NET Core sur un serveur, elles tirent pleinement parti de l'exécution de .NET Core, notamment d'excellentes performances d'exécution et l'utilisation d'outils avancés. Les applications Blazor Server peuvent utiliser l'intégralité de l'écosystème des bibliothèques .NET Standard sans aucune restriction de navigateur.

Quand devez-vous utiliser Blazor Server?


Blazor Server vous permet d'ajouter une interface interactive riche aux applications .NET sans avoir besoin de JavaScript. Si vous voulez une interactivité d'application d'une page dans une application .NET, alors Blazor Server est une excellente solution.

Blazor Server peut être utilisé pour écrire des applications complètement nouvelles ou pour compléter les applications MVC et Razor Pages existantes. Il n'est pas nécessaire de réécrire la logique d'application existante. Blazor est conçu pour fonctionner avec MVC et Razor Pages, pas pour les remplacer. Vous pouvez continuer à utiliser MVC et Razor Pages pour les besoins de rendu du serveur, tandis que Blazor est utilisé pour l'interaction avec l'interface utilisateur côté client.

Blazor Server est le mieux adapté aux scénarios dans lesquels vous disposez d'une connexion réseau fiable à faible latence, généralement obtenue lorsque le client et le serveur sont situés géographiquement sur le même continent. Les applications qui nécessitent des mises à jour instantanées avec une très haute fidélité à chaque petit clic de souris, comme les jeux en temps réel ou les applications de dessin, ne conviennent pas à Blazor Server. Les applications Blazor Server nécessitant une connexion réseau active, les scripts autonomes ne sont pas pris en charge.

Blazor Server est également utile lorsque vous souhaitez transférer le travail d'un client vers un serveur. Les applications Blazor Server ne nécessitent qu'un petit téléchargement pour établir une connexion avec le serveur et gérer les interactions de l'interface utilisateur. Tout le travail acharné de l'exécution de la logique d'application et de visualisation de l'interface utilisateur est effectué sur le serveur. Cela signifie que les applications Blazor Server se chargent rapidement, même à mesure que la fonctionnalité des applications se développe. Étant donné que le côté client de l'application Blazor Server est très léger, il s'agit d'une excellente solution pour les applications qui doivent s'exécuter sur des appareils à faible consommation.

Utilisation de Blazor Server pour évoluer


Blazor Server peut évoluer des petites applications d'entreprise internes aux grandes applications Internet. Alors que .NET Core 3.0 était toujours en version préliminaire, nous avons testé Blazor Server pour comprendre le fonctionnement de la mise à l'échelle. Nous avons placé l'application Blazor Server sous la charge de clients actifs et surveillé le retard dans l'interaction avec l'utilisateur. Dans nos tests, une instance de Standard_D1_v2 dans Azure (1 vCPU, 3,5 Go de mémoire) pourrait traiter plus de 5000 utilisateurs simultanés sans réduire le délai.

L'instance Standard_D3_V2 (4 processeurs virtuels, 14 Go de mémoire) a géré plus de 20 000 clients exécutés simultanément. Le principal goulot d'étranglement pour un traitement ultérieur de la charge était la mémoire disponible. Réalisez-vous cette échelle dans votre propre application? Cela dépendra en grande partie de la quantité de mémoire supplémentaire dont votre application a besoin par utilisateur. Mais pour la plupart des applications, nous trouvons ce niveau de mise à l'échelle tout à fait raisonnable. Nous prévoyons également de publier des mises à jour supplémentaires pour améliorer l'évolutivité de Blazor Server dans les semaines à venir. Alors restez à l'écoute!

Qu'est-ce que Blazor WebAssembly?


Blazor est un cadre d'interface utilisateur qui peut fonctionner dans différents environnements. Lorsque vous créez des composants d'interface utilisateur à l'aide de Blazor, vous avez la possibilité de choisir comment et où ils seront placés et lancés. En plus d'exécuter des composants d'interface utilisateur sur un serveur avec Blazor Server, vous pouvez exécuter les mêmes composants sur un client à l'aide de Blazor WebAssembly. Cette flexibilité signifie que vous pouvez vous adapter aux besoins de vos utilisateurs et éviter le risque d'être lié à un modèle d'hébergement d'application spécifique.

Les applications Blazor WebAssembly hébergent des composants dans un navigateur à l'aide du runtime .NET basé sur WebAssembly. Les composants gèrent les événements de l'interface utilisateur et exécutent la logique de rendu directement dans le navigateur. Les applications Blazor WebAssembly utilisent uniquement des normes Web ouvertes pour exécuter le code client .NET sans avoir besoin de plug-ins de navigateur ou de portage de code. Comme pour les applications Blazor Server, la plate-forme Blazor traite la sortie comparée avec ce qui était précédemment affiché et met à jour le DOM en conséquence, mais dans Blazor WebAssembly, le rendu de l'interface utilisateur est géré côté client.



Quand dois-je utiliser Blazor WebAssembly?


Blazor WebAssembly est toujours en préversion et n'est pas encore prêt à être utilisé. Si vous recherchez une solution clé en main, nous vous recommandons le serveur Blazor.

Après la sortie de Blazor WebAssembly (mai 2020), il permettra aux composants Razor et au code .NET de s'exécuter dans un navigateur sur l'appareil d'un utilisateur. Les applications Blazor WebAssembly aident à transférer le travail du serveur vers le client. L'application Blazor WebAssembly peut utiliser les ressources informatiques, la mémoire et les ressources de stockage du périphérique client, ainsi que d'autres ressources disponibles via les API de navigateur standard.

Les applications Blazor WebAssembly ne nécessitent pas .NET sur le serveur et peuvent être utilisées pour créer des sites statiques. L'application Blazor WebAssembly est simplement une collection de fichiers statiques qui peuvent être hébergés à l'aide de n'importe quel service d'hébergement statique, comme les pages GitHub ou l'hébergement statique de sites Web Azure. En combinaison avec le technicien de service, Blazor WebAssembly peut fonctionner complètement hors ligne.

Combiné avec .NET sur le serveur Blazor, WebAssembly fournit le développement complet de la pile Web. Vous pouvez partager du code, utiliser l'écosystème .NET et réutiliser vos compétences et votre infrastructure .NET existantes.

L'inclusion du runtime .NET dans votre application Web augmente la taille de l'application, ce qui affecte le temps de chargement. Bien qu'il existe différentes méthodes pour atténuer ce problème (pré-rendu sur le serveur, mise en cache HTTP, connexion IL, etc.), Blazor WebAssembly n'est peut-être pas le meilleur choix pour les applications qui sont très sensibles à la taille et au temps de chargement. téléchargements.

Les applications Blazor WebAssembly nécessitent également un navigateur prenant en charge WebAssembly. WebAssembly est pris en charge par tous les navigateurs modernes, y compris les navigateurs mobiles et de bureau. Cependant, si vous avez besoin de la prise en charge d'anciens navigateurs sans prise en charge de WebAssembly, Blazor WebAssembly n'est pas pour vous.

Blazor WebAssembly est optimisé pour les scénarios de rendu de l'interface utilisateur, mais n'est actuellement pas adapté pour effectuer des charges de processeur lourdes. Aujourd'hui, les applications Blazor WebAssembly utilisent l'interpréteur .NET IL pour exécuter du code .NET qui n'a pas les mêmes performances que le runtime .NET natif avec compilation JIT. Nous nous efforçons de mieux gérer ce scénario à l'avenir en ajoutant la prise en charge de la compilation de votre code .NET directement dans WebAssembly au lieu d'utiliser un interpréteur.

Vous pouvez changer d'avis plus tard


Que vous choisissiez Blazor Server ou Blazor WebAssembly, vous pourrez toujours changer d'avis plus tard. Toutes les applications Blazor utilisent un modèle de composant commun, les composants Razor. Les mêmes composants peuvent être hébergés dans l'application Blazor Server ou l'application Blazor WebAssembly. Donc, si vous commencez avec un modèle d'hébergement Blazor, puis décidez que vous souhaitez passer à un autre, c'est très facile à faire.

Quelle est la prochaine étape avec Blazor?


Avec la sortie de Blazor WebAssembly, nous prévoyons d'étendre Blazor pour prendre en charge non seulement les applications Web, mais également les applications Web progressives (PWA), les applications hybrides et même les applications entièrement natives.

  • Blazor PWA: PWA sont des applications Web qui utilisent les dernières normes Web pour offrir une expérience plus native. Les PWA peuvent prendre en charge des scripts autonomes, des notifications push et des intégrations de système d'exploitation, telles que la prise en charge de l'épinglage d'une application sur l'écran d'accueil ou le menu Démarrer de Windows.
  • Blazor Hybrid: les applications hybrides sont des applications intégrées qui utilisent les technologies Web pour l'interface utilisateur. Les exemples incluent les applications Electron et les applications mobiles qui apparaissent dans une vue Web. Les applications hybrides Blazor ne s'exécutent pas sur WebAssembly, mais utilisent à la place leur propre runtime .NET, tel que .NET Core ou Xamarin. Vous pouvez trouver un exemple expérimental d'utilisation de Blazor avec Electron sur GitHub.
  • Blazor Native: les applications Blazor affichent aujourd'hui du HTML, mais à la place, le rendu peut être remplacé en affichant des contrôles natifs. L'application Blazor Native est initialement lancée sur les appareils et utilise une abstraction commune de l'interface utilisateur pour visualiser les contrôles natifs de cet appareil. C'est très similaire à la façon dont les frameworks comme Xamarin Forms ou React Native fonctionnent aujourd'hui.

Ces trois nouveaux produits sont actuellement expérimentaux. Nous attendons une annonce officielle de prise en charge des applications Blazor PWA et Blazor Hybrid utilisant Electron pendant la période .NET 5 (novembre 2020). Il n'y a pas encore de feuille de route pour prendre en charge Blazor Native, mais c'est un domaine que nous explorons activement.

Total


Avec .NET Core 3.0, vous pouvez créer aujourd'hui une interface utilisateur côté client riche et interactive avec Blazor Server. Blazor Server est un excellent moyen d'ajouter des fonctionnalités côté client aux applications Web existantes et nouvelles en utilisant vos compétences et ressources .NET existantes. Blazor Server est conçu pour répondre à tous les besoins de votre application Web. Blazor WebAssembly est toujours en avant-première, mais devrait sortir en mai de l'année prochaine. À l'avenir, nous nous réjouissons de poursuivre le développement de Blazor pour prendre en charge PWA, les applications hybrides et les applications natives. Nous espérons maintenant que vous essayez Blazor Server en installant .NET Core 3.0 !

Source: https://habr.com/ru/post/fr473172/


All Articles