Introduzione a Reliable ActorsGetting started with Reliable Actors

Questo articolo illustra le nozioni fondamentali per creare ed eseguire il debug di una semplice applicazione Reliable Actors in Visual Studio.This article walks through creating and debugging a simple Reliable Actor application in Visual Studio. Per altre informazioni su Reliable Actors, vedere Introduzione a Reliable Actors in Service Fabric.For more information on Reliable Actors, see Introduction to Service Fabric Reliable Actors.

PrerequisitiPrerequisites

Prima di iniziare, assicurarsi che nel computer sia configurato l'ambiente di sviluppo di Service Fabric, incluso Visual Studio.Before you start, ensure that you have the Service Fabric development environment, including Visual Studio, set up on your machine. Per informazioni, vedereConfigurare l'ambiente di sviluppo.For details, see how to set up the development environment.

Creare un nuovo progetto in Visual StudioCreate a new project in Visual Studio

Avviare Visual Studio 2015 come amministratore e creare un nuovo progetto di Applicazione di Service Fabric:Launch Visual Studio 2015 or later as an administrator, and then create a new Service Fabric Application project:

Strumenti di Service Fabric per Visual Studio - nuovo progetto

Nella finestra di dialogo successiva scegliere Servizio Actor e immettere un nome per il servizio.In the next dialog box, choose Actor Service and enter a name for the service.

Modelli di progetto di Service Fabric

Il progetto creato avrà la struttura seguente:The created project shows the following structure:

Struttura del progetto di Service Fabric

Esaminare la soluzioneExamine the solution

La soluzione contiene tre progetti:The solution contains three projects:

  • Il progetto di applicazione (MyApplication),The application project (MyApplication). in cui sono inclusi tutti i servizi per la distribuzione.This project packages all of the services together for deployment. Contiene il file ApplicationManifest.xml e gli script di PowerShell per gestire l'applicazione.It contains the ApplicationManifest.xml and PowerShell scripts for managing the application.

  • Il progetto dell'interfaccia (HelloWorld.Interfaces),The interface project (HelloWorld.Interfaces). in cui è inclusa la definizione dell'interfaccia per l'attore.This project contains the interface definition for the actor. Le interfacce dell'attore possono essere definite in qualsiasi progetto con qualsiasi nome.Actor interfaces can be defined in any project with any name. L'interfaccia definisce il contratto dell'attore che è condiviso dall'implementazione dell'attore e dai client che chiamano l'attore.The interface defines the actor contract that is shared by the actor implementation and the clients calling the actor. Poiché da essa dipendono i progetti client, in genere si consiglia di definirla in un assembly separato dall'implementazione dell'attore.Because client projects may depend on it, it typically makes sense to define it in an assembly that is separate from the actor implementation.

  • Il progetto di servizio Actor (HelloWorld),The actor service project (HelloWorld). usato per definire il servizio di Service Fabric che ospiterà l'attore.This project defines the Service Fabric service that is going to host the actor. Contiene l'implementazione dell'attore, HellowWorld.cs.It contains the implementation of the actor, HellowWorld.cs. L'implementazione di un attore è una classe che deriva dal tipo di base Actor e implementa le interfacce definite nel progetto 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. Una classe attore deve anche implementare un costruttore che accetta un'istanza ActorService e un ActorId e li passa alla classe Actor di 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.

    Questo progetto contiene inoltre Program.cs, che registra le classi attore con il runtime di Service Fabric usando ActorRuntime.RegisterActorAsync<T>().This project also contains Program.cs, which registers actor classes with the Service Fabric runtime using ActorRuntime.RegisterActorAsync<T>(). La classe HelloWorld è già registrata.The HelloWorld class is already registered. Ulteriori implementazioni aggiunte al progetto devono essere registrate nel metodo Main().Any additional actor implementations added to the project must also be registered in the Main() method.

Personalizzare l'attore HelloWorldCustomize the HelloWorld actor

Il modello di progetto definisce alcuni metodi nell'interfaccia IHelloWorld e li implementa nell'implementazione dell'attore HelloWorld.The project template defines some methods in the IHelloWorld interface and implements them in the HelloWorld actor implementation. Sostituire questi metodi in modo che il servizio dell'attore restituisca una semplice stringa "Hello World".Replace those methods so the actor service returns a simple "Hello World" string.

Nel file IHelloWorld.cs del progetto HelloWorld.Interfaces sostituire la definizione dell'interfaccia nel modo seguente:In the HelloWorld.Interfaces project, in the IHelloWorld.cs file, replace the interface definition as follows:

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

