Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
V tomto kurzu postupujte 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 užitečný pro produkční prostředí. Měla by vám ale pomoct získat praktické znalosti o společné Orleans struktuře aplikací a umožnit vám zaměřit se na další učení na části, které jsou pro vás nejdůležitější.
Návod
U aplikací připravených pro produkční prostředí Orleans zvažte použití Aspire ke zjednodušení správy prostředků, zjišťování služeb, pozorovatelnosti a nasazení. Aspire zpracovává konfiguraci clusteringu, úložiště pro jádra, připomenutí a automatického streamování automaticky. Další AspireOrleans informace najdete v integraci.
Požadavky
Nastavení projektu
Pro účely tohoto kurzu vytvořte čtyři projekty jako součást stejného řešení:
- Knihovna obsahující rozhraní pro obilí.
- Knihovna k obsahování tříd obilovin.
- konzolová aplikace pro provoz sila
- Konzolová aplikace pro hostování klienta
Vytvoření struktury v 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í. Zavolejte projekt
Siloa pojmenujte řešeníOrleansHelloWorld. Další informace o vytvoření konzolové aplikace najdete v tématu Tutorial: Vytvoření konzolové aplikace .NET. - Přidejte další projekt konzolové aplikace a pojmenujte ho
Client. - Přidejte knihovnu tříd a pojmenujte ji
GrainInterfaces. Informace o vytvoření knihovny tříd najdete v tématu Tutorial: Vytvoření knihovny tříd .NET. - 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.ServerMicrosoft.Extensions.Logging.ConsoleMicrosoft.Extensions.Hosting |
| Klient | Microsoft.Orleans.ClientMicrosoft.Extensions.Logging.ConsoleMicrosoft.Extensions.Hosting |
| Rozhraní zrn | Microsoft.Orleans.Sdk |
| Zrna | Microsoft.Orleans.SdkMicrosoft.Extensions.Logging.Abstractions |
Microsoft.Orleans.Server, Microsoft.Orleans.Client a Microsoft.Orleans.Sdk jsou metabalíčky, které pravděpodobně budete potřebovat pro silo a klienta. Další informace o přidávání odkazů na balíčky najdete v tématu dotnet package add nebo Install and manage packages in Visual Studio using nuGet Správce balíčků.
Definovat rozhraní zrna
V projektu GrainInterfaces přidejte soubor kódu IHello.cs a definujte následující IHello rozhraní:
namespace GrainInterfaces;
public interface IHello : IGrainWithIntegerKey
{
ValueTask<string> SayHello(string greeting);
}
Definování třídy zrnitosti
V projektu Zrna přidejte soubor kódu HelloGrain.cs a definujte 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ř silo
Pokud chcete vytvořit projekt Silo, přidejte kód pro inicializaci serveru, který hostuje a spouští zrna – silo. Použijte poskytovatele clusteringu localhost, který umožňuje místní spouštění všeho 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 spusť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 použití zprostředkovatele clusteringu localhost s metodou UseLocalhostClustering(ISiloBuilder, Int32, Int32, IPEndPoint, String, String) .
- Spustí
hosta čeká na ukončení procesu nasloucháním na Ctrl+C neboSIGTERM.
Vytvoření klienta
Nakonec nakonfigurujte klienta tak, aby komunikoval se zrnkami, připojili ho ke clusteru (s jedním silo) a vyvolali grain. Konfigurace clusteringu se musí shodovat s tou, která se používá 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. Po přijetí potvrzovací zprávy, ž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
Při spuštění systému Silo uvidíte mnoho výstupů. 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 rozhraní příkazového řádku 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 konfigurovat více projektů po spuštění.
Viz také
- seznam balíčků Orleans
- průvodce konfigurací Orleans
- Orleans osvědčené postupy