Introdução aos Reliable Actors
Este artigo explica a criação e depuração de um aplicativo de Reliable Actor simples no Visual Studio. Para mais informações sobre Reliable Actors, consulte Introdução aos Reliable Actors do Service Fabric.
Pré-requisitos
Antes de iniciar, assegure-se de que você tenha o ambiente de desenvolvimento do Service Fabric, incluindo o Visual Studio, configurado em seu computador. Para obter mais detalhes, consulte como configurar o ambiente de desenvolvimento.
Criar um novo projeto no Visual Studio
Inicie o Visual Studio 2019, ou posterior, como um administrador e, em seguida, crie um novo projeto de Aplicativo do Service Fabric:
Na próxima caixa de diálogo, escolha Serviço de Ator em .NET Core 2.0 e insira um nome para o serviço.
O projeto criado mostra a seguinte estrutura:
Examine a solução
A solução contém dois projetos:
Projeto de aplicativo (MyApplication). Este projeto agrupa todos os serviços para implantação. Ele contém os scripts do PowerShell e o ApplicationManifest.xml para gerenciamento do aplicativo.
Projeto de interface (HelloWorld.Interfaces). Este projeto contém a definição de interface para o ator. As interfaces de ator podem ser definidas em qualquer projeto com qualquer nome. A interface define o contrato de ator que é compartilhado pela implementação do ator e os clientes que chamam o ator. Como os projetos de clientes podem depender disso, geralmente faz sentido defini-los em um assembly separado da implementação do ator.
Projeto de serviço de ator (HelloWorld). Esse projeto define o serviço do Service Fabric que vai hospedar o ator. Ele contém a implementação do ator, HelloWorld.cs. Uma implementação de ator é uma classe que deriva do tipo de base
Actor
e implementa as interfaces definidas no projeto MyActor.Interfaces. Uma classe de ator também deve implementar um construtor que aceita uma instânciaActorService
e umActorId
e as passem para a classe de baseActor
.Este projeto também contém Program.cs, que registra classes de ator com o runtime do Service Fabric usando
ActorRuntime.RegisterActorAsync<T>()
. A classeHelloWorld
já está registrada. Todas as implementações de ator adicionais, adicionadas ao projeto, também devem ser registradas no métodoMain()
.
Personalizar o ator HelloWorld
O modelo de projeto define alguns métodos na IHelloWorld
interface e implementa-os na implementação do HelloWorld
. Substitua esses métodos para que o serviço de ator retorne uma cadeia de caracteres "Hello World" simples.
No projeto HelloWorld.Interfaces, no arquivo IHelloWorld.cs, substitua a definição da interface da seguinte maneira:
public interface IHelloWorld : IActor
{
Task<string> GetHelloWorldAsync();
}
No projeto HelloWorld, em HelloWorld.cs, substitua a definição de classe inteira da seguinte maneira:
[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!");
}
}
Pressione Ctrl-Shift-B para compilar o projeto e certificar-se de que tudo é compilado.
Adicionar um cliente
Crie um aplicativo de console simples para chamar o serviço de ator.
Clique com o botão direito do mouse na solução no Gerenciador de Soluções >Adicionar>Novo Projeto....
Nos tipos de projeto .NET Core, selecione Console App (.NET Core). Nomeie o projeto ActorClient.
Observação
Um aplicativo de console não é o tipo de aplicativo que você normalmente usaria como cliente no Service Fabric, mas é um exemplo conveniente para depuração e teste com o cluster do Service Fabric local.
O aplicativo de console deve ser um aplicativo de 64 bits para manter a compatibilidade com o projeto de interface e outras dependências. No Gerenciador de Soluções, clique com o botão direito do mouse no projeto ActorCliente, em seguida, em Propriedades. Na guia Compilar, defina o destino da plataforma para x64.
O projeto de cliente requer o pacote NuGet do Reliable Actors . Clique em Ferramentas>Gerenciador de Pacotes do NuGet>Console do Gerenciador de Pacotes. No Console do Gerenciador de Pacotes, digite o seguinte comando:
Install-Package Microsoft.ServiceFabric.Actors -IncludePrerelease -ProjectName ActorClient
O pacote NuGet e todas as suas dependências estão instaladas no projeto ActorClient.
O projeto de cliente também requer uma referência ao projeto de interfaces. No projeto ActorClient, clique com o botão direito do mouse em Dependências e clique em Adicionar referência de projeto.... Selecione Projetos > Solução (se ainda não estiver selecionada) e, em seguida, marque a caixa de seleção ao lado de HelloWorld.Interfaces. Clique em OK.
No projeto ActorClient, substitua todo o conteúdo de Program.cs com o seguinte código:
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(); } } }
Executar e depurar
Pressione F5 para criar, implantar e executar o aplicativo localmente no cluster de desenvolvimento do Service Fabric. Durante o processo de implantação, você poderá ver o andamento na janela Saída .
Quando a saída contiver o texto, O aplicativo está pronto, será possível testar o serviço usando o aplicativo ActorClient. No Gerenciador de Soluções, clique com o botão direito do mouse no projeto ActorCliente, em seguida, clique em Depurar>Iniciar nova instância. O aplicativo de linha de comando deverá exibir a saída do serviço de ator.
Dica
O runtime dos Atores do Service Fabric emitem alguns eventos e contadores de desempenho relacionados aos métodos de ator. Eles são úteis para diagnóstico e monitoramento de desempenho.
Próximas etapas
Saiba mais sobre como os Reliable Actors usam a plataforma do Service Fabric.