Ist das Protokoll aufgrund fehlender HTTP-Status nicht für moderne Anwendungen geeignet? [geschlossen]

8

Ich habe von PHP zu ASP.NET gewechselt und arbeite jetzt mit Webformularen in einem ziemlich großen Unternehmen. Ich habe jedoch einige Nachforschungen angestellt, um meine Eindrücke in ASP.NET-Webformulare zu untermauern, und bin zu dem Schluss gekommen, dass Webforms ein Versuch ist, Webanwendungen für diejenigen, die aus der Welt der "Desktop-Programmierung" stammen, einfacher zu schreiben.

Bevor ich WebForms meide, habe ich mich entschlossen, die Anforderungen der von uns geschriebenen Software zu analysieren, und bin auf das Problem der Beibehaltung von Anwendungsstatus im Web gestoßen.

Ich verstehe, dass HTTP ein zustandsloses Protokoll ist und ASP.NET versucht, Zustände mit Sitzungsvariablen, versteckten Feldern und Ansichtszuständen zu simulieren. Nach meinem Verständnis weisen alle oben genannten Punkte Fehler auf und sind keine perfekte Möglichkeit, den Zustand in meinem zu halten Anwendung, aber ich verstehe auch die Notwendigkeit, einen Status auf meiner App zu behalten.

Was die Fragen aufwirft, ist das HTTP wirklich für diese Art von Job geeignet (Anwendungen erstellen, für die ein Status erforderlich ist)? Sind die Tools derzeit für Webentwickler ausreichend? Sind die mit HTML5 verfügbaren neuen Tools im Job wirksam oder sind sie nur Problemumgehungen für die Einschränkungen von HTTP?

Ich liebe es, für das Web zu entwickeln, und ich kenne mich mit dem Web viel besser aus als mit dem Desktop. Ich habe mich schon seit einiger Zeit über diese Sache mit der HTTP-Staatenlosigkeit gewundert und möchte verstehen, ob mir irgendwann etwas fehlt oder ob ich ' Ich habe Recht mit meinen Vorstellungen.

Jonathan dos Santos
quelle
2
Mathew-Foscarini Ich wollte mit dem RFC 2616 antworten, aber ich glaube, ich verstehe Ihren Punkt: Da es sich bei dem http um ein Anforderungsprotokoll handelt, werden keine Status von ihm erwartet, aber vom Server und den Anwendungen sollten die Status auf dem Server bleiben selbst und nicht versuchen, mit Dingen wie dem berüchtigten Viewstate zu simulieren? ist es das?
Jonathan dos Santos
2
@ MathewFoscarini Ich denke, Sie verwirren etwas. Nichts in der Frage würde zu HTML passen, und alles passt gut zu HTTP.
2
@ Delnan Verwirrung ist für mich ein normaler Geisteszustand.
Reactgular
1
HTTP ist ein Übertragungsprotokoll ... außer der Dateiübertragung, welchen Status soll es verfolgen? Ich stimme Matthew zu, Sie verwirren HTTP und HTML. Außerdem ist es ziemlich albern, zu entscheiden, ob es auf einem webbasierten System wie dieser Website der Aufgabe gewachsen ist.
Großmeister
2
Ich denke, das hängt von der Definition von "Staat" ab. Zum einen könnten Sie HTTP-Antwortcodes als Symbol für den Serverstatus betrachten, aber was ist mit der Anwendung? Der Anwendungsstatus liegt nicht im Bereich der HTTP-Spezifikation, wird jedoch von den meisten Webanwendungen benötigt.
NickSuperb

Antworten:

10

Das Protokoll ist möglicherweise zustandslos, aber die App, die Sie schreiben, kann jeden Status beibehalten :)

