Introdução ao Reliable Actors

Este artigo explica como criar e depurar uma aplicação Reliable Actor simples no Visual Studio. Para obter mais informações sobre o Reliable Actors, veja Introdução ao Reliable Actors do Service Fabric.

Pré-requisitos

Antes de começar, certifique-se de que tem o ambiente de desenvolvimento do Service Fabric, incluindo o Visual Studio, configurado no seu computador. Para obter detalhes, veja como configurar o ambiente de desenvolvimento.

Criar um novo projeto no Visual Studio

Inicie o Visual Studio 2019 ou posterior como administrador e, em seguida, crie um novo projeto de Aplicação do Service Fabric :

Ferramentas do Service Fabric para Visual Studio – novo projeto

Na caixa de diálogo seguinte, selecione Serviço de Ator em .NET Core 2.0 e introduza um nome para o serviço.

Modelos de projeto do Service Fabric

O projeto criado mostra a seguinte estrutura:

Estrutura do projeto do Service Fabric

Examinar a solução

A solução contém três projetos:

  • O projeto de aplicação (MyApplication). Este projeto empacota todos os serviços em conjunto para implementação. Contém os scriptsApplicationManifest.xml e do PowerShell para gerir a aplicação.

  • O projeto de interface (HelloWorld.Interfaces). Este projeto contém a definição de interface do ator. As interfaces de ator podem ser definidas em qualquer projeto com qualquer nome. A interface define o contrato de ator que é partilhado pela implementação do ator e os clientes que chamam o ator. Uma vez que os projetos cliente podem depender dele, normalmente faz sentido defini-lo numa assemblagem separada da implementação do ator.

  • O projeto de serviço de ator (HelloWorld). Este projeto define o serviço Do Service Fabric que vai alojar o ator. Contém a implementação do ator HelloWorld.cs. Uma implementação de ator é uma classe que deriva do tipo Actor base e implementa as interfaces definidas no projeto MyActor.Interfaces . Uma classe de ator também tem de implementar um construtor que aceite uma ActorService instância e uma ActorId e os transmita para a classe base Actor .

    Este projeto também contém Program.cs, que regista classes de ator com o runtime do Service Fabric com ActorRuntime.RegisterActorAsync<T>(). A HelloWorld classe já está registada. Todas as implementações de ator adicionais adicionadas ao projeto também têm de ser registadas no Main() método .

Personalizar o ator HelloWorld

O modelo de projeto define alguns métodos na IHelloWorld interface e implementa-os na implementação de ator HelloWorld . Substitua esses métodos para que o serviço de ator devolva uma cadeia "Hello World" simples.

No projeto HelloWorld.Interfaces , no ficheiro IHelloWorld.cs , substitua a definição da interface da seguinte forma:

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

No projeto HelloWorld , em HelloWorld.cs, substitua toda a definição de classe da seguinte forma:

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

Prima Ctrl-Shift-B para criar o projeto e certifique-se de que tudo é compilado.

Adicionar um cliente

Crie uma aplicação de consola simples para chamar o serviço de ator.

  1. Clique com o botão direito do rato na solução no Explorador de Soluções >Adicionar>Novo Projeto....

  2. Nos tipos de projeto .NET Core , selecione Aplicação de Consola (.NET Core). Atribua o nome ActorClient ao projeto.

    Caixa de diálogo Adicionar Novo Projeto

    Nota

    Uma aplicação de consola não é o tipo de aplicação que normalmente utilizaria como cliente no Service Fabric, mas é um exemplo conveniente para depurar e testar com o cluster do Service Fabric local.

  3. A aplicação de consola tem de ser uma aplicação de 64 bits para manter a compatibilidade com o projeto de interface e outras dependências. No Explorador de Soluções, clique com o botão direito do rato no projeto ActorClient e, em seguida, clique em Propriedades. No separador Compilar , defina Destino da plataforma como x64.

    Propriedades de compilação

  4. O projeto de cliente requer o pacote NuGet reliable actors. Clique em Ferramentas> Consolado Gestor> dePacotes NuGetGestor de Pacotes. Na Consola do Gestor de Pacotes, introduza o seguinte comando:

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

    O pacote NuGet e todas as respetivas dependências estão instalados no projeto ActorClient.

  5. O projeto de cliente também requer uma referência ao projeto de interfaces. No projeto ActorClient, clique com o botão direito do rato em Dependências e, em seguida, clique em Adicionar Referência do Projeto.... Selecione Projetos > Solução (se ainda não estiver selecionado) e, em seguida, marque a caixa de verificação junto a HelloWorld.Interfaces. Clique em OK.

    Caixa de diálogo Adicionar referência

  6. No projeto ActorClient, substitua todo o conteúdo de Program.cs pelo 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();
            }
        }
    }
    

Execução e depuração

Prima F5 para compilar, implementar e executar a aplicação localmente no cluster de desenvolvimento do Service Fabric. Durante o processo de implementação, pode ver o progresso na janela Saída .

Janela de saída de depuração do Service Fabric

Quando a saída contém o texto, a aplicação está pronta, é possível testar o serviço com a aplicação ActorClient. No Explorador de Soluções, clique com o botão direito do rato no projeto ActorClient e, em seguida, clique em Depurar>Iniciar nova instância. A aplicação de linha de comandos deve apresentar o resultado do serviço de ator.

Saída da aplicação

Dica

O runtime do Service Fabric Actors emite alguns eventos e contadores de desempenho relacionados com métodos de ator. São úteis nos diagnósticos e na monitorização do desempenho.

Passos seguintes

Saiba mais sobre como o Reliable Actors utiliza a plataforma do Service Fabric.