Erste Schritte mit Reliable Actors

Dieser Artikel führt Sie durch das Erstellen und Debuggen einer einfachen Reliable Actor-Anwendung in Visual Studio. Weitere Informationen zu Reliable Actors finden Sie unter Einführung in Service Fabric Reliable Actors.

Voraussetzungen

Bevor Sie beginnen, vergewissern Sie sich, dass sich das Setup der Entwicklungsumgebung, einschließlich Visual Studio, von Service Fabric auf Ihrem Computer befindet. Weitere Informationen finden Sie unter Einrichten der Entwicklungsumgebung.

Erstellen eines neuen Projekts in Visual Studio

Starten Sie Visual Studio 2019 oder höher als Administrator, und erstellen Sie ein neues Projekt mit einer Service Fabric-Anwendung:

Service Fabric tools for Visual Studio - new project

Wählen Sie im nächsten Dialogfeld unter .NET Core 2.0 die Option Actordienst aus, und geben Sie einen Namen für den Dienst ein.

Service Fabric project templates

Das erstellte Projekt weist die folgende Struktur auf:

Service Fabric project structure

Untersuchen der Lösung

Die Lösung enthält drei Projekte:

  • Das Anwendungsprojekt (MyApplication) . Dieses Projekt fasst alle Dienste für die Bereitstellung zusammen. Es enthält die Datei ApplicationManifest.xml und PowerShell-Skripts zum Verwalten der Anwendung.

  • Das Schnittstellenprojekt (HelloWorld.Interfaces) . Diese Projekt enthält die Schnittstellendefinition für den Actor. Actorschnittstellen können in jedem Projekt mit einem beliebigen Namen definiert werden. Die Schnittstelle definiert den Actorvertrag. Dieser wird von der Actorimplementierung und den Clients, die den Actor aufrufen, gemeinsam genutzt. Da Clientprojekte davon abhängig sein können, ist es in der Regel sinnvoll, ihn in einer Assembly zu definieren, die von der Actorimplementierung getrennt ist.

  • Das Actordienst-Projekt (HelloWorld) . Dieses Projekt definiert den Service Fabric-Dienst zum Hosten des Actors. Es enthält die Implementierung des Akteurs, HelloWorld.cs. Eine Actorimplementierung ist eine Klasse, die vom Basistyp Actor abstammt und die im Projekt MyActor.Interfaces definierten Schnittstellen implementiert. Eine Actor-Klasse muss auch einen Konstruktor implementieren, der eine ActorService-Instanz und eine ActorId akzeptiert und diese an die Actor-Basisklasse übergibt.

    Dieses Projekt enthält außerdem die Datei Program.cs, mit der Actor-Klassen mit der Service Fabric-Laufzeit mithilfe von ActorRuntime.RegisterActorAsync<T>() registriert werden. Die HelloWorld-Klasse ist bereits registriert. Alle zusätzlichen Actorimplementierungen, die dem Projekt hinzugefügt werden, müssen auch in der Main()-Methode registriert werden.

Anpassen des HelloWorld-Actors

Die Projektvorlage definiert einige Methoden in der IHelloWorld-Schnittstelle und implementiert sie in der HelloWorld-Actorimplementierung. Ersetzen Sie diese Methoden, damit der Actordienst eine einfache „Hello World“-Zeichenfolge zurückgibt.

Ersetzen Sie im Projekt HelloWorld.Interfaces in der Datei IHelloWorld.cs die Schnittstellendefinition wie folgt:

public interface IHelloWorld : IActor
{
    Task<string> GetHelloWorldAsync();
}

Ersetzen Sie im Projekt HelloWorld in der Datei HelloWorld.cs die gesamte Klassendefinition wie folgt:

[StatePersistence(StatePersistence.Persisted)]
internal class HelloWorld : Actor, IHelloWorld
{
    public HelloWorld(ActorService actorService, ActorId actorId)
        : base(actorService, actorId)
    {
    }

    public Task<string> GetHelloWorldAsync()
    {
        return Task.FromResult("Hello from my reliable actor!");
    }
}

