Aan de slag met Reliable Actors

In dit artikel wordt uitgelegd hoe u een eenvoudige Reliable Actor-toepassing in Visual Studio maakt en foutopsporing uitvoert. Zie Introduction to Service Fabric Reliable Actors (Inleiding tot Service Fabric Reliable Actors) voor meer informatie over Reliable Actors.

Vereisten

Voordat u begint, moet u ervoor zorgen dat de Service Fabric-ontwikkelomgeving, inclusief Visual Studio, is ingesteld op uw computer. Zie De ontwikkelomgeving instellen voor meer informatie.

Een nieuw project maken in Visual Studio

Start Visual Studio 2019 of hoger als beheerder en maak vervolgens een nieuw Service Fabric-toepassingsproject :

Service Fabric-hulpprogramma's voor Visual Studio - nieuw project

Kies in het volgende dialoogvenster Actor Service onder .NET Core 2.0 en voer een naam in voor de service.

Service Fabric-projectsjablonen

Het gemaakte project toont de volgende structuur:

Service Fabric-projectstructuur

De oplossing onderzoeken

De oplossing bevat drie projecten:

  • Het toepassingsproject (MyApplication). In dit project worden alle services samengevoegd voor implementatie. Het bevat de ApplicationManifest.xml - en PowerShell-scripts voor het beheren van de toepassing.

  • Het interfaceproject (HelloWorld.Interfaces). Dit project bevat de interfacedefinitie voor de actor. Actorinterfaces kunnen worden gedefinieerd in elk project met elke naam. De interface definieert het actorcontract dat wordt gedeeld door de actor-implementatie en de clients die de actor aanroepen. Omdat clientprojecten hiervan afhankelijk kunnen zijn, is het meestal zinvol om deze te definiëren in een assembly die gescheiden is van de implementatie van de actor.

  • Het actorserviceproject (HelloWorld). Dit project definieert de Service Fabric-service die de actor gaat hosten. Het bevat de implementatie van de actor HelloWorld.cs. Een actor-implementatie is een klasse die is afgeleid van het basistype Actor en de interfaces implementeert die zijn gedefinieerd in het project MyActor.Interfaces . Een actorklasse moet ook een constructor implementeren die een exemplaar en een ActorServiceActorId accepteert en deze doorgeeft aan de basisklasse Actor .

    Dit project bevat ook Program.cs, waarmee actorklassen worden geregistreerd bij de Service Fabric-runtime met behulp van ActorRuntime.RegisterActorAsync<T>(). De HelloWorld klasse is al geregistreerd. Eventuele extra actor-implementaties die aan het project worden toegevoegd, moeten ook worden geregistreerd in de Main() methode.

De HelloWorld-actor aanpassen

De projectsjabloon definieert enkele methoden in de IHelloWorld interface en implementeert deze in de HelloWorld actor-implementatie. Vervang deze methoden zodat de actorservice een eenvoudige tekenreeks 'Hallo wereld' retourneert.

Vervang in het project HelloWorld.Interfaces in het bestand IHelloWorld.cs de interfacedefinitie als volgt:

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

Vervang in het project HelloWorldin HelloWorld.cs de volledige klassedefinitie als volgt:

[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!");
    }
}

Druk op Ctrl+Shift+B om het project te bouwen en zorg ervoor dat alles wordt gecompileerd.

Een client toevoegen

Maak een eenvoudige consoletoepassing om de actorservice aan te roepen.

  1. Klik met de rechtermuisknop op de oplossing in Solution Explorer >Nieuw projecttoevoegen>....

  2. Kies console-app (.NET Core) onder de .NET Core-projecttypen. Noem het project ActorClient.

    Dialoogvenster Nieuw project toevoegen

    Notitie

    Een consoletoepassing is niet het type app dat u normaal gesproken als client in Service Fabric zou gebruiken, maar het is een handig voorbeeld voor foutopsporing en testen met behulp van het lokale Service Fabric-cluster.

  3. De consoletoepassing moet een 64-bits toepassing zijn om compatibiliteit met het interfaceproject en andere afhankelijkheden te behouden. Klik in Solution Explorer met de rechtermuisknop op het project ActorClient en klik vervolgens op Eigenschappen. Stel op het tabblad Bouwenplatformdoel in op x64.

    Build-eigenschappen

  4. Voor het clientproject is het NuGet-pakket met betrouwbare actoren vereist. Klik op Hulpprogramma's>NuGet Package Manager>Package Manager Console. Voer in de Package Manager-console de volgende opdracht in:

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

    Het NuGet-pakket en alle bijbehorende afhankelijkheden worden geïnstalleerd in het ActorClient-project.

  5. Voor het clientproject is ook een verwijzing naar het interfaces-project vereist. Klik in het project ActorClient met de rechtermuisknop op Afhankelijkheden en klik vervolgens op Projectverwijzing toevoegen.... Selecteer Projectoplossing > (als dit nog niet is geselecteerd) en schakel het selectievakje naast HelloWorld.Interfaces in. Klik op OK.

    Dialoogvenster Verwijzing toevoegen

  6. Vervang in het project ActorClient de volledige inhoud van Program.cs door de volgende 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();
            }
        }
    }
    

Uitvoeren en foutopsporing

Druk op F5 om de toepassing lokaal te bouwen, te implementeren en uit te voeren in het Service Fabric-ontwikkelingscluster. Tijdens het implementatieproces kunt u de voortgang zien in het venster Uitvoer .

Uitvoervenster service fabric-foutopsporing

Wanneer de uitvoer de tekst De toepassing is gereed bevat, is het mogelijk om de service te testen met behulp van de ActorClient-toepassing. Klik in Solution Explorer met de rechtermuisknop op het project ActorClient en klik vervolgens op Fouten opsporen>Bij nieuw exemplaar starten. De opdrachtregeltoepassing moet de uitvoer van de actorservice weergeven.

Toepassingsuitvoer

Tip

De Service Fabric Actors-runtime verzendt enkele gebeurtenissen en prestatiemeteritems met betrekking tot actormethoden. Ze zijn nuttig bij diagnostische gegevens en prestatiebewaking.

Volgende stappen

Meer informatie over hoe Reliable Actors het Service Fabric-platform gebruiken.