Introdução ao Reliable ActorsGetting started with Reliable Actors

Este artigo orienta a criação e a depuração de um aplicativo simples de ator confiável no Visual Studio.This article walks through creating and debugging a simple Reliable Actor application in Visual Studio. Para obter mais informações sobre Reliable Actors, consulte introdução ao Service Fabric Reliable Actors.For more information on Reliable Actors, see Introduction to Service Fabric Reliable Actors.

Pré-requisitosPrerequisites

Antes de começar, verifique se você tem o ambiente de desenvolvimento Service Fabric, incluindo o Visual Studio, configurado no seu computador.Before you start, ensure that you have the Service Fabric development environment, including Visual Studio, set up on your machine. Para obter detalhes, consulte como configurar o ambiente de desenvolvimento.For details, see how to set up the development environment.

Criar um novo projeto no Visual StudioCreate a new project in Visual Studio

Inicie o Visual Studio 2019 ou posterior como administrador e, em seguida, crie um novo projeto de aplicativo Service Fabric :Launch Visual Studio 2019 or later as an administrator, and then create a new Service Fabric Application project:

Ferramentas de Service Fabric para Visual Studio – novo projeto

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.In the next dialog box, choose Actor Service under .NET Core 2.0 and enter a name for the service.

Modelos de projeto Service Fabric

O projeto criado mostra a seguinte estrutura:The created project shows the following structure:

Estrutura do projeto Service Fabric

Examinar a soluçãoExamine the solution

A solução contém três projetos:The solution contains three projects:

  • O projeto de aplicativo (MyApplication) .The application project (MyApplication). Este projeto empacota todos os serviços juntos para implantação.This project packages all of the services together for deployment. Ele contém os scripts ApplicationManifest. xml e PowerShell para gerenciar o aplicativo.It contains the ApplicationManifest.xml and PowerShell scripts for managing the application.

  • O projeto de interface (HelloWorld. Interfaces) .The interface project (HelloWorld.Interfaces). Este projeto contém a definição de interface para o ator.This project contains the interface definition for the actor. As interfaces de ator podem ser definidas em qualquer projeto com qualquer nome.Actor interfaces can be defined in any project with any name. A interface define o contrato de ator que é compartilhado pela implementação do ator e os clientes que chamam o ator.The interface defines the actor contract that is shared by the actor implementation and the clients calling the actor. Como os projetos de cliente podem depender dele, normalmente faz sentido defini-lo em um assembly separado da implementação do ator.Because client projects may depend on it, it typically makes sense to define it in an assembly that is separate from the actor implementation.

  • O projeto de serviço de ator (HelloWorld) .The actor service project (HelloWorld). Esse projeto define o serviço de Service Fabric que vai hospedar o ator.This project defines the Service Fabric service that is going to host the actor. Ele contém a implementação do ator, HelloWorld.cs.It contains the implementation of the actor, HelloWorld.cs. Uma implementação de ator é uma classe derivada do tipo Actor base e implementa as interfaces definidas no projeto MyActor . interfaces .An actor implementation is a class that derives from the base type Actor and implements the interfaces defined in the MyActor.Interfaces project. Uma classe de ator também deve implementar um construtor que aceite ActorService uma instância e ActorId um e as passe para a Actor classe base.An actor class must also implement a constructor that accepts an ActorService instance and an ActorId and passes them to the base Actor class.

    Esse projeto também contém Program.cs, que registra as classes de ator com o tempo ActorRuntime.RegisterActorAsync<T>()de execução Service Fabric usando.This project also contains Program.cs, which registers actor classes with the Service Fabric runtime using ActorRuntime.RegisterActorAsync<T>(). A HelloWorld classe já está registrada.The HelloWorld class is already registered. Todas as implementações de ator adicionais adicionadas ao projeto também devem ser Main() registradas no método.Any additional actor implementations added to the project must also be registered in the Main() method.

Personalizar o ator HelloWorldCustomize the HelloWorld actor

O modelo de projeto define alguns métodos na IHelloWorld interface e os implementa na implementação HelloWorld do ator.The project template defines some methods in the IHelloWorld interface and implements them in the HelloWorld actor implementation. Substitua esses métodos para que o serviço de ator retorne uma cadeia de caracteres "Olá, Mundo" simples.Replace those methods so the actor service returns a simple "Hello World" string.

No projeto HelloWorld. interfaces , no arquivo IHelloWorld.cs , substitua a definição da interface da seguinte maneira:In the HelloWorld.Interfaces project, in the IHelloWorld.cs file, replace the interface definition as follows:

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