Drücken Sie STRG+UMSCHALT+B, um das Projekt zu erstellen. Stellen Sie sicher, dass alles kompiliert wird.

Hinzufügen eines Clients

Erstellen Sie eine einfache Konsolenanwendung zum Aufrufen des Actordiensts.

  1. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf die Projektmappe, und wählen Sie dann >Hinzufügen>Neues Projekt aus.

  2. Wählen Sie unter den .NET Core-Projekttypen die Option Konsolenanwendung (.NET Core) aus. Geben Sie dem Projekt den Namen ActorClient.

    Add New Project dialog

    Hinweis

    Eine Konsolenanwendung ist nicht die Art von Anwendung, die Sie normalerweise als Client in Service Fabric verwenden würden, aber sie ist ein praktisches Beispiel für das Debuggen und Testen mit dem lokalen Service Fabric-Cluster.

  3. Die Konsolenanwendung muss eine 64-Bit-Anwendung sein, um die Kompatibilität mit dem Schnittstellenprojekt und anderen Abhängigkeiten aufrechtzuerhalten. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das Projekt ActorClient, und klicken Sie anschließend auf Eigenschaften. Legen Sie auf der Registerkarte Erstellen für die Option Zielplattform den Wert x64 fest.

    Build properties

  4. Das Clientprojekt erfordert das zuverlässige NuGet-Paket „Actors“. Klicken Sie auf Tools>NuGet-Paket-Manager>Paket-Manager-Konsole. Geben Sie in der Paket-Manager-Konsole den folgenden Befehl ein:

    Install-Package Microsoft.ServiceFabric.Actors -IncludePrerelease -ProjectName ActorClient
    

    Das NuGet-Paket und alle abhängigen Elemente werden im Projekt „ActorClient“ installiert.

  5. Das Clientprojekt erfordert auch einen Verweis auf das Schnittstellenprojekt. Klicken Sie im Projekt „ActorClient“ mit der rechten Maustaste auf Abhängigkeiten, und klicken Sie dann auf Verweis hinzufügen. Wählen Sie Projekte > Projektmappe aus (sofern nicht bereits ausgewählt), und aktivieren Sie dann das Kontrollkästchen neben HelloWorld.Interfaces. Klicken Sie auf OK.

    Add reference dialog

  6. Ersetzen Sie im Projekt „ActorClient“ den gesamten Inhalt von Program.cs durch den folgenden Code:

    using System;
    using System.Threading.Tasks;
    using Microsoft.ServiceFabric.Actors;
    using Microsoft.ServiceFabric.Actors.Client;
    using HelloWorld.Interfaces;
    
    namespace ActorClient
    {
        class Program
        {
            static void Main(string[] args)
            {
                IHelloWorld actor = ActorProxy.Create<IHelloWorld>(ActorId.CreateRandom(), new Uri("fabric:/MyApplication/HelloWorldActorService"));
                Task<string> retval = actor.GetHelloWorldAsync();
                Console.Write(retval.Result);
                Console.ReadLine();
            }
        }
    }
    

Ausführen und Debuggen

Drücken Sie F5, um die Anwendung lokal im Service Fabric-Entwicklungscluster zu erstellen, bereitzustellen und auszuführen. Während der Bereitstellung wird der Fortschritt im Fenster Ausgabe angezeigt.

Service Fabric debugging output window

Wenn die Ausgabe den Text Die Anwendung ist fertig enthält, kann der Dienst mithilfe der Anwendung „ActorClient“ getestet werden. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das Projekt ActorClient, und klicken Sie anschließend auf Debuggen>Neue Instanz starten Die Befehlszeilenanwendung sollte die Ausgabe des Actordiensts anzeigen.

Application output

Tipp

Die Service Fabric Actors-Laufzeit gibt einige Ereignisse und Leistungsindikatoren im Zusammenhang mit Actor-Methodenaus. Sie sind hilfreich bei der Diagnose und Leistungsüberwachung.

Nächste Schritte

Erfahren Sie mehr darüber, wie Reliable Actors die Service Fabric-Plattform verwenden.