Frage

Ich interessiere mich für Artikel, die haben einige konkrete Informationen über stateless-und stateful-Designs in der Programmierung.Ich bin interessiert, weil ich lernen will, mehr über Sie, aber ich kann wirklich nicht finden, eine gute Artikel darüber.Ich habe gelesen, Dutzende von Artikeln im web, die vage diskutieren das Thema oder sprechen Sie über web-Server und-Sitzungen, die auch 'bout stateful vs. stateless, aber ich bin daran interessiert, stateless vs stateful design von Parametern in der Codierung.Beispiel:Ich habe gehört, dass die BL-Klassen sind staatenlos durch design, entity-Klassen (oder atleast das ist, was ich nenne Sie - wie-Person(id, name, ..)) stateful, etc.

Ich denke, es ist wichtig zu wissen, weil ich glaube, wenn ich es verstehen kann, kann ich besseren code zu schreiben (z.B.Granularität in den Sinn).

Anyways, sehr kurz, hier ist, was ich weiß, 'bout stateful vs. stateless:

Stateful (wie WinForms):Speichert die Daten für die weitere Verwendung, aber die Grenzen der Skalierbarkeit einer Anwendung, weil es ist begrenzt durch CPU-oder Speicher-limits

Stateless (Wie ASP.NET - obwohl ASP versucht stateful mit ViewStates):Nachdem die Aktionen abgeschlossen sind, werden die Daten übertragen, und die Instanz wird übergeben an den thread-pool (Amorph).

Wie Sie sehen können, es ist ziemlich vage und begrenzte Informationen (und sehr fokussiert auf server-Interaktion), also ich wäre wirklich dankbar wenn Sie könnte mich mit etwas mehr lecker bits von Informationen :)

War es hilfreich?

Lösung

Ich schlage vor, Sie starten von a Frage In Stackoverflow, in dem die Vorteile der staatenlosen Programmierung erörtert werden. Dies liegt mehr im Zusammenhang mit funktionaler Programmierung, aber was Sie lesen werden, gilt auch für andere Programmierparadigmen.

Die staatenlose Programmierung hängt mit dem mathematischen Begriff einer Funktion zusammen, die bei der Aufforderung mit denselben Argumenten immer die gleichen Ergebnisse zurückgeben. Dies ist ein Schlüsselkonzept des funktionalen Programmierparadigmas, und ich gehe davon aus, dass Sie in der Lage sein werden, viele relevante Artikel in diesem Bereich zu finden.

Ein weiterer Bereich, den Sie recherchieren können, um mehr Verständnis zu erlangen, sind unruhige Webdienste. Diese sind im Gegensatz zu anderen Web -Technologien, die versuchen, den Zustand zu halten, im Gegensatz zu anderen Web -Technologien. (In der Tat, was Sie sagen, dass ASP.NET staatslos ist, ist nicht korrekt - ASP.NET versucht, den Status mit ViewState zu behalten, und es ist definitiv als staatlich charakterisiert. ASP.NET MVC hingegen ist eine staatenlose Technologie). Es gibt viele Orte, die "Staatenlosigkeit" von erholsamen Webdiensten diskutieren (wie Dies Blog -Spot), aber Sie konnten erneut von einem SO anfangen Frage.

Andere Tipps

Staatenlos bedeutet, dass es keine Erinnerung an die Vergangenheit gibt. Jede Transaktion wird so durchgeführt, als würde sie zum ersten Mal durchgeführt.

Staatsbürgerlich bedeutet, dass es Erinnerung an die Vergangenheit gibt. Frühere Transaktionen werden in Erinnerung bleiben und können die aktuelle Transaktion beeinflussen.

Staatenlos:

// The state is derived by what is passed into the function

function int addOne(int number)
{
    return number + 1;
}

Staatsbürgerlich:

// The state is maintained by the function

private int _number = 0; //initially zero

function int addOne()
{
   _number++;
   return _number;
}

Siehe: https://softwareEngineering.stackexchange.com/questions/101337/whats-the-differenz-between-stateful-andlesselo

Ein stateful app ist eine, die speichert die Informationen darüber, was passiert ist oder geändert werden, denn es fing an zu laufen.Alle öffentlichen Informationen über das, was "mode" ist, oder wie viele Datensätze verarbeitet hat, oder was auch immer, macht es stateful.

Stateless apps, die nicht offenlegen, dass Informationen.Sie geben die gleiche Antwort auf die gleiche Anforderung, Funktion oder Methode aufrufen, zu jeder Zeit.HTTP ist zustandslos in seiner rohen form - wenn Sie einen BEKOMMEN, zu einer bestimmten URL, Sie bekommen (theoretisch) die gleiche Antwort jedes mal.Die Ausnahme ist natürlich, wenn wir anfangen, die statusbehaftete Objekte auf der Oberseite, z.B.mit ASP.NET web apps :) Aber wenn Sie daran denken, eine statische website mit nur HTML-Dateien und Bilder, die Sie werden wissen, was ich meine.

Das Adjektivstatus oder die Staatenlose bezieht sich nur auf den Zustand des Gesprächs, sondern im Zusammenhang mit dem Funktionskonzept, das denselben Ausgang für dieselbe Eingabe liefert. Wenn ja, wäre eine dynamische Webanwendung (mit einer Datenbank dahinter) ein Zustandsdienst, der offensichtlich falsch ist. Vor diesem Hintergrund bin ich, wenn ich die Aufgabe anvertraue, den Konversationszustand in der zugrunde liegenden Technologie (z. m Implementieren eines staatslosen Dienstes. Es ist zu beachten, dass wir auch dann noch unter einem staatenlosen Dienst tätig sind Server), und sind die beiden Endpunkte sozusagen "statend".

Geld übertragenes Online -Formular One -Konto auf ein anderes Konto ist staatlich, da das Erholungskonto Informationen über den Absender enthält. Diese Transaktion übergibt Bargeld von einer Person an eine andere Person und ist st nach Bargeld, da nach dem Geld die Identität des Gebers nicht mit dem Geld da ist.

Nur um die Beiträge anderer hinzuzufügen .... Ein anderer Weg ist ein anderer Weg, es aus einem Webserver und der Sicht einer Parallelität zu betrachten ...

HTTP ist aus einem bestimmten Grund staatslos in der Natur ... im Falle eines Webservers ist es Staatsbürgerlich bedeutet, dass es sich an den "Status" eines Benutzers für ihre letzte Verbindung erinnern müsste und /oder eine offene Verbindung zu einem Antragsteller aufbewahrt. Das wäre sehr teuer und "stressig" in einer Anwendung mit Tausenden von gleichzeitigen Verbindungen ...

Sein staatenlos In diesem Fall hat eine offensichtliche effiziente Verwendung von Ressourcen ... dh eine Verbindung in einer einzigen Instanz von Anfrage und Antwort unterstützt ... kein Overhead, Verbindungen offen zu halten und/oder sich von der letzten Anfrage zu erinnern ...

Wir machen WebApps staatlich, indem wir das staatenlose HTTP -Verhalten überschreiben, indem wir Sitzungsobjekte verwenden. Wenn wir den Sitzungsstatus der Sitzung verwenden, wird wir jedoch nur HTTP verwendet.

Ich hatte den gleichen Zweifel an staatlichem V/S -staatenloser Klassengestaltung und recherchierte. Ich habe gerade fertiggestellt und meine Ergebnisse wurden in veröffentlicht mein Blog

  • Entitätsklassen müssen staatlich sein
  • Die Helfer- / Arbeiterklassen sollten nicht staatlich sein.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top