Vue d'ensemble de la performance ASP.NET
La création d'applications Web qui répondent rapidement aux demandes des utilisateurs, même lorsqu'un grand nombre de demandes est traité sur le serveur, est un défi pour les développeurs et les informaticiens depuis l'apparition d'Internet. Tous les développeurs d'Internet et d'intranet doivent pouvoir contrôler la performance des sites Web, une préoccupation qui a présidé à la conception de ASP.NET.
Le modèle ASP.NET intègre un certain nombre d'améliorations de la performance qui ne se trouvent pas dans les versions antérieures d'ASP. Il existe en particulier deux améliorations impliquées dans le traitement des demandes HTTP. Premièrement, lorsqu'une page ASP.NET est demandée pour la première fois, une instance de la classe Page est compilée de manière dynamique. (Dans les versions antérieures d'ASP, le code de page était interprété pour les demandes dans l'ordre de leur apparition sur la page.) Le Common Language Runtime juste-à-temps (JIT) compile le code de page managé ASP.NET en code natif du serveur de traitement au moment de l'exécution. Deuxièmement, lorsque l'instance Page a été compilée pour la première demande, elle est mise en cache sur le serveur. Pour chaque demande ultérieure de cette page, l'instance mise en cache de la classe est exécutée. Après la demande initiale, la classe Page n'est recompilée que lorsque la source d'origine de la page ou l'une de ses dépendances se trouve modifiée.
De plus, ASP.NET met en cache les objets internes (variables serveur par exemple) pour accélérer l'accès du code utilisateur. Puisqu'il fait partie du .NET Framework, ASP.NET bénéficie des améliorations de performance fournies par le Common Language Runtime, notamment la compilation JIT précédemment mentionnée, un Common Language Runtime précis pour les ordinateurs mono et multiprocesseurs.
Ces améliorations, malheureusement, ne vous empêchent pas d'écrire du code qui ne s'exécute pas correctement lorsque de nombreuses demandes HTTP sont traitées simultanément par votre application. Vous devez tester votre application pour vous assurer qu'elle répond aux exigences de ses utilisateurs. Il existe quatre mesures de performance courantes que vous pouvez tester pour vérifier que votre application fonctionne correctement.
- Temps d'exécution
Temps qu'il faut pour traiter une demande, généralement mesuré entre le premier et le dernier octet retourné au client à partir du serveur. Le temps d'exécution affecte directement le calcul du débit. - Temps de réponse
Période écoulée entre la demande et le moment où le premier octet est retourné au client à partir du serveur. C'est souvent l'aspect de performance le plus perceptible pour l'utilisateur client. S'il faut longtemps à une application pour répondre, l'utilisateur peut s'impatienter et aller sur un autre site. Le temps de réponse d'une application peut varier indépendamment (et même à l'inverse) du débit. - Évolutivité
Mesure de la capacité d'une application à mieux fonctionner à mesure que des ressources supplémentaires (mémoire, processeurs ou ordinateurs) lui sont attribuées. Il s'agit souvent d'une mesure du changement de débit par rapport au nombre de processeurs. - Débit
Nombre de demandes qu'une application Web peut traiter par unité de temps, souvent calculé en demandes par seconde. Le débit peut varier, en fonction de la charge (nombre de threads clients) appliquée au serveur. De l'avis général, il s'agit là de la mesure de performance qu'il faut absolument optimiser.
Pour écrire des applications qui fonctionnent bien, il est essentiel de maintenir un équilibre entre ces mesures. Une seule mesure ne peut pas caractériser le comportement de votre application dans des circonstances variables, mais plusieurs mesures prises ensemble peuvent vous en montrer le fonctionnement. Pour plus d'informations sur ce type de mesures ainsi que sur les compteurs de performance fournis par ASP.NET, consultez Contrôle de la performance des applications ASP.NET.
Pour des suggestions de création d'applications haute performance, consultez Développement d'applications ASP.NET haute performance.