Reliable Actors 시작

이 문서에서는 Visual Studio에서 간단한 Reliable Actor 애플리케이션을 만들고 디버그하는 과정을 안내합니다. Reliable Actors에 대한 자세한 내용은 Service Fabric Reliable Actors 소개를 참조하세요.

필수 조건

시작하기 전에 컴퓨터에 Visual Studio를 비롯한 Service Fabric 개발 환경이 설정되어 있는지 확인합니다. 자세한 내용은 개발 환경 설정 방법을 참조하세요.

Visual Studio에서 새 프로젝트 만들기

관리자 권한으로 Visual Studio 2019 이상을 시작하고 새로운 Service Fabric 애플리케이션 프로젝트를 만듭니다.

Visual Studio용 Service Fabric 도구 - 새 프로젝트

다음 대화 상자에서 .NET Core 2.0 아래의 행위자 서비스를 선택하고 서비스의 이름을 입력합니다.

Service Fabric 프로젝트 템플릿

만든 프로젝트는 다음과 같은 구조를 표시합니다.

Service Fabric 프로젝트 구조

솔루션 검사

솔루션에는 3개의 프로젝트가 포함되어 있습니다.

  • 애플리케이션 프로젝트(MyApplication). 이 프로젝트는 배포를 위해 모든 서비스를 함께 패키지합니다. 애플리케이션을 관리하기 위한 ApplicationManifest.xml 및 PowerShell 스크립트가 포함되어 있습니다.

  • 인터페이스 프로젝트(HelloWorld.Interfaces). 이 프로젝트는 행위자에 대한 인터페이스 정의를 포함합니다. 행위자 인터페이스는 임의 이름의 모든 프로젝트에 정의할 수 있습니다. 인터페이스는 행위자 구현 및 행위자를 호출하는 클라이언트에 의해 공유되는 행위자 계약을 정의합니다. 클라이언트 프로젝트가 의존하므로, 일반적으로 행위자 구현과는 별도의 어셈블리에 정의하는 것이 적절합니다.

  • 행위자 서비스 프로젝트(HelloWorld). 이 프로젝트는 행위자를 호스트할 Service Fabric 서비스를 정의합니다. 행위자의 HelloWorld.cs 구현이 포함되어 있습니다. 행위자 구현은 기본 형식(Actor)에서 파생되는 클래스로서, MyActor.Interfaces 프로젝트에 정의된 인터페이스를 구현합니다. 또한 행위자 클래스는 ActorService 인스턴스 및 ActorId를 허용하고 이를 기본 Actor 클래스에 전달하는 생성자를 구현해야 합니다.

    이 프로젝트에는 ActorRuntime.RegisterActorAsync<T>()를 사용하여 행위자 클래스를 Service Fabric 런타임에 등록하는 Program.cs도 포함되어 있습니다. 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. 클라이언트 프로젝트에는 Reliable Actors NuGet 패키지가 필요합니다. 도구>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 프로젝트를 클릭하고 디버그>새 인스턴스 시작을 클릭합니다. 명령줄 애플리케이션에는 행위자 서비스의 출력이 표시됩니다.

애플리케이션 출력

서비스 패브릭 행위자 런타임에서는 일부 행위자 메서드와 관련된 이벤트 및 성능 카운터를 내보냅니다. 진단 및 성능 모니터링에 유용합니다.

다음 단계

Reliable Actors가 Service Fabric 플랫폼을 사용하는 방법에 대해 자세히 알아봅니다.