Wie wird das Darstellermodell verwendet?

18

Ich habe ein bisschen über das Schauspielermodell gelesen, verstehe aber nicht wirklich, wie man Schauspieler in einer realen Situation einsetzt - wie man ein Problem mit ihnen modelliert.

Kann jemand bitte erklären? Ein einfaches Beispiel oder Links zu Beispielen wären sehr willkommen.

Pnutus
quelle
Oder meinst du das Schauspielermodell ?
back2dos
Ich vermute, Sie meinen Agenten, nicht Schauspieler. Wenn ja, sehen Sie sich diesen Wikipedia-Eintrag an: en.wikipedia.org/wiki/Software_agent
DwB
1
Sie spielen die Hauptrolle in Green Lantern und Planet of the Apes, um die Geeks bei / zu unterhalten. Die Geeks wiederum bei /. unterhalte den Rest von uns.
Job
Ich meine das Schauspielermodell und habe meinen Beitrag zur Klärung aktualisiert.
Pnutus

Antworten:

21

Akteure im Sinne von Modellierungsaktionen, Nachrichten usw. sind eine Methode zur Modellierung von Software, die einige nützliche Elemente bereitstellt ...

  1. Akteure können von einem einzigen Thread leben, sodass nicht-thread-sichere / nicht-gleichzeitige Vorgänge ohne viel Locking-Magie stattfinden können. Ein Schauspieler antwortet auf Nachrichten in seinem Posteingang. Wenn Sie möchten, dass ein Befehl verarbeitet wird, senden Sie ihm eine Nachricht und er kümmert sich in der Reihenfolge ihres Eingangs um sie. Genau wie eine normale Warteschlange. Threadsafe ist hier ein Killer und ich benutze es in einer Reihe von Open-Source-Projekten, an denen ich arbeite.

  2. In einigen Sprachen, z. B. in Scala, ist es einfach, akteursbasierten Code in einem einzigen Prozess in ein verteiltes System umzuwandeln, indem die Akteure getrennt und die von ihnen kommunizierten Kanäle in Remotekanäle umgewandelt werden. Dies ändert sich zwischen den Implementierungen dahingehend, wie einfach es ist, aber es ist eine großartige Funktion.

  3. Hilft bei der Fokussierung auf aufgabenbasierte Ereignisse anstatt auf CRUD-Ereignisse. CRUD ist einfach, aber es ist wie die Interaktion mit einem Aktenschrank. Wenn wir in der von uns produzierten Software mehr Wert schaffen können, warum tun wir das dann? Das Verknüpfen mehrerer Aktionen mit einem einzigen "Update" -Befehl in einem aufgabenbasierten System ist nützlicher als nur das Speichern in der Datenbank. Dies betrifft auch Dinge wie CQRS.

Travis
quelle
Vielen Dank für Ihre hilfreiche Antwort und Links. Welche Sprache würdest du empfehlen, um ein besseres Gefühl für Schauspieler zu bekommen?
Pnutus
1
Ich denke, es hängt davon ab, in welchen Sprachen Sie sich wohl fühlen. Scala hat jedoch möglicherweise einige der besten Dokumentationen zu Schauspielern, da es sich um ein Sprachkonzept handelt. Erlang eignet sich hervorragend für Messaging im Allgemeinen, die gesamte Sprache basiert jedoch auf diesem Konzept.
Travis
Ich werde einen Blick auf Scala und Erlang werfen. Ich habe diesen Anfängerleitfaden für Erlang gefunden und werde dort anfangen. Vielen Dank!
Pnutus
+1: Sehr interessant. Wissen Sie, ob es eine C ++ - Bibliothek gibt, die entfernte Akteure implementiert? Ich würde gerne Scala verwenden, aber mein Projekt ist in C ++.
Giorgio
1
Betrachten Sie diese Implementierung des C ++ - Darstellermodells: actor-framework.org
Chen OT
4

Travis 'Antwort ist solide. Wenn Sie über Parallelität sprechen, versuchen Sie, Ressourcenprobleme zu lösen. Parallelität mit Threads und Sperren ist ziemlich leicht zu verwechseln. Das Darstellermodell hilft Ihnen dabei, gleichzeitig ablaufende Teile Ihres Codes als eigenständige Nuggets zu programmieren, die parallel und ohne Abhängigkeit von einem anderen Codeteil ausgeführt werden können. Sie versuchen, Unangenehmes wie Rennbedingungen und Deadlocks zu vermeiden.

Schauspieler sind wie du und ich in diesem Gespräch. Sie können einfach nicht in mein Gehirn greifen und herausfinden, was ich schreibe. Sie gaben mir eine Nachricht mit der Aufschrift "Warum existieren wir?" Ich setzte mich, knirschte ein paar Zahlen und schickte eine Antwort: "Ich denke, deshalb bin ich es." Du konntest nicht sagen, was ich auf meinem eigenen Stück Erde gemacht habe. Der einzige Kontakt, den du mit mir hast, sind die Botschaften, die wir hin und her schicken.

BEARBEITEN:

Sie haben nicht gesagt, in welchen Sprachen Sie sich wohl fühlen, aber Sie haben herausgefunden, ob in Ihrer Sprache eine Schauspielerimplementierung vorhanden ist. Am einfachsten wären vielleicht einige der Schauspieler-Bibliotheken in Python. Aber wahrscheinlich besser zum Lernen wäre Erlang. Die Sprache ist etwas rau, aber sobald Sie die Nuancen überwunden haben, ist es eine gute Sprache.

M15K
quelle
Ich bin nicht sicher, ob die Bearbeitung der Mücke auf mich gerichtet ist, aber meine bevorzugte Waffe ist normalerweise Haskell. Erlang ist definitiv eine gute Sprache. Haskell hat sich traditionell auf CSPs für die Parallelität verlassen, aber es gibt einige Implementierungen von Akteuren.
M15K
-2

Akteure sind ein Element von Anwendungsfalldiagrammen, die jede externe Entität (Benutzer, externes System usw.) darstellen, die auf ein System einwirken kann. Jeder grundlegende Anwendungsfall wird Schauspieler enthalten - googeln Sie einfach "Anwendungsfall" für eine Fülle von Beispielen.

afeygin
quelle
6
Werden diese nicht Strichmännchen genannt ?
Pillmuncher
1
Ich war nicht klar und du hast es falsch verstanden. Ich habe über das Schauspielermodell gesprochen.
Pnutus