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.
quelle
Antworten:
Das Protokoll ist möglicherweise zustandslos, aber die App, die Sie schreiben, kann jeden Status beibehalten :)
quelle
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.
quelle
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.
quelle