No projeto HelloWorld , no HelloWorld.cs, substitua a definição de classe inteira da seguinte maneira:In the HelloWorld project, in HelloWorld.cs, replace the entire class definition as follows:

[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 verificar se tudo está compilado.Press Ctrl-Shift-B to build the project and make sure everything compiles.

Adicionar um clienteAdd a client

Crie um aplicativo de console simples para chamar o serviço de ator.Create a simple console application to call the actor service.

  1. Clique com o botão direito do mouse na solução em Gerenciador de soluções > Adicionar > novo projeto... .Right-click on the solution in Solution Explorer > Add > New Project....

  2. Nos tipos de projeto do .NET Core , escolha aplicativo de console (.NET Core) .Under the .NET Core project types, choose Console App (.NET Core). Nomeie o projeto ActorClient.Name the project ActorClient.

    Caixa de diálogo Adicionar novo projeto

    Nota

    Um aplicativo de console não é o tipo de aplicativo que você normalmente usaria como um cliente no Service Fabric, mas ele cria um exemplo conveniente para depuração e teste usando o cluster de Service Fabric local.A console application is not the type of app you would typically use as a client in Service Fabric, but it makes a convenient example for debugging and testing using the local Service Fabric cluster.

  3. O aplicativo de console deve ser um aplicativo de 64 bits para manter a compatibilidade com o projeto de interface e outras dependências.The console application must be a 64-bit application to maintain compatibility with the interface project and other dependencies. Em Gerenciador de Soluções, clique com o botão direito do mouse no projeto ActorClient e clique em Propriedades.In Solution Explorer, right-click the ActorClient project, and then click Properties. Na guia Compilar , defina o destino da plataforma como x64.On the Build tab, set Platform target to x64.

    Propriedades da compilação

  4. O projeto cliente requer o pacote NuGet dos Reliable Actors.The client project requires the reliable actors NuGet package. clique em Ferramentas > Gestor de Pacotes NuGet > Consola de Gestor de Pacotes.Click Tools > NuGet Package Manager > Package Manager Console. No console do Gerenciador de pacotes, digite o seguinte comando:In the Package Manager Console, enter the following command:

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

    O pacote NuGet e todas as suas dependências são instalados no projeto ActorClient.The NuGet package and all its dependencies are installed in the ActorClient project.

  5. O projeto cliente também requer uma referência ao projeto interfaces.The client project also requires a reference to the interfaces project. No projeto ActorClient, clique com o botão direito do mouse em dependências e clique em Adicionar referência.. .. Selecione projetos > solução (se ainda não estiver selecionada) e, em seguida, marque a caixa de seleção ao lado de HelloWorld. interfaces.In the ActorClient project, right-click Dependencies and then click Add reference.... Select Projects > Solution (if not already selected), and then tick the checkbox next to HelloWorld.Interfaces. Clique em OK.Click OK.

    Caixa de diálogo Adicionar referência

  6. No projeto ActorClient, substitua todo o conteúdo de Program.cs pelo código a seguir:In the ActorClient project, replace the entire contents of Program.cs with the following 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();
            }
        }
    }
    

Executando e DepurandoRunning and debugging

Pressione F5 para compilar, implantar e executar o aplicativo localmente no cluster de desenvolvimento Service Fabric.Press F5 to build, deploy, and run the application locally in the Service Fabric development cluster. Durante o processo de implantação, você pode ver o progresso na janela de saída .During the deployment process, you can see the progress in the Output window.

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

Quando a saída contém o texto, o aplicativo está pronto, é possível testar o serviço usando o aplicativo ActorClient.When the output contains the text, The application is ready, it's possible to test the service using the ActorClient application. Em Gerenciador de soluções, clique com o botão direito do mouse no projeto ActorClient e clique em depurar > Iniciar nova instância.In Solution Explorer, right-click on the ActorClient project, then click Debug > Start new instance. O aplicativo de linha de comando deve exibir a saída do serviço de ator.The command line application should display the output from the actor service.

Saída do aplicativo

Dica

O tempo de execução de Service Fabric atores emite alguns eventos e contadores de desempenho relacionados aos métodos de ator.The Service Fabric Actors runtime emits some events and performance counters related to actor methods. Eles são úteis no diagnóstico e no monitoramento de desempenho.They are useful in diagnostics and performance monitoring.

Passos SeguintesNext steps

Saiba mais sobre como Reliable Actors usar a plataforma Service Fabric.Learn more about how Reliable Actors use the Service Fabric platform.