Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Conseil / Astuce
Ce contenu est un extrait du livre électronique, architecte d’applications web modernes avec ASP.NET Core et Azure, disponible sur .NET Docs ou en tant que PDF téléchargeable gratuitement qui peut être lu hors connexion.
"… avec une conception appropriée, les caractéristiques sont économiques. Cette approche est ardue, mais continue de réussir.
- Dennis Ritchie
Les applications web modernes ont des attentes utilisateur plus élevées et des demandes plus élevées que jamais. Les applications web d’aujourd’hui sont censées être disponibles 24/7 partout dans le monde, et utilisables à partir de pratiquement n’importe quel appareil ou taille d’écran. Elles doivent être sécurisées, flexibles et scalables afin de répondre aux pics de demande. De plus en plus, les scénarios complexes doivent être gérés par des expériences utilisateur enrichies basées sur le client à l’aide de JavaScript et communiquer efficacement via des API web.
ASP.NET Core est optimisé pour les applications web modernes et les scénarios d’hébergement basés sur le cloud. Sa conception modulaire permet aux applications de dépendre uniquement de ces fonctionnalités qu’elles utilisent réellement, d’améliorer la sécurité et les performances des applications tout en réduisant les besoins en ressources d’hébergement.
Application de référence : eShopOnWeb
Ce guide inclut une application de référence, eShopOnWeb, qui illustre certaines des principes et recommandations. L’application est un magasin en ligne simple, qui prend en charge la navigation dans un catalogue de chemises, tasses de café et autres articles marketing. L’application de référence est délibérément simple pour faciliter la compréhension.
Figure 2-1. eShopOnWeb
Application de référence
- eShopOnWeb
https://github.com/dotnet/eShopOnWeb
Hébergé dans le cloud et évolutif
ASP.NET Core est optimisé pour le cloud (cloud public, cloud privé, n’importe quel cloud) car il s’agit d’une mémoire faible et d’un débit élevé. L’encombrement réduit des applications ASP.NET Core signifie que vous pouvez les héberger davantage sur le même matériel et que vous payez moins de ressources lors de l’utilisation de services d’hébergement cloud de paiement à l’utilisation. Le débit plus élevé signifie que vous pouvez servir davantage de clients à partir d’une application en fonction du même matériel, ce qui réduit davantage la nécessité d’investir dans les serveurs et l’infrastructure d’hébergement.
Multiplateforme
ASP.NET Core est multiplateforme et peut s’exécuter sur Linux, macOS et Windows. Cette fonctionnalité ouvre de nombreuses nouvelles options pour le développement et le déploiement d’applications créées avec ASP.NET Core. Les conteneurs Docker - Linux et Windows - peuvent héberger des applications ASP.NET Core, ce qui leur permet de tirer parti des avantages des conteneurs et des microservices.
Modulaire et faiblement couplé
Les packages NuGet sont des citoyens de première classe dans .NET Core, et les applications ASP.NET Core sont composées de nombreuses bibliothèques via NuGet. Cette granularité des fonctionnalités permet de s’assurer que les applications dépendent et déploient uniquement des fonctionnalités dont elles ont réellement besoin, ce qui réduit leur empreinte et leur surface d’exposition des vulnérabilités de sécurité.
ASP.NET Core prend également entièrement en charge l’injection de dépendances, à la fois en interne et au niveau de l’application. Les interfaces peuvent avoir plusieurs implémentations qui peuvent être échangées selon les besoins. L’injection de dépendances permet aux applications d’être faiblement couplées avec ces interfaces, plutôt qu’avec des implémentations spécifiques, ce qui les rend plus faciles à étendre, mettre à jour et tester.
Facilement testé avec des tests automatisés
Les applications ASP.NET Core prennent en charge les tests unitaires, et leur faible couplage ainsi que leur prise en charge de l’injection de dépendances rendent facile l'échange des problématiques d'infrastructure avec des implémentations factices à des fins de test. ASP.NET Core est également fourni avec un TestServer qui peut être utilisé pour héberger des applications en mémoire. Les tests fonctionnels peuvent ensuite effectuer des requêtes à ce serveur en mémoire, exercer la pile d’applications complète (y compris l’intergiciel, le routage, la liaison de modèle, les filtres, etc.) et recevoir une réponse, dans une fraction du temps nécessaire pour héberger l’application sur un serveur réel et effectuer des requêtes via la couche réseau. Ces tests sont particulièrement faciles à écrire et précieux pour les API, qui sont de plus en plus importantes dans les applications web modernes.
Comportements des applications traditionnelles et SPA pris en charge
Les applications web traditionnelles ont impliqué peu de comportement côté client, mais elles s’appuient plutôt sur le serveur pour toutes les requêtes et toutes les mises à jour de l’application. Chaque nouvelle opération effectuée par l’utilisateur est traduite dans une nouvelle requête web, ce qui entraîne le rechargement d’une page complète dans le navigateur de l’utilisateur final. Les frameworks de modèle classiqueView-Controller (MVC) suivent généralement cette approche, chaque nouvelle requête correspondant à une action de contrôleur différente, qui à son tour fonctionne avec un modèle et retourne une vue. Certaines opérations individuelles sur une page donnée peuvent être améliorées avec la fonctionnalité AJAX (JavaScript asynchrone et XML), mais l’architecture globale de l’application a utilisé de nombreuses vues et points de terminaison d’URL MVC différents. En outre, ASP.NET Core MVC prend également en charge les pages Razor, un moyen plus simple d’organiser les pages de style MVC.
Les applications monopage (SPA), en revanche, impliquent très peu de chargements de pages côté serveur générés dynamiquement (le cas échéant). De nombreux spAs sont initialisés dans un fichier HTML statique qui charge les bibliothèques JavaScript nécessaires pour démarrer et exécuter l’application. Ces applications mettent en place une utilisation intensive des API web pour leurs besoins en données et peuvent fournir des expériences utilisateur beaucoup plus riches. BlazorWebAssembly fournit un moyen de créer des spAs à l’aide du code .NET, qui s’exécute ensuite dans le navigateur du client.
De nombreuses applications web impliquent une combinaison de comportements d’application web traditionnels (généralement pour le contenu) et des SPA (pour l’interactivité). ASP.NET Core prend en charge les API MVC (vues ou pages) et web dans la même application, à l’aide du même ensemble d’outils et de bibliothèques d’infrastructure sous-jacentes.
Développement et déploiement simples
Les applications ASP.NET Core peuvent être écrites à l'aide d'éditeurs de texte simples et d'interfaces en ligne de commande, ou de environnements de développement complets tels que Visual Studio. Les applications monolithiques sont généralement déployées sur un point de terminaison unique. Les déploiements peuvent facilement être automatisés dans le cadre d’un pipeline d’intégration continue (CI) et de livraison continue (CD). Outre les outils CI/CD traditionnels, Microsoft Azure a intégré la prise en charge des référentiels Git et peut déployer automatiquement des mises à jour à mesure qu’elles sont effectuées sur une branche ou une balise git spécifiée. Azure DevOps fournit un pipeline de déploiement et de build CI/CD complet, et GitHub Actions fournit une autre option pour les projets hébergés ici.
Formulaires web et ASP.NET traditionnels
En plus de ASP.NET Core, les ASP.NET classiques 4.x continuent d’être une plateforme robuste et fiable pour la création d’applications web. ASP.NET prend en charge les modèles de développement MVC et d’API web, ainsi que web Forms, qui sont adaptés au développement d’applications basés sur des pages riches et proposent un écosystème de composants tiers riche. Microsoft Azure offre une excellente prise en charge de longue date pour les applications ASP.NET 4.x, et de nombreux développeurs connaissent cette plateforme.
Blazor
Blazor est inclus dans ASP.NET Core 3.0 et versions ultérieures. Il fournit un nouveau mécanisme permettant de créer des applications clientes web interactives enrichies à l’aide de Razor, C# et ASP.NET Core. Il offre une autre solution à prendre en compte lors du développement d’applications web modernes. Il existe deux versions de Blazor à prendre en compte : côté serveur et côté client.
Blazor côté serveur a été publié en 2019 avec ASP.NET Core 3.0. Comme son nom l’indique, il s’exécute sur le serveur, rendant les modifications apportées au document client vers le navigateur sur le réseau. Côté Blazor serveur fournit une expérience client riche sans nécessiter javaScript côté client et sans nécessiter de chargements de pages distincts pour chaque interaction de page client. Les modifications apportées à la page chargée sont demandées et traitées par le serveur, puis renvoyées au client à l’aide de SignalR.
Blazor côté client, publié en 2020, élimine la nécessité d’afficher les modifications sur le serveur. Au lieu de cela, il s’appuie WebAssembly pour exécuter du code .NET au sein du client. Le client peut toujours effectuer des appels d’API au serveur si nécessaire pour demander des données, mais tous les comportements côté client s’exécutent dans le client via WebAssembly, qui est déjà pris en charge par tous les navigateurs principaux et est simplement une bibliothèque JavaScript.
Références – Applications web modernes
- Introduction à ASP.NET Core
https://learn.microsoft.com/aspnet/core/- Test dans ASP.NET Core
https://learn.microsoft.com/aspnet/core/testing/- Blazor -Démarrer
https://blazor.net/docs/get-started.html