Lektion 1.1 - Schauspieler und ActorSystem

Ursprünglicher Autor: Andrew Skotzko
  • Übersetzung
  • Tutorial
Bild

Und hier sind wir! Willkommen zur ersten Lektion.

In diesem Tutorial erstellen Sie Ihre ersten Schauspieler und lernen die Grundlagen von Akka.NET kennen .

Grundbegriffe / Prämissen




In dieser ersten Lektion lernen Sie die Grundlagen zum Erstellen einer Konsolenanwendung mit Ihrem ersten Darstellersystem und einfachen Darstellern. Wir werden zwei Akteure erstellen, einen zum Lesen von der Konsole und einen zum Schreiben nach einer einfachen Verarbeitung.

Was ist ein Schauspieler?


"Schauspieler" kann man sich tatsächlich als Analogon einer am System beteiligten Person vorstellen. Dies ist ein Objekt, das etwas tun und kommunizieren kann.

Wir gehen davon aus, dass Sie bereits mit der objektorientierten Programmierung (OOP) vertraut sind. Das Darstellermodell ist der objektorientierten Programmierung (OOP) sehr ähnlich, im Darstellermodell sind alle diese Darsteller .


Wiederholen Sie dies ständig für sich selbst: Alle diese sind Schauspieler (alles ist ein Schauspieler) . All dies sind Schauspieler. All dies sind Schauspieler! Stellen Sie sich ein System bei der Entwicklung als eine Hierarchie von Personen vor, in der Aufgaben aufgeteilt und delegiert werden, bis die Aufgabe so klein ist, dass sie von einem Akteur ausgeführt werden kann.

Im Moment schlagen wir vor, wie folgt zu denken: In OOP versuchen Sie, jedem Objekt ein einzelnes, genau definiertes Ziel zu geben, oder? Nun, das Schauspielermodell ist nicht anders, nur werden die Objekte, denen Sie ein bestimmtes Ziel geben, Schauspieler genannt.

Sie können auch lesen: Was ist ein Akka.NET-Schauspieler ?

Wie kommunizieren Schauspieler?


Die Akteure kommunizieren miteinander, genau wie die Menschen, durch Nachrichten. Diese Posts sind nur alte C # -Klassen.

//this is a message!
public class SomeMessage
{
    public int SomeValue {get; set}
}


In der nächsten Lektion werden wir mehr über die Nachricht sprechen. Machen Sie sich also jetzt keine Sorgen. Alles, was Sie wissen müssen, ist, dass Sie Nachrichten mit der Tell () - Methode an einen anderen Schauspieler senden .

//send a string to an actor
someActorRef.Tell("this is a message too!");


Was können Schauspieler tun?


Alles was du schreiben kannst. Wirklich.

Sie programmieren Akteure so, dass sie die empfangenen Nachrichten verarbeiten und alles tun können, um mit ihnen zu arbeiten. Greifen Sie auf die Datenbank zu, schreiben Sie in eine Datei, ändern Sie interne Variablen oder etwas anderes, das Sie benötigen.

Neben der Verarbeitung der empfangenen Nachrichten können Schauspieler auch andere Aufgaben ausführen:

  • Schaffung anderer Akteure
  • Senden von Nachrichten an andere Akteure (z. B. den Absender der aktuellen Nachricht)
  • Ändern Sie Ihr eigenes Verhalten und die Verarbeitung der nächsten Nachrichten, die sie erhalten


Akteure sind von Natur aus asynchron (mehr dazu in zukünftigen Lektionen), und das Akteurmodell sagt nichts darüber aus, welcher der Akteure was oder in welcher Reihenfolge tun soll. Es liegt an dir.

Welche Arten von Schauspielern gibt es?


Alle Schauspieler werden von UntypedActor geerbt , aber machen Sie sich jetzt keine Sorgen. Wir werden später verschiedene Arten von Schauspielern behandeln.

Im ersten Teil werden alle Ihre Schauspieler von UntypedActor geerbt .

Wie können Sie einen Schauspieler erstellen?


Es gibt zwei wichtige Dinge, die Sie beim Erstellen eines Schauspielers wissen müssen:

  • Alle Akteure werden in einem bestimmten Kontext erstellt.
  • Schauspieler brauchen Requisiten zum Erstellen. Requisiten ist nur ein Objekt, das die Formel zum Erstellen dieser Art von Akteur kapselt.


