9 Stimmen

Ist es möglich, ASP.NET WebForms so zu optimieren, dass es genauso schnell ist wie ASP.NET MVC?

Heutzutage gibt es so viel Hype um ASP.NET MVC, aber die Wahrheit ist, dass ASP.NET Webforms in absehbarer Zeit nicht verschwinden wird. Gibt es eine Möglichkeit für aktuelle Entwickler, ASP.NET Webforms so zu optimieren, dass sie so schnell wie ASP.NET MVC arbeiten?

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

8voto

rick schott Punkte 20895

Es kommt nicht auf die Technologie an, sondern darauf, wie Sie Ihre Anwendung implementieren. Man kann argumentieren, dass ViewState einen Unterschied machen würde, aber das ist auch ein Implementierungsdetail. ViewState ist nicht erforderlich, und man kann es auch auf dem Server belassen. Letzten Endes liefern beide Technologien HTML über HTTP.

8voto

Kelsey Punkte 46346

Führen Sie in Ihrer Seitenrichtlinie folgende Schritte aus:

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

Hauptsächlich das Ausschalten ViewState macht einen Großteil des Unterschieds in der Seitenleistung aus. Wenn Sie die Verwendung von WebForm-Steuerelementen einschränken, wird Ihr HTML-Code viel weniger umfangreich sein, da diese dazu neigen, sehr umfangreichen HTML-Code zu erzeugen.

Auf der anderen Seite ist dies fast so, als würde man einige der großen Vorteile von WebForms wegschneiden. Die Steuerelemente und die Abstrahierung des Zustands durch die Verwendung von ViewState ist einer der Hauptgründe, warum WebForms heute so beliebt ist.

Ich entwickle immer noch viele WebForms und mache auch MVC. Mit Wissen über beide und ihre Stärken wird Ihnen helfen, eine performante app in jedem Rahmen erstellen. Wenn ich eine neue WebForms-Anwendung erstelle, ist das erste, was ich tue, die Seiten in eine Panel stellen Sie sicher, dass Sie deaktivieren ViewState für das gesamte Panel. Wenn ich mich weiterentwickle und eine Verwendung für die ViewState (z. B. um Zeit zu sparen oder Dinge zu vereinfachen) Ich schalte sie von Fall zu Fall ein, damit ich verstehe, warum ich sie benutze, und eine bewusste Entscheidung treffe, den Overhead auf meiner Seite hinzuzufügen.

WebForms können genauso schnell sein wie MVC, wenn Sie Ihre Webanwendung mit Blick auf die Leistung angehen, aber es ist sehr einfach, sie viel langsamer zu machen, wenn Sie die Leistung einfach ignorieren und die Anwendung einfach fertigstellen wollen.

5voto

Nate Punkte 29413

Ein Grund dafür ist der ViewState, neben anderem aufgeblähten Code, der als Teil einer <ASP:TextBox> , usw. Sie sollten sich auf das Seitengewicht konzentrieren.

Wenn alles andere gleich bleibt, ist das der wichtigste Leistungsunterschied, der mir bekannt ist.

3voto

quentin-starin Punkte 25165

Ich habe einen deutlich spürbaren Geschwindigkeitsunterschied festgestellt

Vielleicht sollten Sie zuerst die Leistung auf eine definierbare Weise messen. Wenn Sie dann tatsächlich einen Unterschied feststellen, wird es viel klarer sein, woher dieser Unterschied kommt und wie man ihn überbrücken kann.

3voto

Mathias F Punkte 15112

Es gibt diese eine Sache, die ASP.NET langsam machen kann, die andere erwähnt haben: Viewstate. Dies gilt insbesondere für Ajax-Aufrufe. Der komplette Viewstate wird bei der Verwendung von UpdatePanels gepostet.

Dennoch gibt es eine Sache, die Ihre ASP.NET-Site besser macht als Ihre ASP.NET MVC-Site: Caching. ASP.NET ermöglicht Donut-Caching: Sie können Caching-Regeln auf einer WebControll-Basis definieren. Dies ist in ASP.NET MVC nicht möglich.

Wenn Sie wirklich glauben, dass Sie ein Geschwindigkeitsproblem haben, versuchen Sie, die Flaschenhälse zu finden. Es könnten Datenbankaufrufe sein (verwenden Sie sql-profiler, um dies zu überprüfen), es könnte html-bezogen sein (verwenden Sie yslow) oder es könnte anwendungsbezogen sein (versuchen Sie einen Profiler wie den von redgate).

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X