Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье описывается создание и отладка простого приложения Reliable Actor в Visual Studio. Дополнительные сведения о надежных акторах см. в разделе «Общие сведения о надежных акторах Service Fabric».
Предпосылки
Прежде чем начать, убедитесь, что на компьютере настроена среда разработки Service Fabric, включая Visual Studio. Дополнительные сведения см. в статье о настройке среды разработки.
Создание проекта в Visual Studio
Запустите Visual Studio 2019 или более поздней версии от имени администратора и создайте проект приложения Service Fabric :
В следующем диалоговом окне выберите Actor Service в разделе .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 надежных субъектов. Выберите Инструменты>Диспетчер пакетов 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. Во время процесса развертывания можно увидеть ход выполнения в окне вывода .
Когда выходные данные содержат текст, приложение готово, можно протестировать службу с помощью приложения ActorClient. В обозревателе решений щелкните правой кнопкой мыши проект ActorClient , а затем нажмите кнопку "Отладка>запуска нового экземпляра". Приложение командной строки должно отображать выходные данные из актерной службы.
Подсказка
Среда выполнения Actors Service Fabric выдает некоторые события и счетчики производительности, связанные с методами акторов. Они полезны в диагностике и мониторинге производительности.
Дальнейшие действия
Узнайте больше о том, как Надежные субъекты используют платформу Service Fabric.