Nel file IHelloWorld.cs del progetto HelloWorld sostituire l'intera definizione della classe nel modo seguente: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!");
    }
}

Premere CTRL+MAIUSC+B per compilare il progetto.Press Ctrl-Shift-B to build the project and make sure everything compiles.

Aggiungere un clientAdd a client

Creare una semplice applicazione console per chiamare il servizio attore.Create a simple console application to call the actor service.

  1. In Esplora soluzioni fare clic con il pulsante destro del mouse sulla soluzione e selezionare Aggiungi > Nuovo progetto....Right-click on the solution in Solution Explorer > Add > New Project....

  2. Nei tipi di progetto .NET Core scegliere App console (.NET Core).Under the .NET Core project types, choose Console App (.NET Core). Assegnare al progetto il nome ActorClient.Name the project ActorClient.

    Finestra di dialogo Aggiunta di un nuovo progetto

    Nota

    Un'applicazione console non è il tipo di app che in genere si usa come client in Service Fabric, ma è un esempio utile per il debug e il testing con il cluster Service Fabric locale.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. L'applicazione console deve essere un'applicazione a 64 bit per garantire la compatibilità con il progetto interfaccia e le altre dipendenze.The console application must be a 64-bit application to maintain compatibility with the interface project and other dependencies. In Esplora soluzioni fare clic con il pulsante destro del mouse sul progetto ActorClient e quindi scegliere Proprietà.In Solution Explorer, right-click the ActorClient project, and then click Properties. Nella scheda Buildimpostare Piattaforma di destinazione su x64.On the Build tab, set Platform target to x64.

    Proprietà di compilazione

  4. Il progetto client richiede il pacchetto NuGet di Reliable Actors.The client project requires the reliable actors NuGet package. Fare clic su Strumenti > Gestione pacchetti NuGet > Console di Gestione pacchetti.Click Tools > NuGet Package Manager > Package Manager Console. Nella Console di Gestione pacchetti immettere il comando seguente:In the Package Manager Console, enter the following command:

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

    Assicurarsi che il pacchetto NuGet e tutte le relative dipendenze siano installati nel progetto ActorClient.The NuGet package and all its dependencies are installed in the ActorClient project.

  5. Il progetto client richiede inoltre un riferimento al progetto interfaccia.The client project also requires a reference to the interfaces project. Nel progetto ActorClient fare clic con il pulsante destro del mouse su Dipendenze e quindi scegliere Aggiungere riferimento.... Se l'opzione non è già selezionata, selezionare Progetti > Soluzione e quindi selezionare la casella di controllo accanto a 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. Fare clic su OK.Click OK.

    Finestra di dialogo Aggiunta riferimento

  6. Nel progetto ActorClient sostituire l'intero contenuto del file Program.cs con il codice seguente: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();
            }
        }
    }
    

Esecuzione e debugRunning and debugging

Premere F5 per compilare, distribuire ed eseguire l'applicazione in locale nel cluster di sviluppo di Service Fabric.Press F5 to build, deploy, and run the application locally in the Service Fabric development cluster. Durante il processo di distribuzione è possibile visualizzare lo stato di avanzamento nella finestra Output .During the deployment process, you can see the progress in the Output window.

Finestra di output del debug di Service Fabric

Quando l'output contiene il testo L'applicazione è pronta, è possibile testare il servizio usando l'applicazione ActorClient.When the output contains the text, The application is ready, it's possible to test the service using the ActorClient application. In Esplora soluzioni fare clic con il pulsante destro del mouse sul progetto ActorClient e quindi scegliere Debug > Avvia nuova istanza.In Solution Explorer, right-click on the ActorClient project, then click Debug > Start new instance. L'applicazione della riga di comando dovrebbe visualizzare l'output del servizio dell'attore.The command line application should display the output from the actor service.

Output dell'applicazione

Suggerimento

Il runtime Actors di Service Fabric emette alcuni eventi e contatori delle prestazioni correlati ai metodi degli attori,The Service Fabric Actors runtime emits some events and performance counters related to actor methods. che sono utili per la diagnostica e il monitoraggio delle prestazioni.They are useful in diagnostics and performance monitoring.

Passaggi successiviNext steps

Acquisire altre informazioni con Descrizione del modo in cui Reliable Actors usa la piattaforma Service Fabric.Learn more about how Reliable Actors use the Service Fabric platform.