2010-07-13 7 views
8

Es gibt so viel Hype um ASP.NET MVC in diesen Tagen, aber die Wahrheit ist, dass ASP.NET-Webforms für längere Zeit nirgendwohin geht. Gibt es eine Möglichkeit für aktuelle Entwickler, ASP.NET-Webforms so schnell wie ASP.NET MVC zu optimieren?Ist es möglich, ASP.NET-WebForms so schnell wie ASP.NET MVC zu optimieren?

Ich habe einen signifikanten Unterschied in der Geschwindigkeit zwischen ASP.NET MVC und ASP.NET Webforms festgestellt. MVC ist viel schneller und lädt Seiten schneller als Webforms. Kann ich dasselbe mit ASP.NET-Webformularen erreichen, indem ich es optimiere? Wenn ja, was würden Sie empfehlen?

+1

Citation benötigt? "ziemlich wahrnehmbar" ist kein starker Hinweis darauf, dass etwas optimiert werden muss. – jfar

Antwort

6

In Ihrer Seite Direktive Sie wie folgt vor:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" 
    Inherits="TestApp._Default" EnableViewState="false" %> 

Hauptsächlich eine Mehrheit der Unterschied in der Leistung Seite bilden Ausschalten ViewState wird. Wenn Sie auch die Verwendung von WebForm-Steuerelementen einschränken, wird Ihr HTML-Code viel weniger ausführlich dargestellt, da sie dazu neigen, sehr ausführlichen HTML-Code zu produzieren.

Auf der anderen Seite ist dies fast so, als würden einige der großen Vorteile von WebForms wegfallen. Die Steuerelemente und die Zusammenfassung des Status mithilfe von ViewState sind einige der Hauptgründe, warum WebForms heute so beliebt ist.

Ich mache eine Menge WebForms Entwicklung noch und MVC auch. Das Wissen über beide und ihre Stärken wird Ihnen helfen, eine performante App in beiden Frameworks zu erstellen. Wenn ich eine neue WebForms-Anwendung erstelle, passe ich zuerst die Seiten in eine Panel an und vergewissere mich, dass ViewState für das gesamte Panel deaktiviert ist. Während ich entwickle, und ich finde eine Verwendung für die ViewState (zB um mir Zeit zu sparen oder Dinge zu vereinfachen), schalte ich es von Fall zu Fall, damit ich verstehe, warum ich es benutze und eine bewusste Entscheidung treffe, um den Overhead zu meiner Seite hinzuzufügen .

WebForms können genauso schnell sein wie MVC, wenn Sie Ihre Webanwendung mit Leistung betrachten, aber es ist sehr einfach, es viel langsamer zu machen, wenn Sie die Leistung einfach ignorieren und die App einfach fertig machen wollen.

5

Ein Grund dafür ist wegen ViewState, neben anderen aufgeblähten Code gerendert als Teil einer <ASP:TextBox>, etc. Sie sollten sich auf die Seitengewichtung konzentrieren.

Alles andere gleich, das ist der Hauptleistungsunterschied, den ich kenne.

+4

Sie müssen ViewState- oder ASP.NET-Steuerelemente, Implementierungsdetails nicht verwenden. –

+2

Ja, aber die meisten Leute tun, und deshalb scheint MVC schneller, weil es nicht einmal eine Option ist. – Nate

+1

@rick - Wenn Sie keine ASP.NET-Steuerelemente oder ViewState verwenden, verwenden Sie keine WebForms. Das OP fragte nicht nach MVC vs arbeiten auf dem Minimum von ASP.NET. –

3

Ich habe eine ziemlich wahrnehmbaren Unterschied in der Geschwindigkeit bemerkt

Vielleicht sollten Sie richtig Leistung in einer definierbaren Weise messen zuerst. Wenn Sie tatsächlich einen Unterschied machen, wird es viel klarer, woher dieser Unterschied kommt und wie Sie diesen Leistungsunterschied überbrücken können.

1

Ist dies ein Fall von zwei verschiedenen Tools für zwei verschiedene Ansätze, um Probleme zu lösen und zu versuchen, sie zu vergleichen?

+0

a.k.a. Äpfel zu Orangen – msarchet

8

Die Technologie spielt keine Rolle, wie Sie Ihre Anwendung implementieren. Man könnte argumentieren, ViewState würde einen Unterschied machen, aber das ist auch ein Implementierungsdetail. ViewState ist nicht erforderlich und Sie können es auch auf dem Server belassen. Am Ende des Tages liefern beide Technologien HTML über HTTP.

+4

... bei verschiedenen Geschwindigkeiten. ;) –

+2

.... zeige mir Beweis mit der gleichen Ausgabe –

+2

Jedes Framework führt einige Pipelinekosten ein (MVC muss Routen analysieren, usw., während WebForms Ereignisse verbinden/hören muss, Kontrollen parsen usw.). Die eigentliche Frage ist, gibt es einen messbaren Unterschied zwischen den Overhead der beiden Frameworks? Wenn das der Fall ist, kann kein Benutzer so schnell wie der andere eine Optimierung vornehmen. –

3

Es gibt diese eine Sache, die ASP.NET verlangsamen kann, dass andere erwähnt: Viewstate. Dies gilt insbesondere für Ajax-Anrufe. Der vollständige Viewstate wird bei Verwendung von UpdatePanels veröffentlicht.

Das besagt, dass es diese eine Sache gibt, die Ihre ASP.NET-Site Ihre ASP.NET MVC-Site übertreffen wird: Caching. ASP.NET ermöglicht das Donut-Caching: Sie können Caching-Regeln auf WebControll-Basis definieren. Sie können dies in ASP.NET MVC nicht tun.

Wenn Sie wirklich eine Geschwindigkeitsproblem haben, versuchen Sie, die Flaschenhals zu finden. Es könnte Datenbankaufrufe sein (sql-profiler prüfen), es könnte html-bezogen sein (yslow verwenden) oder es könnte die Anwendung betreffen (versuche einen Profiler wie den von redgate).

+0

Sie können auf der Partial View-Ebene in MVC zwischenspeichern, und nichts hindert Sie daran, Ihren eigenen Cache auf anderen Ebenen des Frameworks zu schreiben. +1 für die Erwähnung von Datenbankaufrufen als Leistungsengpass. – Ryan

+0

Ich sehe nicht, wie Sie auf einer partiellen Ebene zwischenspeichern können. Http://haacked.com/archive/2008/11/05/donut-caching-in-asp.net-mvc.aspx Aber natürlich können (und sollten) Sie Aufrufe an die Datenbank zwischenspeichern. –

Verwandte Themen