Wir werden uns Props in der dritten Lektion genauer ansehen. Machen Sie sich deshalb jetzt keine Sorgen. Wir haben Props im Quellcode für Sie bereitgestellt. Sie müssen also nur herausfinden, wie Sie mit Props einen Schauspieler erstellen.

Was ist ein ActorSystem?


ActorSystem ist ein Verweis auf das zugrunde liegende System und das Akka.NET-Framework. Alle Akteure leben im Kontext dieses Systems von Akteuren. Sie müssen Ihre ersten Akteure im Zusammenhang mit dieser schaffen ActorSystem

Weise ActorSystem sehr schwere Aufgabe: es nur einen in der App erstellen.

Iiiiii ... lass uns gehen! Sie haben jetzt genug konzeptionelles Material, um zu tauchen und Ihre ersten Schauspieler zu machen.

Übung




Gehen wir tiefer.

Hinweis: Im vorgestellten Code befinden sich Abschnitte mit der Aufschrift „SIE MÜSSEN HIER FÜLLEN“. Suchen Sie diese Bereiche des Codes und füllen Sie sie mit den entsprechenden Funktionen, um das Ziel zu erreichen.


Ein leeres Projekt ausführen


Wechseln Sie zum Ordner DoThis und öffnen Sie WinTail in Visual Studio. Die Lösung besteht aus einer einfachen Konsolenanwendung.

Sie werden diese Lösung im ersten Teil verwenden.

Installieren Sie das neueste Akka.NET-Paket von NuGet


Schreiben Sie in der NuGet-Paketmanager-Konsole den folgenden Befehl:

Install-Package Akka


Dadurch werden die neuesten Akka.NET-Bibliotheken installiert, die Sie zum Kompilieren dieses Beispiels benötigen.
Dann sollten Sie mit Namespace ganz oben in der Datei Program.cs hinzufügen

// in Program.cs
using Akka.Actor;


Erstellen Sie Ihr erstes ActorSystem


Gehen Sie zu Program.cs und fügen Sie die folgende Zeile hinzu:

MyActorSystem = ActorSystem.Create("MyActorSystem");


HINWEIS : Wenn Sie Requisiten , ActorSystem oder ActorRef erstellen , wird das neue Schlüsselwort nur sehr selten angezeigt . Diese Objekte müssen über die in Akka.NET integrierte Methodenfactory erstellt werden. Wenn Sie das neue Schlüsselwort verwenden, machen Sie möglicherweise einen Fehler.


Erstellen Sie ConsoleReaderActor und ConsoleWriterActor


Die Darstellerklassen selbst sind bereits vorhanden, Sie müssen die Objekte jedoch selbst erstellen.

Wieder in Program.cs , fügen Sie einfach unten , wo Sie Ihre einrichten ActorSystem :

var consoleWriterActor = MyActorSystem.ActorOf(Props.Create(() => new ConsoleWriterActor()));
var consoleReaderActor = MyActorSystem.ActorOf(Props.Create(() => new ConsoleReaderActor(consoleWriterActor)));


Lassen Sie ConsoleReaderActor eine Nachricht an ConsoleWriterActor senden


Es ist Zeit, dass Ihre Schauspieler arbeiten.

Dazu müssen Sie

Folgendes tun: 1. Lassen Sie ConsoleReaderActor eine Nachricht an den ConsoleWriterActor-Akteur senden, die den Inhalt enthält, den wir gerade von der Konsole gelesen haben.
// in ConsoleReaderActor.cs
_consoleWriterActor.Tell(read);


2. Lassen Sie ConsoleReaderActor nach dem Senden einer ConsoleWriterActor-Nachricht eine Nachricht an sich selbst senden. Dadurch wird eine Schleife zum Lesen von Konsolenbefehlen erstellt.

// in ConsoleReaderActor.cs
Self.Tell("continue");


3. Senden Sie die erste Nachricht an ConsoleReaderActor, um mit dem Lesen von der Konsole zu beginnen.
// in Program.cs
consoleReaderActor.Tell("start");


Schritt 5: Bauen und Ausführen!


Wenn Sie mit Ihren Änderungen fertig sind, drücken Sie F5, um das Beispiel in Visual Studio zu kompilieren und auszuführen.
Sie müssen so etwas sehen, wenn alles richtig gemacht ist:



Wenn du fertig bist


Vergleichen Sie Ihren Code mit dem Code im Ordner " Completed " ( Abgeschlossen) , um die Anweisungen in diesem Beispiel anzuzeigen.

Jetzt auch beliebt: