Kolumne: Dino talks

Asynchrone Eingabeformulare in ASP.NET MVC
Kommentare

In ASP.NET MVC steht Ihnen eine duale API zur Verfügung, um den Inhalt eines HTML-Formulars abzuschicken. Zum einen können Sie den klassischen browsergesteuerten Übermittlungsvorgang wählen, der die gesamte Seite erneut lädt und aktualisiert, zum anderen können Sie sich für einen AJAX-orientierten Übermittlungsvorgang entscheiden. Das Absenden von Formularen nach der AJAX-Variante umfasst die Verwendung einer spezifischen Formular-HTML-Hilfsklasse, die mit etwas JavaScript-Code die Anforderung verarbeitet. Allgemein sind asynchrone Formulare in ASP.NET MVC einem partiellen Rendering von Webformularen ähnlich, wobei aber eine Reihe wichtiger Unterschiede existieren.

Als Ergebnis der AJAX-Revolution nimmt der prozentuale Anteil von JavaScript-Code in heutigen Webanwendungen ständig zu. Sowohl Microsoft als auch Drittanbieter warten für die ASP.NET-Entwicklung mit umfangreichen Frameworks auf, die ein JavaScript-Objektmodell herunterladen und Serversteuerelemente bereitstellen, die sowohl Markup als auch Clientcode mithilfe der Funktionalität des Objektmodells ausgeben. Letzten Endes besteht das größte Problem beim Schreiben von interaktiven AJAX-Anwendungen mit ASP.NET nicht in erster Linie darin, Operationen asynchron aufzurufen, sondern eine sich dynamisch ändernde HTML-basierte Benutzeroberfläche zu definieren. In Bezug auf die AJAX-Entwicklung können Sie auf zwei grundlegende Muster zurückgreifen. Am gebräuchlichsten ist das Muster mit browserseitigen Vorlagen (Browser-side Templating, BST), doch auch das HTML-Message-Muster ist weit verbreitet.

Hinsichtlich des Entwurfs bietet das BST-Muster den besten Kompromiss zwischen Leistung und übersichtlicher Struktur. Was die Eleganz des Entwurfs angeht, ist das HTML-Message-Muster zwar weniger attraktiv, doch dafür äußerst effektiv, da es den Code gleichmäßig zwischen Client und Server aufteilt, eine deutlich flachere Lernkurve bedeutet und keinen nennenswerten Aufwand in JavaScript erfordert. Sehen wir uns an, wie es in ASP.NET MVC implementiert ist.

Gedanken zu JSON und HTML-Markup

Das BST-Muster und das HTML-Message-Muster unterscheiden sich vor allem im Typ der Daten, die jede AJAX-Anforderung überträgt. Eine AJAX-Anforderung bewegt JSON-kodierte Daten, wenn Ihre Seite das BST-Muster verwendet. Dagegen bewegt sie reine HTML-Zeichenfolgen, wenn Sie sich für das HTML-Message-Muster entscheiden. Es liegt auf der Hand, dass die Größe der Pakete, die beim BST-Muster zu übertragen sind, insgesamt kleiner ist. Betrachtet man jedoch die beiden Muster in einem größeren Rahmen, sollte man die Kosten einrechnen, die für das Definieren und Aktualisieren der Benutzeroberfläche anfallen. Es ist nicht trivial, komplexe Ansichten – ja selbst ein Raster – zu aktualisieren, wenn Sie dies in JavaScript abwickeln müssen und nur Daten zur Hand haben. Um den Aufwand in Grenzen zu halten, brauchen Sie die Dienste einer Ad-hoc-Bibliothek. Mit dem HTML-Message-Muster gibt die Servermethode, die Sie aufrufen, HTML-Markup statt reiner Daten zurück. Die Nutzdaten sind dann zwar umfangreicher, doch ist es einfacher, die Benutzeroberfläche zu aktualisieren.

Eine JSON-basierte Lösung ist technisch überlegen, doch lässt sich eine HTML-Message-Lösung in der täglichen Praxis wahrscheinlich schneller kodieren. Ich möchte hier nicht den Gewinner feiern, da es keinen Gewinner geben kann, wenn klare Anzeichen für den Kontext und die zu betrachtenden Use Cases fehlen. Dennoch muss das HTML-Message-Muster nicht unbedingt schlechter abschneiden, da es die natürliche Entwicklung des Paradigmas verkörpert, das das Web erfolgreich gemacht hat.

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -