Sdílet prostřednictvím


Kurz: Vytvoření minimální Orleans aplikace

V tomto kurzu budete postupovat podle podrobných pokynů k vytvoření základních částí, které jsou společné pro většinu Orleans aplikací. Je navržená tak, aby byla samostatná a minimalistická.

V tomto kurzu chybí odpovídající zpracování chyb a další základní kód, který by byl užitečný pro produkční prostředí. Měla by vám ale pomoct získat praktické znalosti o společné struktuře aplikací pro Orleans a umožnit vám zaměřit se na další učení na části, které jsou pro vás nejdůležitější.

Požadavky

Nastavení projektu

V tomto kurzu vytvoříte čtyři projekty jako součást stejného řešení:

  • Knihovna, která obsahuje rozhraní zrnitosti.
  • Knihovna k obsahování tříd obilovin.
  • konzolová aplikace pro provoz sila
  • Konzolová aplikace pro hostování klienta

Vytvořte strukturu v sadě Visual Studio

Nahraďte výchozí kód kódem zadaným pro každý projekt.

  1. Začněte vytvořením projektu konzolové aplikace v novém řešení. Nazvěte část projektu silo a pojmenujte řešení OrleansHelloWorld. Další informace o vytvoření konzolové aplikace najdete v tématu Kurz: Vytvoření konzolové aplikace .NET pomocí sady Visual Studio.
  2. Přidejte další projekt konzolové aplikace a pojmenujte ho Client.
  3. Přidejte knihovnu tříd a pojmenujte ji GrainInterfaces. Informace o vytváření knihovny tříd najdete v tématu Kurz: Vytvoření knihovny tříd .NET pomocí sady Visual Studio.
  4. Přidejte další knihovnu tříd a pojmenujte ji Grains.

Odstranění výchozích zdrojových souborů

  1. Odstraňte Class1.cs z Grains.
  2. Odstraňte Class1.cs z GrainInterfaces.

Přidání odkazů

  1. Zrna odkazy GrainInterfaces.
  2. silo odkazy na obilí.
  3. Klient odkazuje na GrainInterfaces.

Přidejte balíčky NuGet Orleans

Projekt Balíček NuGet
Silo Microsoft.Orleans.Server
Microsoft.Extensions.Logging.Console
Microsoft.Extensions.Hosting
Klient Microsoft.Orleans.Client
Microsoft.Extensions.Logging.Console
Microsoft.Extensions.Hosting
Rozhraní zrn Microsoft.Orleans.Sdk
Zrna Microsoft.Orleans.Sdk
Microsoft.Extensions.Logging.Abstractions

cs-CZ: Microsoft.Orleans.Server, Microsoft.Orleans.Client a Microsoft.Orleans.Sdk jsou metabalíčky, které přinášejí závislosti, které budete pravděpodobně potřebovat na Silo a klienta. Další informace o přidávání odkazů na balíčky naleznete v tématu dotnet add package nebo Instalace a správa balíčků ve Visual Studio pomocí správce balíčků NuGet.

Definovat rozhraní zrna

V projektu GrainInterfaces přidejte soubor kódu IHello.cs a definujte do něj následující IHello rozhraní:

namespace GrainInterfaces;

public interface IHello : IGrainWithIntegerKey
{
    ValueTask<string> SayHello(string greeting);
}

Definování třídy zrnitosti

V projektu Grain přidejte soubor kódu HelloGrain.cs a definujte do něj následující třídu:

using GrainInterfaces;
using Microsoft.Extensions.Logging;

namespace Grains;

public class HelloGrain : Grain, IHello
{
    private readonly ILogger _logger;

    public HelloGrain(ILogger<HelloGrain> logger) => _logger = logger;

    ValueTask<string> IHello.SayHello(string greeting)
    {
        _logger.LogInformation("""
            SayHello message received: greeting = "{Greeting}"
            """,
            greeting);
        
        return ValueTask.FromResult($"""

            Client said: "{greeting}", so HelloGrain says: Hello!
            """);
    }
}

Vytvořte silo

Pokud chcete vytvořit projekt sila, přidejte kód pro inicializaci serveru, který hostuje a spouští zrnka – sila. Používáte poskytovatele clusteringu localhost, který umožňuje spouštět vše místně bez závislosti na externích systémech úložiště. Další informace naleznete v části Konfigurace místního vývoje. V tomto příkladu spustíte cluster s jedním silem.

Přidejte následující kód do Program.cs projektu Silo :

using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;

IHostBuilder builder = Host.CreateDefaultBuilder(args)
    .UseOrleans(silo =>
    {
        silo.UseLocalhostClustering()
            .ConfigureLogging(logging => logging.AddConsole());
    })
    .UseConsoleLifetime();

using IHost host = builder.Build();

await host.RunAsync();

Předchozí kód:

Vytvoření klienta

Nakonec musíte nakonfigurovat klienta pro komunikaci s gránami, připojit ho ke clusteru (s jedním silem) a vyvolat gránu. Konfigurace clusteringu se musí shodovat s tou, kterou jste použili pro silo. Další informace naleznete v tématu clustery a klienti.

using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.DependencyInjection;
using GrainInterfaces;

IHostBuilder builder = Host.CreateDefaultBuilder(args)
    .UseOrleansClient(client =>
    {
        client.UseLocalhostClustering();
    })
    .ConfigureLogging(logging => logging.AddConsole())
    .UseConsoleLifetime();

using IHost host = builder.Build();
await host.StartAsync();

IClusterClient client = host.Services.GetRequiredService<IClusterClient>();

IHello friend = client.GetGrain<IHello>(0);
string response = await friend.SayHello("Hi friend!");

Console.WriteLine($"""
    {response}

    Press any key to exit...
    """);

Console.ReadKey();

await host.StopAsync();

Spuštění aplikace

Sestavte řešení a spusťte Silo. Jakmile se zobrazí potvrzovací zpráva, že Silo běží, spusťte klienta.

Pokud chcete spustit Silo z příkazového řádku, použijte následující příkaz v adresáři, který obsahuje soubor projektu Silo:

dotnet run

Uvidíte množství výstupů v průběhu spouštění Silo. Po zobrazení následující zprávy jste připraveni spustit klienta:

Application started. Press Ctrl+C to shut down.

V adresáři klientského projektu spusťte stejný příkaz .NET CLI v samostatném okně terminálu a spusťte klienta:

dotnet run

Další informace o spouštění aplikací .NET najdete v tématu dotnet run. Pokud používáte Visual Studio, můžete nakonfigurovat více spouštěcích projektů.

Viz také