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.
- 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. - Přidejte další projekt konzolové aplikace a pojmenujte ho
Client
. - 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. - Přidejte další knihovnu tříd a pojmenujte ji
Grains
.
Odstranění výchozích zdrojových souborů
- Odstraňte Class1.cs z Grains.
- Odstraňte Class1.cs z GrainInterfaces.
Přidání odkazů
- Zrna odkazy GrainInterfaces.
- silo odkazy na obilí.
- 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:
- Nakonfiguruje IHost, aby používal Orleans s metodou UseOrleans.
- Určuje, že se má s metodou UseLocalhostClustering(ISiloBuilder, Int32, Int32, IPEndPoint, String, String) použít poskytovatel clusteringu localhost.
- Spustí
host
a počká na ukončení procesu tím, že naslouchá Ctrl+C neboSIGTERM
.
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é
- seznam balíčků Orleans
- průvodce konfigurací Orleans
- Orleans osvědčené postupy