Qu’est-ce que ASP.NET ?

ASP.NET est un framework de développement sophistiqué de Microsoft côté serveur. Les développeurs utilisent ASP.NET pour mettre en œuvre des sites Web dynamiques, des applications Web et des services basés sur le Web. Après des décennies de développement, le framework se poursuit aujourd’hui sous le nom d’ASP.NET Core.

L’histoire du développement d’ASP.NET

Développé à l’origine par Microsoft, ASP.NET fait désormais partie de la .NET Foundation. Alors que les premières versions étaient encore publiées en tant que logiciel propriétaire, l’ASP.NET moderne est un projet open source.

L’ASP.NET utilisé aujourd’hui est le résultat d’un processus de développement qui s’est étendu sur plusieurs décennies. ASP est devenu ASP.NET, puis ASP.NET Core. Dans le cadre des progrès réalisés par la technologie Web, le framework a radicalement changé au fil des ans. Intéressons-nous tout d’abord à l’historique du développement d’ASP.NET :

Technologie Environnement de développement Version actuelle Extensions de fichiers
ASP Windows 3.0 / 2000-02 .asp
ASP.NET Windows 4.8 / 2019-04 .aspx/.aspx.cs, .aspx.vb etc.
ASP.NET Core multiplatformes 5.0 / 2020-11 .cshtml, .vbhtml, etc.
Conseil

Créez votre propre page d’accueil sans aucune connaissance en programmation ! Rien de plus simple avec l’outil de création MyWebsite de IONOS.

Active Server Pages (ASP) : premier langage de script de Microsoft côté serveur

L’« Active Server Pages » (ASP) original fut le premier langage de script côté serveur publié par Microsoft. Active Server Pages a permis la création dynamique de pages Web sur le serveur à partir de 1996. Alors que d’autres langages de script s’appuient sur Linux comme système d’exploitation et sur un serveur Web open source tel qu’Apache, Microsoft a intégré les Active Server Pages au « Internet Information Server » (IIS) fonctionnant sous Windows.

La fonctionnalité de base d’ASP est à peu près comparable à celle de PHP ou des « Java Server Pages » (JSP). Des fichiers modèles sont utilisés dans les trois technologies. Les fichiers modèles contiennent des extraits de code exécutables qui sont intégrés au contenu HTML statique. Le code est écrit entre des balises spéciales pour le séparer du code HTML environnant. Les langages VBScript, JScript et PerlScript, disponibles à l’époque et spécifiques à Microsoft, étaient utilisés comme langages de programmation.

Lorsqu’un navigateur accède à une URL (« Request »), le code est exécuté sur le serveur. L’exécution génère du contenu HTML qui est inséré dans les structures HTML prédéfinies. Le résultat global est un document composé de contenu HTML statique et dynamique ; celui-ci est transmis au navigateur en tant que réponse (« Response ») et affiché à l’utilisateur. Toute modification du contenu de la page, par exemple par une entrée de l’utilisateur, nécessitait un cycle complet de requête-réponse et donc un rechargement de la page. Voici un exemple de code ASP :

<p>
  The server’s current time:
  <%
    Response.Write Now()
  %>
</p>

ASP n’était pas encore un framework. Il s’agissait bien plus d’une collection dissociée de plusieurs objets permettant, une fois associés, de constituer un site Web dynamique :

  • Application
  • Request
  • Response
  • Server
  • Session
  • ASPError

ASP.NET : des Active Server Pages au framework

ASP.NET, le successeur de l’ASP classique, a été introduit vers 2003. La collection dissociée d’objets a été remplacée par le framework .NET utilisé comme sous-structure. Cela a permis d’abstraire des processus fréquemment requis, tels que l’authentification et l’autorisation des utilisateurs ou encore l’accès aux bases de données. De manière générale, ASP.NET est à peu près comparable aux frameworks Java tels que « Struts » ou « Spring ».

ASP.NET a inclus les « Web Forms » comme caractéristique essentielle. L’approche des Web Forms a permis aux développeurs Windows expérimentés de programmer des sites Web dynamiques. Les mécanismes sous-jacents du Web étaient cachés aux développeurs et ces derniers pouvaient continuer à utiliser les flux de travail et les environnements de développement qui leur étaient familiers. Des outils visuels de développement rapide d’applications (RAD) spécifiques à Microsoft ont en particulier été utilisés.

