Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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
- Visual Studio 2022
- .NET 7.0-s vagy újabb SDK
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.
- 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ástOrleansHelloWorld
. 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. - Adjon hozzá egy másik konzolalkalmazás-projektet, és nevezze el
Client
. - 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. - Adjon hozzá egy másik osztálytárat, és nevezze el
Grains
.
Alapértelmezett forrásfájlok törlése
- Törölje a Szemcsékközül a Class1.cs fájlt.
- Törölje a Class1.cs fájlt a GrainInterfaces-ból.
Hivatkozások hozzáadása
- Grains hivatkozások GrainInterfaces.
- Siló a gabonákra utal.
- Ü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:
- A IHost konfigurálása a Orleans használatára a UseOrleans módszerrel.
- Megadja, hogy a localhost fürtszolgáltatót használja-e a UseLocalhostClustering(ISiloBuilder, Int32, Int32, IPEndPoint, String, String) metódussal.
- Futtatja a
host
folyamatot, és megvárja a leállását, figyelve a Ctrl+c3>C kombinációra vagy jelzésre.
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.