J'ai trouvé quelques remarques farfelues selon lesquelles ASP.NET MVC est 30 fois plus rapide que ASP.NET WebForms. Quelle différence de performance réelle existe-t-il, cela a-t-il été mesuré et quels sont les avantages en termes de performances.
Cela m'aidera à envisager de passer de ASP.NET WebForms à ASP.NET MVC.
asp.net
asp.net-mvc
performance
webforms
GEOCHET
la source
la source
Réponses:
Nous n'avons pas effectué le type de tests d'évolutivité et de performances nécessaires pour tirer des conclusions. Je pense que ScottGu a peut-être discuté d'objectifs de performance potentiels. Au fur et à mesure que nous progressons vers la bêta et le RTM, nous effectuerons davantage de tests de performance en interne. Cependant, je ne suis pas sûr de notre politique en matière de publication des résultats des tests de performance.
Dans tous les cas, de tels tests doivent vraiment prendre en compte les applications du monde réel ...
la source
Je pense que ce sera une question difficile à répondre définitivement car tout dépendra de A) comment vous implémentez l'application WebForms, et B) comment vous implémentez l'application MVC. Dans leurs formes «brutes», MVC est probablement plus rapide que les WebForms, mais des années et des années d'outils et d'expérience ont produit un certain nombre de techniques pour créer des applications WebForms rapides. Je serais prêt à parier qu'un développeur ASP.NET senior pourrait produire une application WebForms qui rivalise avec la vitesse de n'importe quelle application MVC - ou au moins réaliser une différence négligeable.
La vraie différence - comme @tvanfosson l'a suggéré - réside dans la testabilité et la propreté du SoC. Si l'amélioration des performances est votre principale préoccupation, je ne pense pas que ce soit une bonne raison de quitter WebForms et de commencer à reconstruire dans MVC. Pas du moins jusqu'à ce que vous ayez essayé les techniques disponibles pour optimiser les WebForms.
la source
Cela a réduit une de mes pages de 2 Mo de charge utile à 200 Ko, simplement en éliminant l'état d'affichage et en le rendant supportable par programme pour travailler avec la sortie soumise.
La taille seule, même si le traitement était le même, créera de vastes améliorations dans les connexions par seconde et la vitesse des requêtes.
la source
Je pense que beaucoup de gens qui pensent que les WebForms sont intrinsèquement lents ou gourmands en ressources mettent le blâme au mauvais endroit. 9 fois sur 10, lorsque je suis amené à optimiser une application de formulaires Web, il y a beaucoup trop d'endroits où les auteurs d'applications comprennent mal le but de l'état d'affichage. Je ne dis pas que l'état de vue est parfait ou quoi que ce soit, mais il est BIEN trop facile d'en abuser, et c'est cet abus qui cause le champ de vue gonflé.
Cet article a été inestimable pour m'aider à comprendre bon nombre de ces abus. https://weblogs.asp.net/infinitiesloop/truly-understanding-viewstate
Afin de faire une comparaison valide entre MVC et WebForms, nous devons nous assurer que les deux applications utilisent correctement les architectures.
la source
Mes tests montrent quelque chose entre 2x et 7x plus de req / s sur MVC, mais cela dépend de la manière dont vous créez votre application de formulaires Web. Avec juste du texte "bonjour le monde" dessus, sans aucun contrôle côté serveur, mvc est environ 30 à 50% plus rapide.
la source
Pour moi, la véritable amélioration des "performances" dans MVC est l'augmentation de la surface testable de l'application. Avec WebForms, de nombreuses applications étaient difficiles à tester. Avec MVC, la quantité de code qui devient testable double fondamentalement. Fondamentalement, tout ce qui n'est pas facilement testable est le code qui génère la mise en page. Toute votre logique métier et logique d'accès aux données - y compris la logique qui remplit les données réelles utilisées dans la vue - peut désormais être testée. Même si je m'attends à ce qu'il soit également plus performant - le cycle de vie de la page est grandement simplifié et plus accessible à la programmation Web - même s'il était identique ou un peu plus lent, il serait intéressant de passer d'un point de vue de qualité.
la source
Je pense que le problème ici est que peu importe à quel point ASP.Net MVC est beaucoup plus rapide que les anciens formulaires Web, cela ne fera aucune différence, car la plupart du temps est dans la base de données. La plupart du temps, vos serveurs Web seront assis à une utilisation du processeur de 0 à 10% juste en attente sur votre serveur de base de données. À moins que vous n'obteniez un très grand nombre de visites sur votre site Web et que votre base de données soit extrêmement rapide, vous ne remarquerez probablement pas une grande différence.
la source
Les seuls chiffres concrets que je peux trouver qui proviennent des premiers développements ASP.NET MVC se trouvent sur ce fil de discussion:
http://forums.asp.net/p/1231621/2224136.aspx
Rob Connery lui-même confirme quelque peu la déclaration selon laquelle ScottGu a affirmé qu'ASP.NET MVC peut traiter 8000 requêtes par seconde.
Peut-être que Jeff et son équipe peuvent donner une sorte d'indication sur le développement de ce site.
la source
Contrairement à l'opinion acceptée, l'utilisation optimisée des formulaires Web tue complètement MVC en termes de performances brutes. Webforms a été hyper-optimisé pour la tâche de servir le HTML beaucoup plus longtemps que MVC.
Les métriques sont disponibles sur http://www.techempower.com/benchmarks/#section=data-r7&hw=i7&test=db
Chaque mvc de comparaison se trouve dans les classements inférieur-moyen / inférieur-supérieur de la liste, tandis que l'utilisation optimisée des formulaires Web se situe dans les classements supérieur-moyen / supérieur-inférieur.
Validation anecdotique mais très sérieuse de ces métriques, www.microsoft.com est servi par des formulaires Web et non par MVC. Quelqu'un ici pense-t-il qu'il n'aurait pas choisi MVC s'il avait été empiriquement plus rapide?
la source
Il n'y a vraiment aucun moyen de répondre à cela. MVC utilise le moteur d'affichage Web Forms par défaut lui-même et peut être configuré pour utiliser n'importe quel nombre de moteurs d'affichage personnalisés.Par conséquent, si vous souhaitez une comparaison des performances, vous devrez être plus précis.
la source
J'ai commencé à travailler chez MVC il y a environ un an, j'étais inspiré mais pas impressionné.
Je déteste l'état d'affichage et le considère comme la racine de tout mal en termes d'ASP.NET. C'est pourquoi je ne l'utilise tout simplement pas et pour être parfaitement honnête, pourquoi le feriez-vous?
J'ai essentiellement pris le concept ASP.NET MVC Framework et l'ai construit à ma manière. J'ai cependant changé deux ou trois choses. J'ai construit mon code de wrapping de contrôleur ou code de routage d'URL autour de la recompilation dynamique.
Maintenant, j'irais jusqu'à dire que les applications ASP.NET MVC seront plus rapides en fonction de la façon dont vous les utilisez. Si vous abandonnez complètement WebForms, vous serez plus rapide car le cycle de vie ASP.NET et le modèle objet sont énormes.
Lorsque vous écrivez vous instanciez une armée ... pas d'attente, une légion d'objets qui participeront au rendu de votre vue. Cela sera plus lent que si vous exprimiez le minimum de comportement dans la page ASPX elle-même. (Je ne me soucie pas de l'abstraction du moteur d'affichage car la prise en charge des pages ASPX dans Visual Studio est décente, mais j'ai complètement abandonné WebForms en tant que concept et fondamentalement tout framework ASP.NET en raison de la surcharge du code ou de l'impossibilité de modifier le choses qui filent ma candidature).
J'ai trouvé des moyens de s'appuyer sur la recompilation dynamique (System.Reflection.Emit) pour émettre des objets et du code à usage spécial chaque fois que nécessaire. L'exécution de ce code est plus rapide que la réflexion mais initialement construite via le service de réflexion. Cela a donné à mon framework MVC d'excellentes performances, mais aussi très typé statiquement. Je n'utilise pas de chaînes et de collections de paires nom / valeur. Au lieu de cela, mes services de compilateur personnalisés vont dans une réécriture d'une publication de formulaire à une action de contrôleur en passant un type de référence. Derrière la scène, il se passe beaucoup de choses mais ce code est rapide, beaucoup plus rapide que WebForms ou MVC Framework.
De plus, je n'écris pas d'URL, j'écris des expressions lambda qui sont traduites en URL qui indiquent plus tard quelle action de contrôleur appeler. Ce n'est pas particulièrement rapide, mais il vaut mieux avoir des URL cassées. C'est comme si vous aviez des ressources typées statiquement ainsi que des objets typés statiquement. Une application Web de type statique? C'est ce que je veux!
J'encouragerais plus de gens à essayer ceci.
la source
Les projets créés avec Visual Studio. L'un est le modèle mvc4, un autre est WebForm (tranditional). Et lorsque vous effectuez un test de charge avec WCAT, voici le résultat,
MVC4 est assez lent que WebForms, des idées?
MVC4
WebForms (aspx)
pourrait dépasser 2500 rps
le tueur de performances a été trouvé que c'est un bogue de MVC Bata ou RC. Et les performances seraient améliorées une fois que je supprimerais les éléments de Bundles. Maintenant, la dernière version a corrigé ce problème.
la source
Les performances dépendent de ce que vous faites ... Habituellement, MVC est plus rapide que asp.net principalement parce que Viewstate est absent et parce que MVC fonctionne plus avec Callback qu'avec Postback par défaut.
Si vous optimisez votre page de formulaire Web, vous pouvez avoir les mêmes performances que MVC, mais ce sera beaucoup de travail.
En outre, il y a beaucoup de pépites pour MVC (et aussi pour Webform) pour vous aider à améliorer les performances du site Web, comme combiner et réduire votre css et vos javascripts, regrouper vos images et les utiliser comme sprite, etc.
Les performances du site Web dépendent grandement de votre architecture. Un code propre avec une bonne séparation des préoccupations vous apportera un code plus propre et une meilleure idée de la façon d'améliorer les performances.
Vous pouvez jeter un oeil à ce modèle " Neos-SDI MVC Template " qui créera pour vous une architecture propre avec de nombreuses améliorations de performances par défaut (consultez le site Web MvcTemplate ).
la source
J'ai fait une petite expérience de test de charge VSTS avec du code de base et j'ai trouvé que le temps de réponse d'ASP.NET MVC était deux fois plus rapide que les formulaires Web ASP.NET. Ci-dessus se trouve le graphique ci-joint avec le tracé.
Vous pouvez lire cette expérience de test de charge en détail dans cet article CP https://www.codeproject.com/Articles/864950/ASP-NET-MVC-vs-ASP-NET-WebForm-performance-compari
Le test a été réalisé avec les spécifications ci-dessous à l'aide du logiciel de test de charge VSTS et telerik: -
L'utilisateur charge 25 utilisateurs.
La durée de l'essai était de 10 minutes.
Configuration de la machine DELL 8 Go Ram, Core i3
Le projet était hébergé dans IIS 8.
Le projet a été créé à l'aide de MVC 5.
La connexion réseau LAN a été supposée. Donc, ce test ne tient pas compte du retard du réseau pour le moment.
Navigateur dans le test sélectionné Chrome et Internet Explorer.
Plusieurs lectures ont été effectuées pendant le test pour faire la moyenne d'événements inconnus. 7 lectures où prises et toutes les lectures sont publiées dans cet article comme lecture 1, 2 et ainsi de suite.
la source