Configuração de desenvolvimento local
Para obter um aplicativo de exemplo em funcionamento que tenha o Orleans 7.0 como destino, confira Orleans: Olá, Mundo. O exemplo hospeda o cliente e o silo em aplicativos de console do .NET que funcionam em diferentes plataformas, enquanto os grãos e interfaces têm .NET Standard 2.0 como destino.
Dica
Para versões mais antigas do Orleans, confira Projetos de exemplo do Orleans.
Configuração de silos
É recomendável usar o pacote NuGet Microsoft.Extensions.Hosting para configurar e executar o silo. Além disso, ao desenvolver um silo do Orleans, você precisa do pacote NuGet Microsoft.Orleans.Server. Para o desenvolvimento de silo local do Orleans, configure o clustering de localhost, que está configurado para usar o endereço de loopback. Para usar o clustering localhost, chame o método de extensão UseLocalhostClustering. Considere este arquivo de exemplo Program.cs do host do silo:
using Microsoft.Extensions.Hosting;
await Host.CreateDefaultBuilder(args)
.UseOrleans(siloBuilder =>
{
siloBuilder.UseLocalhostClustering();
})
.RunConsoleAsync();
O código anterior:
- Cria o construtor de host padrão.
- Chama o método de extensão
UseOrleans
para configurar o silo. - Chama o método de extensão
UseLocalhostClustering
no ISiloBuilder determinado para configurar o silo para usar o clustering localhost. - Encadeia o método
RunConsoleAsync
para executar o silo como um aplicativo de console.
Para desenvolvimento local, consulte o exemplo abaixo de como configurar um silo para esse caso. Configura e inicia um silo escutando no endereço loopback
, 11111
e 30000
como portas de silo e gateway respectivamente.
Adicione o metapacote NuGet Microsoft.Orleans.Server
ao projeto.
dotnet add package Microsoft.Orleans.Server
Você precisa configurar o método ClusterOptions via ISiloBuilder, Configure
especificar que deseja LocalhostClustering
como sua opção de cluster com este silo sendo o principal e, em seguida, configurar os terminais do silo.
A chamada ConfigureApplicationParts adiciona explicitamente o assembly com classes granulares à configuração do aplicativo. Ele também adiciona qualquer assembly referenciado devido à extensão WithReferences. Depois que essas etapas forem concluídas, o host de silo será criado e o silo será iniciado.
Você pode criar um projeto de aplicativo de console vazio direcionado ao .NET Framework 4.6.1 ou superior para hospedar um silo e um aplicativo de console .NET.
Veja abaixo um exemplo de como um silo local pode ser iniciado:
try
{
var host = await BuildAndStartSiloAsync();
Console.WriteLine("Press Enter to terminate...");
Console.ReadLine();
await host.StopAsync();
}
catch (Exception ex)
{
Console.WriteLine(ex);
}
static async Task<ISiloHost> BuildAndStartSiloAsync()
{
var host = new HostBuilder()
.UseOrleans(builder =>
{
builder.UseLocalhostClustering()
.Configure<ClusterOptions>(options =>
{
options.ClusterId = "dev";
options.ServiceId = "MyAwesomeService";
})
.Configure<EndpointOptions>(
options => options.AdvertisedIPAddress = IPAddress.Loopback)
.ConfigureLogging(logging => logging.AddConsole());
})
.Build();
await host.StartAsync();
return host;
}
Configuração do cliente
É recomendável usar o pacote NuGet Microsoft.Extensions.Hosting para configurar e executar os clientes (além do silo). Você também precisa do pacote NuGet Microsoft.Orleans.Client. Para usar o clustering localhost no cliente consumidor, chame o método de extensão UseLocalhostClustering. Considere este arquivo de exemplo Program.cs do host do cliente:
using Microsoft.Extensions.Hosting;
using IHost host = Host.CreateDefaultBuilder(args)
.UseOrleansClient(client =>
{
client.UseLocalhostClustering();
})
.UseConsoleLifetime()
.Build();
await host.StartAsync();
O código anterior:
- Cria o construtor de host padrão.
- Chama o método de extensão
UseOrleansClient
para configurar o cliente. - Chama o método de extensão
UseLocalhostClustering
no IClientBuilder determinado para configurar o cliente para usar o clustering localhost. - Chama o método de extensão
UseConsoleLifetime
para configurar o cliente para usar o tempo de vida do console. - Chama o método
StartAsync
na variávelhost
para iniciar o cliente.
Para desenvolvimento local, consulte o exemplo abaixo de como configurar um cliente para esse caso. Ele configura um cliente que se conectaria a um silo loopback
.
Adicione o metapacote NuGet Microsoft.Orleans.Client
ao projeto. Depois de se familiarizar com a API, você pode escolher de quais pacotes exatos incluídos em Microsoft.Orleans.Client
você realmente precisa e fazer referência a eles.
Install-Package Microsoft.Orleans.Client
Você precisa configurar ClientBuilder com um ID de cluster que corresponda ao que você especificou para o silo local e especificar clustering estático como sua escolha de cluster, apontando-o para a porta de gateway do silo
A chamada ConfigureApplicationParts
adiciona explicitamente o assembly com interfaces granulares à configuração do aplicativo.
Depois que essas etapas forem concluídas, podemos criar o cliente e o método Connect()
nele para conectar-se ao cluster.
Você pode criar um projeto de aplicativo de console vazio direcionado ao .NET Framework 4.6.1 ou superior para executar um cliente ou reutilizar o projeto de aplicativo de console criado para hospedar um silo.
Veja abaixo um exemplo de como um cliente pode se conectar a um silo local:
var client = new ClientBuilder()
.UseLocalhostClustering()
.Configure<ClusterOptions>(options =>
{
options.ClusterId = "dev";
options.ServiceId = "MyAwesomeService";
})
.ConfigureLogging(logging => logging.AddConsole())
var client = builder.Build();
await client.Connect();