Les Web Forms ont permis aux développeurs Windows de se lancer rapidement dans la programmation Web. Dans le même temps, cette approche limitait cependant le degré de contrôle sur les pages HTML livrées.ASP.NET Un modèle de développement alternatif a rapidement été ajouté avec ASP.NET MVC. Ce modèle suit le modèle établi de « Model View Controller » (MVC) et permet une séparation plus nette des préoccupations. Basé sur le framework pionnier « Ruby on Rails », ASP.NET MVC offrait une fonctionnalité permettant d’« échafauder » un projet.

Aujourd’hui, ASP.NET a été remplacé par son évolution « ASP.NET Core ». Dans le langage courant, les deux noms sont cependant souvent utilisés comme synonymes.

ASP.NET Core : nouveau développement en open source

Avec la sortie d’ASP.NET Core, l’organisation du framework a changé. Dans le cadre de l’ouverture progressive de Microsoft, le développement d’ASP.NET Core a été placé sous l’égide de la .NET Foundation. Le code source du projet est disponible sous une licence open source.

Sur le plan technique, ASP.NET Core est une refonte d’ASP.NET 4.0. Les composants d’ASP.NET qui ont été développés de manière organique ont été fusionnés. Le développement de projets ASP.NET Core et l’hébergement en dehors de l’écosystème Windows ont été rendus possibles. Sous Windows, ASP.NET Core est basé sur le framework .NET ; les autres systèmes d’exploitation ont, quant à eux, recours au framework .NET Core.

Dans le droit fil du développement continu de la technologie Web, ASP.NET Core est paré pour le Cloud. En plus du serveur Internet Information Server (IIS) traditionnellement utilisé par Microsoft, des environnements de serveurs ouverts et des conteneurs sont utilisés comme environnement d’hébergement ASP.NET. Le framework prend en charge le code côté client et les approches modernes de la programmation réactive. ASP.NET Core se place ainsi au même niveau que les frameworks basés sur JavaScript tels que React.

À quels projets ASP.NET convient-il ?

Des projets Web de toutes sortes peuvent être mis en œuvre avec ASP.NET Framework, tels que des sites Web dynamiques et des applications Web, y compris les « Single Page Apps » (SPA). Des services Web tels que des API et des systèmes de communication en temps réel peuvent également être implémentés. Au fil des ans, différentes approches ont été utilisées à des fins diverses. Nous les aborderons ci-dessous et nous vous donnerons un aperçu de l’évolution historique.

Modèles de programmation dans ASP.NET

Avec l’avancée des technologies Web depuis les années 2000, de nouvelles approches du développement Web ont été intégrées à ASP.NET. Vous pouvez les considérer comme une boîte à outils bien organisée : différents outils sont disponibles pour différents types de projets. En fonction des besoins, plusieurs approches peuvent être combinées dans un même projet. Avec l’apparition d’ASP.NET Core, les nombreux modèles de programmation développés de manière organique ont été fusionnés permettant ainsi une simplification dans le choix des approches appropriées.

Web Forms ASP.NET

Les Web Forms classiques permettent d’assembler des pages à partir de composants prédéfinis. Pour ce faire, un kit de construction de formulaire visuel est utilisé ; les différents composants sont positionnés par glisser-déposer. Cette possibilité était particulièrement intéressante pour les développeurs ayant une expérience de la programmation Windows. Ils ont pu utiliser les outils qui leur étaient familiers pour le « Rapid Application Development » (RAD), à ceci près que le produit final n’était pas une application Windows, mais un site Web dynamique.

L’approche Web Forms est basée sur le modèle code-behind de Microsoft qui renforce la séparation des préoccupations :

  • Les fichiers modèles avec l’extension .aspx définissent la structure HTML d’une page et contiennent des espaces réservés pour le contenu généré dynamiquement
  • La logique d’application proprement dite est stockée dans un fichier distinct avec l’extension .aspx.cs ou .aspx.vb. C’est le fichier code-behind qui lui donne son nom.
  • Le client récupère le fichier .aspx disponible sous une URL. Les composants statiques et dynamiques sont combinés sur le serveur et le document HTML résultant est livré au client.
  • Lorsque l’utilisateur saisit des données sur la page, celles-ci sont transférées vers la même URL via une requête GET ou POST et sont traitées par le fichier code-behind.

