Aplicativo Orleans
Um aplicativo típico do Orleans consiste em um cluster de processos de servidor (silos), em que reside a granularidade, e um conjunto de processos de cliente, geralmente servidores Web que recebem solicitações externas, as transformam em chamadas de método de granularidade e retornam resultados. Portanto, a primeira coisa que é necessário fazer para executar um aplicativo do Orleans é iniciar um cluster de silos. Para fins de teste, um cluster pode consistir em um só silo. Para uma implantação de produção confiável, queremos mais de um silo em um cluster para tolerância e escala de falhas.
Depois que o cluster estiver em execução, poderemos iniciar um ou mais processos de cliente que se conectam ao cluster e podem enviar solicitações para os grãos. Os clientes se conectam a um ponto de extremidade TCP especial em silos – gateway. Por padrão, cada silo em um cluster tem um gateway de cliente habilitado. Portanto, os clientes podem se conectar a todos os silos em paralelo para melhorar o desempenho e a resiliência.
Configurar e iniciar um silo
Um silo é configurado programaticamente por meio de um objeto ClusterConfiguration. Ele pode ser instanciado e preenchido diretamente, carregando configurações de um arquivo, ou criado com vários métodos auxiliares disponíveis para diferentes ambientes de implantação. Para testes locais, a maneira mais fácil é usar o método auxiliar LocalhostPrimarySilo. O objeto de configuração então é passado para uma nova instância da classe SiloHost, que pode ser inicializada e iniciada depois disso.
Você pode criar um projeto de aplicativo de console vazio direcionado ao .NET Framework 4.6.1 ou superior para hospedar um silo.
Adicione o metapacote NuGet Microsoft.Orleans.Server
ao projeto.
Install-Package Microsoft.Orleans.Server
Aqui está um exemplo de como um silo local pode ser iniciado:
var siloConfig = ClusterConfiguration.LocalhostPrimarySilo();
var silo = new SiloHost("Test Silo", siloConfig);
silo.InitializeOrleansSilo();
silo.StartOrleansSilo();
Console.WriteLine("Press Enter to close.");
// wait here
Console.ReadLine();
// shut the silo down after we are done.
silo.ShutdownOrleansSilo();
Configurar e conectar-se a um cliente
O cliente para se conectar a um cluster de silos e enviar solicitações para granularidade é configurado programaticamente por meio de um objeto ClientConfiguration e um ClientBuilder. O objeto ClientConfiguration
pode ser instanciado e preenchido diretamente, carregando configurações de um arquivo ou criado com vários métodos auxiliares disponíveis para diferentes ambientes de implantação. Para testes locais, a maneira mais fácil é usar o método auxiliar LocalhostSilo. O objeto de configuração então é passado para uma nova instância da classe ClientBuilder
.
ClientBuilder
expõe mais métodos para configurar recursos adicionais do cliente. Depois disso, o método ClientBuilder.Build() do objeto ClientBuilder
é chamado para obter uma implementação da interface IClusterClient. Por fim, chamamos o método IClusterClient.Connect() no objeto retornado 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 um silo. Adicione o metapacote NuGet Microsoft.Orleans.Client
ao projeto.
Install-Package Microsoft.Orleans.Client
Aqui está um exemplo de como um cliente pode se conectar a um silo local:
var config = ClientConfiguration.LocalhostSilo();
var builder = new ClientBuilder().UseConfiguration(config).
var client = builder.Build();
await client.Connect();
Configurações de produção
Os exemplos de configuração que usamos aqui são para testar silos e clientes em execução no mesmo computador que localhost
. Em produção, silos e clientes geralmente são executados em servidores diferentes e configurados com uma das opções de configuração de cluster confiáveis. Você pode encontrar mais sobre isso no Guia configuração e na descrição do Gerenciamento de cluster.