Napolux
quelle
1
Ich verstehe Ihren Standpunkt, aber sind die aktuellen Technologien dann nicht unter der Aufgabe? Ich bin der Meinung, dass Sitzungsvariablen nicht für große Objekte geeignet sind und dass das Serialisieren oder "Datenbanken" einfach nicht geeignet ist. Bin ich falsch?
Jonathan dos Santos
1
Sie liegen nicht falsch, aber Gott sei Dank sind wir klug genug, um das HTTP-Protokoll für uns ausreichend zu machen. HTTP ist auch so einfach, dass Sie im Grunde alles bauen können, was Sie wollen: Ein Ziegel ist nur ein Ziegel, aber Sie können damit Häuser und Brücken bauen. :) Über Sitzungen sprechen ... Was ist mit Sitzungen, die in Redis oder anderen NoSQL-Datenbanken implementiert sind? flask.pocoo.org/snippets/75 (und viele andere)
Napolux
1
@jonathan - Es gibt einen lokalen Speicher, in dem Sie weit mehr Daten als alles andere in Cookies speichern können.
Rob
@ Rob Aber es ist nur für HTML5 / moderne Browser ...
Napolux
Nun, er sagte "moderne Anwendungen".
Rob
7

HTTP ist sicherlich eine ältere Technologie, die mit dem Web allgegenwärtig geworden ist. Infolgedessen erweitern die Leute diese Technologie, um jetzt mit modernen Web-Apps viele Dinge zu tun, bei denen es den Anschein haben kann, dass die Staatenlosigkeit von HTTP ein Problem ist. Daher sehen Sie viele Annehmlichkeiten wie Ansichtszustände.

Es ist jedoch auch möglich, moderne Web-Apps zustandslos zu codieren. Dies wird häufig bevorzugt. Die RESTful-Webentwicklung basiert auf dieser Idee. Viele Web-APIs, die die Grundlage für moderne Web-Apps bilden, sind wirklich zustandslos und sollten es auch sein. Es ist eine andere Art zu denken und zu entwerfen. Ihre Bedürfnisse können je nach dem, was Sie tun, variieren.

Akira71
quelle
6
Statuslos ist auch einfacher zu skalieren und zwischenzuspeichern.
Reactgular
5

Viele Protokolle sind zustandslos, wenn Sie zur Rohprotokollschicht gelangen. Statefulness ist nicht das Haupthindernis für die Webentwicklung. Das Haupthindernis ist, dass HTTP standardmäßig Sessionless ist. Das heißt, standardmäßig sind eine Reihe von Anforderungen eines Browsers an einen Server nicht miteinander verbunden.

Wir umgehen dies, indem wir Cookies verwenden, um eine Sitzung zu kennzeichnen. Der ASP.NET-Server gibt dem Browser ein Cookie, das es bei nachfolgender Anforderung zurückgibt. Hinter den Kulissen sucht ASP.NET nach diesem Cookie und verbindet es mit der zwischengespeicherten Sitzung (vorausgesetzt, die Sitzung hat keine Zeitüberschreitung).

Von dort aus können andere Daten der Sitzung zugeordnet und verwendet werden, um für jeden Benutzer eine benutzerdefinierte Erfahrung zu erstellen. Webserver und Frameworks sind so gut darin geworden, dass Rich Clients auf dem HTTP-Protokoll aufbauen können. In diesem Fall verwenden Twitter-Clients http für alles, vom Abrufen einer Liste von Freunden und Tweets bis zum Senden von Direktnachrichten an andere Benutzer. (Ich vereinfache etwas, es gibt ein vollständig verbundenes TCP-Streaming-Protokoll, das über Twitter verfügbar ist, aber zum größten Teil ist HTTP der Kern von allem.

HTML ist als adäquate Anzeigetechnologie bis zu einem gewissen Grad an seine Grenzen gestoßen, aber der HTML 5-Standard hat es zusammen mit JavaScript und CSS 3 ermöglicht, umfangreiche Benutzeroberflächen zu erstellen, die mit den Möglichkeiten nativer Clients konkurrieren. Tatsächlich ist HTML 5 so weit gekommen, dass es als native Technologie für Windows 8-Apps unterstützt wird. Mit Bibliotheken wie JQuery für den Client und NodeJS für den Server kann eine Anwendung erstellt werden, die JavaScript für die Logik auf dem Client und Server sowie HTML für die Anzeige und reines HTTP für die Kommunikation verwendet.

Obwohl das Argument in der Vergangenheit, dass HTML / HTTP an seine Grenzen gestoßen ist, möglicherweise einen gewissen Wert hatte, ist dies einfach nicht mehr der Fall.

Michael Brown
quelle