Aan de slag met Reliable Actors
In dit artikel wordt uitgelegd hoe u een eenvoudige Reliable Actor-toepassing in Visual Studio maakt en er fouten in opspoort. Zie Inleiding tot Service Fabric Reliable Actors voor meer informatie over Reliable Actors.
Vereisten
Voordat u begint, moet u ervoor zorgen dat u de Service Fabric-ontwikkelomgeving, inclusief Visual Studio, op uw computer hebt ingesteld. Zie voor meer informatie hoe u de ontwikkelomgeving instelt.
Een nieuw project maken in Visual Studio
Start Visual Studio 2019 of hoger als beheerder en maak vervolgens een nieuw Service Fabric-toepassingsproject :
Kies in het volgende dialoogvenster Actor Service onder .NET Core 2.0 en voer een naam in voor de service.
Het gemaakte project toont de volgende structuur:
De oplossing onderzoeken
De oplossing bevat drie projecten:
Het toepassingsproject (MyApplication). Met dit project worden alle services samen verpakt 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 implementatie van de actor en de clients die de actor aanroepen. Omdat clientprojecten ervan afhankelijk kunnen zijn, is het doorgaans zinvol om deze te definiëren in een assembly die losstaat van de implementatie van de actor.
Het actorserviceproject (HelloWorld). Dit project definieert de Service Fabric-service die als host gaat fungeren voor de actor. 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 eenActorService
instantie en eenActorId
instantie accepteert en deze doorgeeft aan de basisklasseActor
.Dit project bevat ook Program.cs, waarmee actorklassen worden geregistreerd bij de Service Fabric-runtime met behulp van
ActorRuntime.RegisterActorAsync<T>()
. DeHelloWorld
klasse is al geregistreerd. Eventuele extra actor-implementaties die aan het project worden toegevoegd, moeten ook in deMain()
methode worden geregistreerd.
De HelloWorld-actor aanpassen
De projectsjabloon definieert enkele methoden in de IHelloWorld
interface en implementeert deze in de implementatie van de HelloWorld
actor. 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 HelloWorld in 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.
Klik met de rechtermuisknop op de oplossing in Solution Explorer >Add>New Project....
Kies console-app (.NET Core) onder de .NET Core-projecttypen. Noem het project ActorClient.
Notitie
Een consoletoepassing is niet het type app dat u doorgaans 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.
De consoletoepassing moet een 64-bits toepassing zijn om de compatibiliteit met het interfaceproject en andere afhankelijkheden te behouden. Klik in Solution Explorer met de rechtermuisknop op het ActorClient-project en klik vervolgens op Eigenschappen. Stel op het tabblad Bouwen het platformdoel in op x64.
Voor het clientproject is het NuGet-pakket betrouwbare actoren vereist. Klik op Hulpprogramma's>NuGet Package Manager>Package Manager-console. Voer in de Pakketbeheer 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.
Voor het clientproject is ook een verwijzing naar het interfaces-project vereist. Klik in het ActorClient-project met de rechtermuisknop op Afhankelijkheden en klik vervolgens op Projectverwijzing toevoegen.... Selecteer Projectenoplossing > (als dit nog niet is geselecteerd) en schakel het selectievakje naast HelloWorld.Interfaces in. Klik op OK.
Vervang in het ActorClient-project 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, implementeren en uit te voeren in het Service Fabric-ontwikkelcluster. Tijdens het implementatieproces ziet u de voortgang in het venster Uitvoer .
Wanneer de uitvoer de tekst bevat, is de toepassing gereed, is het mogelijk om de service te testen met behulp van de ActorClient-toepassing. Klik in Solution Explorer met de rechtermuisknop op het ActorClient-project en klik vervolgens op Debug>Start new instance. De opdrachtregeltoepassing moet de uitvoer van de actorservice weergeven.
Tip
De Service Fabric Actors-runtime verzendt enkele gebeurtenissen en prestatiemeteritems met betrekking tot actormethoden. Ze zijn handig in diagnostische gegevens en prestatiebewaking.
Volgende stappen
Meer informatie over hoe Reliable Actors het Service Fabric-platform gebruikt.