Приступая к работе с Reliable Actors
В этой статье описывается создание и отладка простого приложения Reliable Actor в Visual Studio. Дополнительные сведения о Reliable Actors см. в статье Общие сведения о надежных субъектах Service Fabric.
Необходимые компоненты
Приступая к работе, убедитесь, что на вашем компьютере установлена и настроена среда разработки Service Fabric, включая Visual Studio. Дополнительные сведения см. в разделе Подготовка среды разработки в Linux.
Создание проекта в Visual Studio
Запустите Visual Studio 2019 или более поздней версии от имени администратора и создайте проект приложения Service Fabric.
В следующем диалоговом окне выберите Служба субъекта в разделе .NET Core 2.0 и введите имя службы.
Структура созданного проекта приведена ниже.
Изучение решения
Это решение содержит три проекта:
Проект приложения (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, чтобы выполнить сборку проекта и убедиться, что все скомпилировалось.
Добавление клиента
Создайте простое консольное приложение для вызова службы субъекта.
В обозревателе решений щелкните решение правой кнопкой мыши и выберите >Добавить>Новый проект.
В разделе типов проектов .NET Core выберите Консольное приложение (.NET Core). Назовите проект ActorClient.
Примечание.
Как правило, консольное приложение не используется в качестве клиента в Service Fabric, но оно является удобным примером для отладки и тестирования с помощью локального кластера Service Fabric.
Консольное приложение должно быть 64-разрядным, чтобы обеспечить совместимость с проектом интерфейса и другими зависимостями. В обозревателе решений щелкните правой кнопкой мыши проект ActorClient и выберите Свойства. На вкладке Сборка для параметра Целевая платформа выберите значение x64.
Для проекта клиента требуется пакет NuGet для Reliable Actors. Выберите Инструменты>Диспетчер пакетов NuGet>Консоль диспетчера пакетов. В консоли диспетчера пакетов введите следующую команду.
Install-Package Microsoft.ServiceFabric.Actors -IncludePrerelease -ProjectName ActorClient
Пакет NuGet и все его зависимости будут установлены в проект ActorClient.
В проекте клиента также требуется ссылка на проект интерфейсов. В проекте ActorClient щелкните правой кнопкой мыши элемент Зависимости и выберите команду Добавить ссылку на проект.... Выберите Проекты > Решение (если оно еще не выбрано), а затем установите флажок рядом с HelloWorld.interfaces. Щелкните OK.
В проекте 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 разработки. Вы можете следить за ходом развертывания в окне Вывод .
Если результат содержит текст The application is ready (Приложение готово), то службу можно проверить с помощью приложения ActorClient. В обозревателе решений щелкните правой кнопкой мыши проект ActorClient и выберите Отладка>Запустить новый экземпляр. Приложение командной строки должно отобразить выходные данные из службы субъекта.
Совет
В среде выполнения субъектов Service Fabric предусмотрены некоторые события и счетчики производительности, связанные с методами субъекта. Они полезны при диагностике и мониторинге производительности.
Следующие шаги
Узнайте больше о том, как Reliable Actors использует платформу Service Fabric.