Formazione
Modulo
Creare la prima app Orleans con ASP.NET Core 8.0 - Training
Informazioni su come creare app distribuite native del cloud con Orleans.
Questo browser non è più supportato.
Esegui l'aggiornamento a Microsoft Edge per sfruttare i vantaggi di funzionalità più recenti, aggiornamenti della sicurezza e supporto tecnico.
In questa esercitazione, seguirai istruzioni passo-passo per creare parti mobili fondamentali comuni alla maggior parte delle applicazioni Orleans. È progettato per essere indipendente e minimalista.
Questa esercitazione non dispone di una gestione degli errori appropriata e di altro codice essenziale che sarebbe utile per un ambiente di produzione. Tuttavia, dovrebbe aiutare a comprendere in modo pratico la struttura comune delle app per Orleans e consentire di concentrare l'apprendimento continuo sulle parti più rilevanti per te.
Per questa esercitazione si creeranno quattro progetti come parte della stessa soluzione:
Sostituire il codice predefinito con il codice specificato per ogni progetto.
OrleansHelloWorld
. Per altre informazioni sulla creazione di un'app console, vedere Esercitazione: Creare un'applicazione console .NET con Visual Studio.Client
.GrainInterfaces
. Per informazioni sulla creazione di una libreria di classi, vedere Esercitazione: Creare una libreria di classi .NET con Visual Studio.Grains
.Progetto | Pacchetto NuGet |
---|---|
Silo | Microsoft.Orleans.Server Microsoft.Extensions.Logging.Console Microsoft.Extensions.Hosting |
Cliente | Microsoft.Orleans.Client Microsoft.Extensions.Logging.Console Microsoft.Extensions.Hosting |
Interfacce granulari | Microsoft.Orleans.Sdk |
Grani | Microsoft.Orleans.Sdk Microsoft.Extensions.Logging.Abstractions |
Microsoft.Orleans.Server
, Microsoft.Orleans.Client
e Microsoft.Orleans.Sdk
sono metapacchetti che portano le dipendenze che probabilmente ti serviranno sul silo e sul client. Per altre informazioni sull'aggiunta di riferimenti ai pacchetti, vedere dotnet add package o Installare e gestire i pacchetti in Visual Studio usando Gestione pacchetti NuGet.
Nel progetto GrainInterfaces, aggiungere un file di codice IHello.cs e definire la seguente interfaccia IHello
:
namespace GrainInterfaces;
public interface IHello : IGrainWithIntegerKey
{
ValueTask<string> SayHello(string greeting);
}
Nel progetto Grani, aggiungi un file di codice HelloGrain.cs e definisci la seguente classe:
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!
""");
}
}
Per creare il progetto Silo, aggiungere il codice per inizializzare un server che ospita ed esegue i grani, ovvero un silo. Si usa il provider di clustering localhost, che consente di eseguire tutto in locale, senza una dipendenza da sistemi di archiviazione esterni. Per altre informazioni, vedere Configurazione di sviluppo locale. In questo esempio viene eseguito un cluster con un singolo silo.
Aggiungere il codice seguente a Program.cs del progetto 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();
Il codice precedente:
host
e attende che il processo venga terminato, ascoltando CTRL+C o SIGTERM
.Infine, è necessario configurare un client per comunicare con i grani, connetterlo al cluster (con un singolo silo in esso) e richiamare la granularità. La configurazione del clustering deve corrispondere a quella usata per il silo. Per ulteriori informazioni, vedere Clusters e client.
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();
Compilare la soluzione ed eseguire il Silo. Dopo aver visualizzato il messaggio di conferma che il Silo è in esecuzione, eseguire il Client .
Per avviare silo dalla riga di comando, eseguire il comando seguente dalla directory contenente il file di progetto di Silo:
dotnet run
Verranno visualizzati numerosi output come parte dell'avvio del Silo. Dopo aver visualizzato il messaggio seguente, si è pronti per eseguire il client:
Application started. Press Ctrl+C to shut down.
Dalla directory del progetto client, esegui lo stesso comando .NET CLI in una finestra del terminale separata per avviare il client.
dotnet run
Per altre informazioni sull'esecuzione di app .NET, vedere dotnet run. Se si usa Visual Studio, è possibile configurare più progetti di avvio.
Feedback su .NET
.NET è un progetto di open source. Selezionare un collegamento per fornire feedback:
Formazione
Modulo
Creare la prima app Orleans con ASP.NET Core 8.0 - Training
Informazioni su come creare app distribuite native del cloud con Orleans.
Documentazione
Orleans progetti di esempio - .NET
Esplorare i vari progetti di esempio scritti con .NET Orleans.
Avvio rapido: Creare la prima app Orleans con ASP.NET Core - .NET
Informazioni su come usare Orleans per compilare un'applicazione ASP.NET Core scalabile e distribuita
Documentazione di Microsoft Orleans
Esempi, esercitazioni e formazione per .NET Orleans. Piattaforma di sistemi cloud nativi e distribuiti di Microsoft.