Megosztás a következőn keresztül:


Oktatóanyag: Minimális Orleans alkalmazás létrehozása

Ebben az oktatóanyagban lépésenkénti útmutatást követve hozza létre a legtöbb Orleans alkalmazásra jellemző alapvető mozgó alkatrészeket. Úgy tervezték, hogy önálló és minimalista legyen.

Ez az oktatóanyag nem tartalmaz megfelelő hibakezelést és az éles környezetben hasznos egyéb alapvető kódot. Ez azonban segít a gyakori Orleans alkalmazásstruktúra gyakorlati megismerésében, és lehetővé teszi, hogy a folyamatos tanulást az Ön számára leginkább releváns részekre összpontosítsa.

Előfeltételek

Projekt beállítása

Ebben az oktatóanyagban négy projektet hozhat létre ugyanazon megoldás részeként:

  • Könyvtár, amely tartalmazza a gránulszintű interfészeket.
  • A gabonaosztályokat tartalmazó könyvtár.
  • A siló üzemeltetésére használható konzolalkalmazás.
  • Az ügyfél üzemeltetésére használható konzolalkalmazás.

A struktúra létrehozása a Visual Studióban

Cserélje le az alapértelmezett kódot az egyes projektekhez megadott kódra.

  1. Először hozzon létre egy konzolalkalmazás-projektet egy új megoldásban. Hívja meg a projektet Silo , és nevezze el a megoldást OrleansHelloWorld. További információ a konzolalkalmazások létrehozásáról: Oktatóanyag: .NET-konzolalkalmazás létrehozása a Visual Studiohasználatával.
  2. Adjon hozzá egy másik konzolalkalmazás-projektet, és nevezze el Client.
  3. Adjon hozzá egy osztálytárat, és nevezze el GrainInterfaces. Az osztálytárak létrehozásáról további információt a oktatóanyagban talál: .NET-osztálytár létrehozása a Visual Studiohasználatával.
  4. Adjon hozzá egy másik osztálytárat, és nevezze el Grains.

Alapértelmezett forrásfájlok törlése

  1. Törölje a Szemcsékközül a Class1.cs fájlt.
  2. Törölje a Class1.cs fájlt a GrainInterfaces-ból.

Hivatkozások hozzáadása

  1. Grains hivatkozások GrainInterfaces.
  2. Siló a gabonákra utal.
  3. Ügyfél hivatkozások GrainInterfaces.

Orleans NuGet-csomagok hozzáadása

Projekt NuGet-csomag
Siló Microsoft.Orleans.Server
Microsoft.Extensions.Logging.Console
Microsoft.Extensions.Hosting
Ügyfél Microsoft.Orleans.Client
Microsoft.Extensions.Logging.Console
Microsoft.Extensions.Hosting
Szemcsés interfészek Microsoft.Orleans.Sdk
Szemek Microsoft.Orleans.Sdk
Microsoft.Extensions.Logging.Abstractions

Microsoft.Orleans.Server, Microsoft.Orleans.Clientés Microsoft.Orleans.Sdk olyan metacsomagok, amelyek függőségeket eredményeznek, amelyekre nagy valószínűséggel szüksége lesz a Silóban és az ügyfélben. További információ a csomaghivatkozások hozzáadásáról: dotnet package add vagy Csomagok telepítése és kezelése a Visual Studio-ban a NuGet csomagkezelő használatával.

Szemcsés felület definiálása

A GrainInterfaces projektben adjon hozzá egy IHello.cs kódfájlt, és adja meg a következő IHello felületet:

namespace GrainInterfaces;

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

Szemcsés osztály definiálása

A Grains projektben adjon hozzá egy HelloGrain.cs kódfájlt, és adja meg a következő osztályt:

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

A siló létrehozása

A Silo-projekt létrehozásához adjon hozzá kódot egy olyan kiszolgáló inicializálásához, amely a szemcséket üzemelteti és futtatja – egy silót. Használja a localhost fürtszolgáltatót, amely lehetővé teszi minden helyi futtatását külső tárolórendszerektől függetlenül. További információért lásd: Helyi fejlesztési konfiguráció. Ebben a példában egy klasztert egyetlen tárházzal működtessen.

Adja hozzá a következő kódot a Silo projekt Program.cs:

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

Az előző kód:

Az ügyfél létrehozása

Végül konfiguráljon egy ügyfelet, hogy kommunikáljon a szemcsékkel, csatlakoztassa a fürthöz (egyetlen silóval), és hívja meg a magot. A fürtkonfigurációnak meg kell egyeznie azzal, amit a silóhoz használnak. További információért lásd a klasztereket és ügyfeleket:.

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

Az alkalmazás futtatása

Hozza létre a megoldást, majd futtassa a Silo. Miután megkapta a siló futását visszaigazoló üzenetet, futtassa az ügyfelet.

A siló parancssorból való indításához futtassa a következő parancsot a Siló projektfájlját tartalmazó könyvtárból:

dotnet run

A Silo indítása során számos kimenet jelenik meg. A következő üzenet megjelenítése után készen áll az ügyfél futtatására:

Application started. Press Ctrl+C to shut down.

Az ügyfél projektkönyvtárában futtassa ugyanazt a .NET CLI-parancsot egy külön terminálablakban az ügyfél elindításához:

dotnet run

A .NET-alkalmazások futtatásáról további információt dotnet runcímű témakörben talál. Ha Visual Studiót használ, több indítási projektet konfigurálhat.

Lásd még: