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


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

Ebben az oktatóanyagban lépésről lépésre 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 egyéb alapvető kódot, amelyek hasznosak lehetnek egy éles környezetben. Ennek azonban segítenie kell abban, hogy gyakorlati ismereteket szerezzen a gyakori alkalmazásstruktúráról Orleans , és lehetővé tegye, 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 fog létrehozni ugyanazon megoldás részeként:

  • Kódtár, amely tartalmazza a szemcsés illesztőket.
  • A gabonaosztályokat tartalmazó kódtá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 projektrész silóját, é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 Studió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ával kapcsolatos információkért tekintse meg az oktatóanyagot: .NET-osztálytár létrehozása a Visual Studió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 Class1.cs a Grainsből.
  2. Törölje Class1.cs a GrainInterfacesből.

Hivatkozások hozzáadása

  1. A grains a GrainInterfacesre hivatkozik.
  2. A siló a Grainsre hivatkozik.
  3. Az ügyfél a GrainInterfacesre hivatkozik.

NuGet-csomagok hozzáadása Orleans

Project NuGet-csomag
Silo 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 hoznak, 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 add package or Install and manage packages in Visual Studio using the NuGet Csomagkezelő.

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 benne:

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. A localhost fürtszolgáltatót használja, amely lehetővé teszi, hogy mindent helyileg, külső tárolórendszerek függősége nélkül futtasson. További információ: Helyi fejlesztési konfiguráció. Ebben a példában egyetlen silóval futtat egy fürtöt.

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

A fenti kód a következőket végzi el:

Az ügyfél létrehozása

Végül konfigurálnia kell egy ügyfelet a szemcsékkel való kommunikációhoz, csatlakoztatnia kell azt a fürthöz (egyetlen silóval), és meg kell hívnia a gabonát. A fürtkonfigurációnak meg kell egyeznie a silóhoz használt konfigurációval. További információ: Fürtök és ügyfelek

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, és futtassa a Silót. Miután megkapja 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 siló indításakor 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ával kapcsolatos további információkért lásd : dotnet run. Ha Visual Studiót használ, több indítási projektet is konfigurálhat.

Lásd még