Wprowadzenie do usługi Reliable Actors
W tym artykule opisano tworzenie i debugowanie prostej aplikacji Reliable Actor w programie Visual Studio. Aby uzyskać więcej informacji na temat elementów Reliable Actors, zobacz Wprowadzenie do usługi Service Fabric Reliable Actors.
Wymagania wstępne
Przed rozpoczęciem upewnij się, że masz środowisko programistyczne usługi Service Fabric, w tym program Visual Studio, skonfigurowane na maszynie. Aby uzyskać szczegółowe informacje, zobacz , jak skonfigurować środowisko deweloperskie.
Utworzenie nowego projektu w Visual Studio
Uruchom program Visual Studio 2019 lub nowszy jako administrator, a następnie utwórz nowy projekt aplikacji usługi Service Fabric:
W następnym oknie dialogowym wybierz pozycję Usługa aktora w obszarze .NET Core 2.0 i wprowadź nazwę usługi.
Utworzony projekt przedstawia następującą strukturę:
Badanie rozwiązania
Rozwiązanie zawiera trzy projekty:
Projekt aplikacji (MyApplication). Ten projekt pakuje wszystkie usługi razem na potrzeby wdrożenia. Zawiera on skrypty ApplicationManifest.xml i programu PowerShell do zarządzania aplikacją.
Projekt interfejsu (HelloWorld.Interfaces). Ten projekt zawiera definicję interfejsu aktora. Interfejsy aktora można zdefiniować w dowolnym projekcie o dowolnej nazwie. Interfejs definiuje kontrakt aktora, który jest współużytkowany przez implementację aktora i klientów wywołujących aktora. Ponieważ projekty klienckie mogą od niego zależeć, zazwyczaj warto zdefiniować go w zestawie, który jest oddzielony od implementacji aktora.
Projekt usługi aktora (HelloWorld). Ten projekt definiuje usługę Service Fabric, która będzie hostować aktora. Zawiera on implementację aktora, HelloWorld.cs. Implementacja aktora to klasa, która pochodzi z typu
Actor
podstawowego i implementuje interfejsy zdefiniowane w projekcie MyActor.Interfaces . Klasa aktora musi również zaimplementować konstruktor, który akceptujeActorService
wystąpienie i elementActorId
i przekazuje je do klasy bazowejActor
.Ten projekt zawiera również Program.cs, który rejestruje klasy aktorów w środowisku uruchomieniowym usługi Service Fabric przy użyciu polecenia
ActorRuntime.RegisterActorAsync<T>()
. Klasa jest już zarejestrowanaHelloWorld
. Wszelkie dodatkowe implementacje aktorów dodane do projektu muszą być również zarejestrowane w metodzieMain()
.
Dostosowywanie aktora HelloWorld
Szablon projektu definiuje niektóre metody w interfejsie IHelloWorld
i implementuje je w implementacji aktora HelloWorld
. Zastąp te metody, aby usługa aktora zwracała prosty ciąg "Hello World".
W projekcie HelloWorld.Interfaces w pliku IHelloWorld.cs zastąp definicję interfejsu w następujący sposób:
public interface IHelloWorld : IActor
{
Task<string> GetHelloWorldAsync();
}
W projekcie HelloWorld w HelloWorld.cs zastąp całą definicję klasy w następujący sposób:
[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!");
}
}
Naciśnij Ctrl-Shift-B , aby skompilować projekt i upewnić się, że wszystko jest kompilowane.
Dodawanie klienta
Utwórz prostą aplikację konsolową w celu wywołania usługi aktora.
Kliknij prawym przyciskiem myszy rozwiązanie w Eksplorator rozwiązań >Dodaj>nowy projekt....
W obszarze typy projektów platformy .NET Core wybierz pozycję Aplikacja konsolowa (.NET Core). Nadaj projektowi nazwę ActorClient.
Uwaga
Aplikacja konsolowa nie jest typem aplikacji, której zwykle używa się jako klienta w usłudze Service Fabric, ale ułatwia debugowanie i testowanie przy użyciu lokalnego klastra usługi Service Fabric.
Aplikacja konsolowa musi być aplikacją 64-bitową, aby zachować zgodność z projektem interfejsu i innymi zależnościami. W Eksplorator rozwiązań kliknij prawym przyciskiem myszy projekt ActorClient, a następnie kliknij polecenie Właściwości. Na karcie Kompilacja ustaw wartość Docelowa platformy na x64.
Projekt klienta wymaga pakietu NuGet reliable actors. Kliknij pozycję Narzędzia>Menedżer pakietów NuGet>Konsola menedżera pakietów. W konsoli Menedżer pakietów wprowadź następujące polecenie:
Install-Package Microsoft.ServiceFabric.Actors -IncludePrerelease -ProjectName ActorClient
Pakiet NuGet i wszystkie jego zależności są instalowane w projekcie ActorClient.
Projekt klienta wymaga również odwołania do projektu interfejsów. W projekcie ActorClient kliknij prawym przyciskiem myszy pozycję Zależności, a następnie kliknij polecenie Dodaj odwołanie do projektu.... Wybierz pozycję Rozwiązanie projektów > (jeśli jeszcze nie wybrano), a następnie zaznacz pole wyboru obok pozycji HelloWorld.Interfaces. Kliknij przycisk OK.
W projekcie ActorClient zastąp całą zawartość Program.cs następującym kodem:
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(); } } }
Uruchamianie i debugowanie
Naciśnij F5 , aby skompilować, wdrożyć i uruchomić aplikację lokalnie w klastrze deweloperów usługi Service Fabric. Podczas procesu wdrażania możesz zobaczyć postęp w oknie Dane wyjściowe .
Gdy dane wyjściowe zawierają tekst, aplikacja jest gotowa, można przetestować usługę przy użyciu aplikacji ActorClient. W Eksplorator rozwiązań kliknij prawym przyciskiem myszy projekt ActorClient, a następnie kliknij polecenie Debuguj>nowe wystąpienie. Aplikacja wiersza polecenia powinna wyświetlać dane wyjściowe z usługi aktora.
Napiwek
Środowisko uruchomieniowe usługi Service Fabric Actors emituje niektóre zdarzenia i liczniki wydajności związane z metodami aktora. Są one przydatne w zakresie diagnostyki i monitorowania wydajności.
Następne kroki
Dowiedz się więcej o sposobie używania platformy Service Fabric przez usługę Reliable Actors.