Приступая к работе с Reliable Actors

В этой статье описывается создание и отладка простого приложения Reliable Actor в Visual Studio. Дополнительные сведения о Reliable Actors см. в статье Общие сведения о надежных субъектах Service Fabric.

Предварительные требования

Приступая к работе, убедитесь, что на вашем компьютере установлена и настроена среда разработки Service Fabric, включая Visual Studio. Дополнительные сведения см. в разделе Подготовка среды разработки в Linux.

Создание проекта в Visual Studio

Запустите Visual Studio 2019 или более поздней версии от имени администратора и создайте проект приложения Service Fabric.

Средства Service Fabric для Visual Studio — новый проект

В следующем диалоговом окне выберите Служба субъекта в разделе .NET Core 2.0 и введите имя службы.

Шаблоны проекта Service Fabric

Структура созданного проекта приведена ниже.

Структура проекта Service Fabric

Изучение решения

Это решение содержит три проекта:

  • Проект приложения (MyApplication). В этом проекте упакованы все службы для последующего развертывания. Проект содержит файл ApplicationManifest.xml и сценарии PowerShell для управления приложением.

  • Проект интерфейса (HelloWorld.Interfaces). Этот проект содержит определение интерфейса субъекта. Интерфейсы субъекта могут определяться в любом проекте с любым именем. Интерфейс определяет контракт субъекта, который совместно используется реализацией субъекта и клиентами, вызывающими этот субъект. Так как проекты клиента могут зависеть от него, обычно имеет смысл определить интерфейс в сборке, отличной от реализации субъекта.

  • Проект службы субъекта (HelloWorld). Этот проект используется для определения службы Service Fabric, в которой будет размещен субъект. Он содержит реализацию субъекта, HelloWorld.cs. Реализация субъекта — это класс, производный от базового типа Actor. Он реализует интерфейсы, определенные в проекте MyActor.Interfaces. Класс актера также должен реализовать конструктор, принимающий экземпляр ActorService и ActorId и передающий их в базовый класс Actor.

    Этот проект также содержит файл Program.cs, который регистрирует классы субъекта в среде выполнения Service Fabric с помощью ActorRuntime.RegisterActorAsync<T>(). Класс HelloWorld уже зарегистрирован. Все дополнительные реализации субъектов, добавляемые в проект, также должны быть зарегистрированы в методе Main().

Настройка субъекта HelloWorld

Шаблон проекта определяет некоторые методы в интерфейсе IHelloWorld и реализует их в реализации субъекта HelloWorld. Замените эти методы таким образом, чтобы служба субъекта возвращала простую строку "Hello World".

В проекте HelloWorld.Interfaces в файле IHelloWorld.cs замените определение интерфейса следующим образом.

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

В проекте HelloWorld в файле HelloWorld.cs замените все определение класса следующим образом.

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

Нажмите клавиши CTRL+SHIFT+B, чтобы выполнить сборку проекта и убедиться, что все скомпилировалось.

Добавление клиента

Создайте простое консольное приложение для вызова службы субъекта.

  1. В обозревателе решений щелкните решение правой кнопкой мыши и выберите >Добавить>Новый проект.

  2. В разделе типов проектов .NET Core выберите Консольное приложение (.NET Core). Назовите проект ActorClient.

    Диалоговое окно

    Примечание

    Как правило, консольное приложение не используется в качестве клиента в Service Fabric, но оно является удобным примером для отладки и тестирования с помощью локального кластера Service Fabric.

  3. Консольное приложение должно быть 64-разрядным, чтобы обеспечить совместимость с проектом интерфейса и другими зависимостями. В обозревателе решений щелкните правой кнопкой мыши проект ActorClient и выберите Свойства. На вкладке Сборка для параметра Целевая платформа выберите значение x64.

    Свойства сборки

  4. Для проекта клиента требуется пакет NuGet для Reliable Actors. Выберите Инструменты>Диспетчер пакетов NuGet>Консоль диспетчера пакетов. В консоли диспетчера пакетов введите следующую команду.

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

    Пакет NuGet и все его зависимости будут установлены в проект ActorClient.

  5. В проекте клиента также требуется ссылка на проект интерфейсов. В проекте ActorClient щелкните правой кнопкой мыши элемент Зависимости и выберите команду Добавить ссылку на проект.... Выберите Проекты > Решение (если оно еще не выбрано), а затем установите флажок рядом с HelloWorld.interfaces. Нажмите кнопку ОК.

    Диалоговое окно

  6. В проекте ActorClient замените все содержимое Program.cs следующим кодом.

    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();
            }
        }
    }
    

Выполнение и отладка

Нажмите клавишу F5, чтобы выполнить сборку приложения, развернуть и запустить его локально в кластере Service Fabric разработки. Вы можете следить за ходом развертывания в окне Вывод .

Окно вывода отладки Service Fabric

Если результат содержит текст The application is ready (Приложение готово), то службу можно проверить с помощью приложения ActorClient. В обозревателе решений щелкните правой кнопкой мыши проект ActorClient и выберите Отладка>Запустить новый экземпляр. Приложение командной строки должно отобразить выходные данные из службы субъекта.

Выходные данные приложения

Совет

В среде выполнения субъектов Service Fabric предусмотрены некоторые события и счетчики производительности, связанные с методами субъекта. Они полезны при диагностике и мониторинге производительности.

Дальнейшие действия

Узнайте больше о том, как Reliable Actors использует платформу Service Fabric.