Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Para obter um exemplo de aplicativo funcional para Orleans 7.0, consulte 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 como destino o .NET Standard 2.0.
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 Orleans silo, você precisa do Pacote NuGet Microsoft.Orleans.Server . Para o desenvolvimento de silo local Orleans, configure o clustering no localhost, que usa 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 para o anfitrião do silo.
using Microsoft.Extensions.Hosting;
await Host.CreateDefaultBuilder(args)
.UseOrleans(siloBuilder =>
{
siloBuilder.UseLocalhostClustering();
})
.RunConsoleAsync();
O código anterior faz o seguinte:
- 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 mostrando como configurar um silo para esse caso. Ele configura e inicia um silo ouvindo no endereço loopback
, usando as portas 11111
e 30000
para o silo e o gateway, respectivamente.
Adicione o Microsoft.Orleans.Server
metapacote NuGet ao seu 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 ConfigureApplicationParts chamada adiciona explicitamente o assembly que contém classes granuladas à configuração do aplicativo. Ele também adiciona qualquer assembly referenciado devido à extensão WithReferences. Depois de concluir essas etapas, crie o host do silo e inicie o silo.
Você pode criar um projeto de aplicativo de console vazio destinado ao .NET Framework 4.6.1 ou superior para hospedar um silo.
Aqui está um exemplo de como você pode iniciar um silo local:
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 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 exemplo Program.cs arquivo para o host cliente:
using Microsoft.Extensions.Hosting;
using IHost host = Host.CreateDefaultBuilder(args)
.UseOrleansClient(client =>
{
client.UseLocalhostClustering();
})
.UseConsoleLifetime()
.Build();
await host.StartAsync();
O código anterior faz o seguinte:
- 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 mostrando como configurar um cliente para esse caso. Ele configura um cliente que se conecta a um loopback
silo.
Adicione o Microsoft.Orleans.Client
metapacote NuGet ao seu projeto. Depois de se sentir confortável com a API, você pode selecionar os pacotes exatos de Microsoft.Orleans.Client
que precisa e referenciá-los.
Install-Package Microsoft.Orleans.Client
Configure ClientBuilder com uma ID de cluster correspondente à especificada para o silo local. Especifique a opção de clustering estático e direcione-a para a porta de gateway do silo.
A chamada ConfigureApplicationParts
adiciona explicitamente o assembly que contém interfaces de grãos à configuração do aplicativo.
Depois de concluir essas etapas, crie o cliente e chame seu Connect()
método para se conectar 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 o 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();