Pour la mise en œuvre de la logique de l’application, une approche orientée objet est utilisée : le fichier code-behind définit une classe dérivée. Le langage de programmation utilisé est généralement C# ou Visual Basic. Il est intéressant de noter que le fichier code-behind est précompilé une fois. Cela permet une exécution plus rapide et une plus grande résistance aux erreurs lors de l’appel de la page.

ASP.NET MVC

Contrairement à l’ASP d’origine, les Web Forms ont constitué un pas en avant vers la séparation des préoccupations. Avec ASP, le HTML statique et les composants de code étaient mélangés dans un seul et même fichier. Les Web Forms ont permis la séparation entre le modèle et le fichier code-behind. Avec ASP.NET MVC, ASP.NET s’est vu doter d’un autre modèle de programmation qui permet un développement Web basé sur le modèle Model View Controller (MVC).

Le modèle MVC sépare la logique de l’application (« Model »), le modèle de présentation (« View » et l’interaction avec l’utilisateur (« Controller »). L’un des avantages de l’approche MVC est que les préoccupations individuelles peuvent être testées plus facilement. De plus, la séparation des préoccupations permet d’utiliser différents contrôleurs. Par exemple, au lieu d’envoyer toutes les entrées de l’utilisateur vers une seule URL et de recharger la page, on utilise AJAX via jQuery ce qui permet de recharger certaines parties de la page. Avec ASP.NET Core MVC, la tradition d’ASP.NET MVC se poursuit dans la version actuelle du framework.

Pages Web ASP.NET

Les Web Forms ASP.NET et ASP.NET MVC conviennent parfaitement à la réalisation de sites Web complexes. Si vous avez besoin de plusieurs pages avec des composants réutilisables, les deux modèles de programmation peuvent s’y prêter. Mais que faire si cela est superflu ? Supposons que vous vouliez créer un site Web simple, composé d’une seule ou de quelques pages. Vous disposez de quelques composants dynamiques, mais l’accent est davantage mis sur une mise en page sophistiquée que sur une logique d’application complexe et le traitement des entrées de l’utilisateur. Dans ce cas, il serait exagéré de définir vos propres classes ou de viser une répartition selon le modèle MVC.

Les pages Web ASP.NET constituent un bon choix dans les cas où la logique de l’application est moins importante que la mise en page et la conception sophistiquéeASP.NET. Comme pour l’ASP ou le PHP classique, une combinaison de structures HTML statiques et de composants de code dynamiques a lieu dans un fichier. Pour cela, une syntaxe spéciale est utilisée. Les pages Web ASP.NET sont particulièrement adaptées à la création de pages de renvoi.

API Web ASP.NET

Les modèles de programmation présentés jusqu’à présent visent tous à générer du contenu HTML destiné à des utilisateurs humains. En outre, ASP.NET Framework contient également des modèles qui servent à fournir une infrastructure pour les projets Web. L’API Web ASP.NET est un modèle de programmation permettant de créer des API REST. L’accès aux points de terminaison de l’API se fait via AJAX. Pour la transmission des données, on utilise le format JSON ou XML.

ASP.NET WebHooks

ASP.NET WebHooks est une implémentation du modèle WebHooks. Les WebHooks vous permettent de publier et de vous abonner à des événements qui ont lieu dans un système. Il peut s’agir, par exemple, de l’ajout d’un fichier ou de la réception d’un paiement. Un abonné enregistre le changement à suivre auprès du système de publication. Pour ce faire, il transmet une URL, le WebHook à qui il doit son nom. Lorsque l’événement enregistré se produit, le système de publication appelle le WebHook ; l’abonné est informé de l’événement.

SignalR

SignalR est un framework pour la communication en temps réel entre le client et le serveur. Le framework est basé sur la norme WebSockets et permet le transfert bidirectionnel de données. Les navigateurs qui ne prennent pas en charge les WebSockets sont pris en charge par des mécanismes de secours. SignalR est souvent utilisé pour mettre en œuvre des services de chat basés sur un navigateur et des logiciels de vidéoconférence.

Nouveaux modèles de programmation dans ASP.NET Core

ASP.NET Core est le successeur d’ASP.NET. Le framework ASP.NET Core a été réécrit, mais est hautement compatible avec son prédécesseur. Dans la version Core, les composants d’ASP.NET qui étaient séparés ont été fusionnés. De plus, certains composants ont été nouvellement développés et ont conservé leurs noms existants. Par exemple, le framework SignalR existe à la fois en version ASP.NET et ASP.NET Core. Jetons un œil aux nouveaux développements majeurs d’ASP.NET Core.

ASP.NET Core MVC : Sites Model View Controller Sites pilotés par API

ASP.NET Core MVC combine les fonctionnalités d’ASP.NET MVC et de l’API Web ASP.NET. Cela permet de développer des applications Web hautement dynamiques avec une interface utilisateur et une API sous-jacente modulaires. Le framework .NET Core est utilisé comme base commune. Les approches familières du développement API de .NET peuvent être transférées au développement MVC et vice versa.

Pages Razor : Poursuite du développement des pages Web ASP.NET

Les pages Razor occupent un créneau similaire à celui des anciennes pages Web ASP.NET. Elles peuvent être utilisées dans les cas où le modèle Model-View-Controller représenterait une surcharge inutile. Si vous souhaitez par exemple créer une page de renvoi, vous pouvez la mettre en œuvre comme une page Razor sans trop d’efforts. La syntaxe Razor est utilisée pour créer le modèle de page. Comme d’habitude dans l’univers .NET, C# et Visual Basic peuvent être utilisés comme langages de programmation.

Jetons un œil à un exemple de page Razor. Il est à noter qu’un signe @ initial est utilisé à la place des balises de code d’ouverture et de fermeture habituelles des langages de modèle :

@page
@model HelloWorldModel
 
@if (Name != null) {
    <p>Hello dear @Name</p>
}
<form method="post">
    <p>
        <label asp-for="Name"></label>
        <input class="form-control" asp-for="Name" />        
    </p>
    <input type="submit" value="Say Hello" />
</form>       

Programmation réactive avec Blazor : « .NET in the browser »

Le framework Blazor repose sur la syntaxe Razor susmentionnée ; en fait, Blazor est l’acronyme de « Browser + Razor ». Comme son nom l’indique, Blazor se concentre sur le navigateur en tant qu’environnement d’exécution. Avec Razor Pages, le traitement de l’interaction de l’utilisateur a lieu sur le serveur. Blazor permet une programmation réactive, dans laquelle les composants individuels de la page dans le navigateur réagissent dynamiquement aux changements. De ce point de vue, Blazor est à peu près comparable aux technologies React, Angular et Vue.

Voici un exemple simple de programmation réactive avec Blazor. Nous lions la valeur d’un champ de saisie à la variable Name. La syntaxe Razor est utilisée pour cela :

@page "/"
<h1>A Blazor example</h1>
<p>Welcome to Blazor, @Name.</p>
<input bind="@Name" type="text" class="form-control" placeholder="Name" />

Outre la programmation réactive, une autre fonctionnalité de Blazor est très intéressante : les langages .NET peuvent être compilés via WebAssembly pour une exécution dans le navigateur. C’est la raison pour laquelle on appelle parfois Blazor l’approche « .NET in the browser ». L’avantage est qu’il n’est pas nécessaire d’écrire du JavaScript pour le code côté client. Au lieu de cela, le développement se fait en C# ou Visual Basic ; le code peut accéder aux composants familiers du framework .NET.

Quels sont les avantages et les inconvénients d’ASP.NET ?

ASP.NET ou ASP.NET Core offre un environnement mature pour le développement d’une grande variété de projets Web. Le champ d’application comprend les langages de programmation, les éditeurs de code et les IDE ainsi que les outils de développement et un écosystème florissant de packages disponibles gratuitement. De nos jours, des méthodes modernes telles que la programmation réactive, WebSockets et WebAssembly sont utilisées. Le plus grand inconvénient à l’utilisation d’ASP.NET était traditionnellement son étroite relation avec Microsoft et le Vendor Lock-in qui en découlait. Avec l’ouverture progressive vers l’open source, cette question est désormais moins préoccupante.

Quels sont les avantages d’ASP.NET ?

Les développeurs familiarisés avec la programmation dans l’écosystème Microsoft sont ceux qui gagnent le plus à utiliser ASP.NET. Ils peuvent facilement accéder aux langages, outils et workflows qui leur sont familiers. Le framework mature .NET est utilisé comme base d’ASP.NET. Cela signifie que des composants adaptés sont disponibles pour une grande variété d’applications. C’est un avantage considérable lorsqu’il s’agit de mettre en œuvre des applications complexes rapidement et avec des résultats fiables.

Le framework .NET a une structure modulaire et contient le « Common Language Runtime » (CLR) en tant qu’environnement d’exécution. Cela permet l’utilisation de divers langages de programmation, pour autant qu’ils soient conformes à la norme « Common Language Infrastructure » (CLI). En plus des langages classiques orientés objet C# et Visual Basic, les langages CLI développés par Microsoft comprennent le nouveau langage fonctionnel F#. Les langages CLI peuvent être exécutés en tant que code côté client dans le navigateur via Blazor et WebAssembly.

À l’origine, ASP.NET était un logiciel propriétaire sous le contrôle de Microsoft. Aujourd’hui, c'est un projet open source sous l’égide de la .NET Foundation. Au cours de cette ouverture, le gestionnaire de paquets NuGet et le dépôt public associé ont été mis en place. Comparable à NPM ou RubyGems, ASP.NET met ainsi à disposition des développeurs un écosystème de paquets librement utilisables.

Quels sont les inconvénients d’ASP.NET ?

Le plus grand avantage d’ASP.NET, c’est-à-dire l’utilisation de l’écosystème propre à Microsoft, est également le plus grand inconvénient de cette technologie. En effet, le développement Web repose en grande partie sur des plates-formes, des langages et des formats libres et ouverts. Les développeurs qui plongent pour la première fois dans l'univers .NET sont confrontés à une variété déconcertante de versions et de modèles de programmation.

Traditionnellement, toute personne souhaitant développer avec le framework ASP.NET ne pouvait le faire que sous Windows. Depuis des années, Microsoft fait un effort concerté pour s’ouvrir aux normes largement utilisées et à l’open source. Avec l’apparition d’ASP.NET Core, le développement fonctionne désormais également sur les trois grandes familles de systèmes d’exploitation Windows, macOS et Linux. En outre, il est désormais possible de conserver l’environnement de développement dans un conteneur Docker.

L’ASP.NET classique ne pouvait être hébergé que sur la technologie de serveur de Microsoft, Internet Information Server (IIS). C’est un inconvénient majeur par rapport aux autres frameworks Web, qui fonctionnent tous également sous Linux. L’hébergement ASP.NET a des exigences particulières et n’est pas disponible auprès de tous les fournisseurs. Même s’il était possible d’utiliser d’autres serveurs Web avec « Mono » en tant qu’implémentation .NET gratuite, le véritable changement n’est intervenu qu’avec l’apparition de .NET Core et de l’« Open Web Interface for .NET » (OWIN). En effet, OWIN permet de découpler une application ASP.NET du serveur Web sous-jacent, levant ainsi l’un des principaux obstacles à l’utilisation d’ASP.NET.

Quelles sont les exigences liées à l’environnement d’hébergement APS.NET ?

Le framework ASP.NET est spécifique à l’environnement d’hébergement. Les autres frameworks Web basés sur les langages PHP, Java, Python ou JavaScript fonctionnent tous sur des serveurs Linux. Traditionnellement, seul l’hébergement d’applications ASP.NET nécessitait Windows comme système d’exploitation du serveur. En outre, le serveur Web Internet Information Services (IIS) de Microsoft était obligatoire. Pour héberger une application ASP.NET sur des serveurs Windows, il convient de choisir l’hébergement géré Windows. Avec ce modèle d’hébergement, les serveurs sont constamment entretenus par le fournisseur et alimentés avec des mises à jour logicielles.

L’hébergement d’applications ASP.NET Core est beaucoup plus simple. Outre IIS, elles peuvent être hébergées sur divers environnements de serveurs. On utilise le serveur Web intégré Kestrel, qui fonctionne sous Windows, Linux et macOS. Les serveurs Web populaires tels que Nginx et Apache peuvent être configurés en tant que Reverse Proxy et utilisés avec Kestrel. L’alternative Kestrel HTTP.sys est également disponible sous Windows.

Conseil

Utilisez l’hébergement ASP.NET de IONOS!