2014-12-29 2 views
8

Gelegentlich stoße ich auf das Konzept von fortsetzungsbasierten Web-Frameworks für Haskell. Was bedeutet das genau?Was sind Haskell Continuation-basierte Web-Framework?

Fortsetzungen, wie ich sie kenne, werden zu Kontrollstrukturen gerühmt. Ich verstehe nicht, wie sie sich auf Web-Sachen beziehen.

Was genau würde die Verwendung von Fortsetzungen geben?

Antwort

5

Ein fortlaufendes Web-Framework invertiert den Steuerungsfluss in einer Webanwendung. Anstatt seitenorientiert zu sein, ist es flussorientiert. Das Anzeigen einer Webseite wird genauso behandelt wie das Anzeigen eines modalen Dialogs in einer Desktop-Anwendung. Der Steuerungsfluss (aus Sicht des Benutzers des Frameworks) besteht darin, dass eine imperative Aktion die Anzeige mehrerer Seiten anfordern kann. Die Fortsetzung, auf die Bezug genommen wird, ist der Rest der Aktion, die der Benutzer gestartet hat.

+0

Wie funktioniert "Die Fortsetzung, auf die Bezug genommen wird, ist der Rest der Aktion, die der Benutzer gestartet hat." macht Sinn, wenn http staatenlos ist. Auch verstehe ich nicht, was Sie meinen, "eine imperative Aktion kann die Anzeige mehrerer Seiten anfordern". – user782220

+0

HTTP ist seit der Erfindung von Cookies nicht mehr staatenlos. – Carl

+0

So bedeutet der Sinn einer Fortsetzung hier nicht, dass ein Lambda, das eine suspendierte Berechnung darstellt, bis zur nächsten relevanten Aktion im Speicher gespeichert wird. Irgendwie wird der Cookie verwendet, um etwas zu erstellen, wo die letzte Anfrage endete? – user782220

4

Das kanonische fortsetzungsbasierte Webframework für Haskell ist venerable WASH system.

Die Idee besteht darin, den Status in der Fortsetzung zu erfassen, wodurch vollständig REST-konforme, zustandslose Web-Apps ermöglicht werden, die in einigen Fällen automatisch aus der nicht-fortsetzungsbasierten Version des Programms generiert werden können.

Von "WASH/CGI: Server-side Web Scripting with Sessions and Typed, Compositional Forms": (2001):

Die Hauptidee ist es, eine Fortsetzung zu verwenden, um eine Momentaufnahme des Zustands des Skripts zu nehmen, nachdem Sie das Formular an den Browser gesendet wird. Diese Fortsetzung ist dann auf dem Server gespeichert und das Formular enthält einen Schlüssel für später Abruf der Fortsetzung.

Eine moderne Beschreibung des Ansatzes ist in the MFlow Monad Reader Übersicht gegeben.

Verwandte Themen