Applicazione Orleans
Un'applicazione tipica di Orleans è costituita da un cluster di processi server (silos) in cui i cereali vivono e un set di processi client, in genere server Web, che ricevono richieste esterne, li trasformano in chiamate di metodo granulari e restituiscono risultati. Di conseguenza, la prima cosa da fare per eseguire un'applicazione Orleans consiste nell'avviare un cluster di silos. A scopo di test, un cluster può essere costituito da un singolo silo. Per una distribuzione affidabile di produzione, è necessario più di un silo in un cluster per la tolleranza di errore e la scalabilità.
Una volta eseguito il cluster, è possibile avviare uno o più processi client che si connettono al cluster e possono inviare richieste ai cereali. I client si connettono a un endpoint TCP speciale su silos - gateway. Per impostazione predefinita, ogni silo in un cluster dispone di un gateway client abilitato. I client possono quindi connettersi a tutti i silo in parallelo per migliorare le prestazioni e la resilienza.
Configurare e avviare un silo
Un silo viene configurato a livello di codice tramite un ClusterConfiguration oggetto . Può essere creata un'istanza e popolata direttamente, le impostazioni di caricamento da un file o create con diversi metodi helper disponibili per diversi ambienti di distribuzione. Per i test locali, il modo più semplice per procedere consiste nell'usare LocalhostPrimarySilo il metodo helper. L'oggetto di configurazione viene quindi passato a una nuova istanza di SiloHost classe, che può essere inizializzata e avviata dopo questa operazione.
È possibile creare un progetto di applicazione console vuoto destinato .NET Framework 4.6.1 o versione successiva per ospitare un silo.
Aggiungere il Microsoft.Orleans.Server
meta-package NuGet al progetto.
Install-Package Microsoft.Orleans.Server
Ecco un esempio di come è possibile avviare un silo locale:
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();
Configurare e connettersi a un client
Il client per la connessione a un cluster di silos e l'invio di richieste ai cereali viene configurato a livello di codice tramite un ClientConfiguration oggetto e un ClientBuilderoggetto . ClientConfiguration
è possibile creare un'istanza e popolare direttamente, caricare le impostazioni da un file o creare con diversi metodi helper disponibili per diversi ambienti di distribuzione. Per i test locali, il modo più semplice per procedere consiste nell'usare LocalhostSilo il metodo helper. L'oggetto di configurazione viene quindi passato a una nuova istanza della ClientBuilder
classe.
ClientBuilder
espone altri metodi per la configurazione di funzionalità client aggiuntive. Dopo che ClientBuilder.Build() tale metodo dell'oggetto viene chiamato per ottenere un'implementazione dell'interfaccia ClientBuilder
IClusterClient . Infine, viene chiamato IClusterClient.Connect() il metodo sull'oggetto restituito per connettersi al cluster.
È possibile creare un progetto di applicazione console vuoto destinato .NET Framework 4.6.1 o versione successiva per eseguire un client o riutilizzare il progetto dell'applicazione console creato per ospitare un silo. Aggiungere il Microsoft.Orleans.Client
meta-package NuGet al progetto.
Install-Package Microsoft.Orleans.Client
Ecco un esempio di come un client può connettersi a un silo locale:
var config = ClientConfiguration.LocalhostSilo();
var builder = new ClientBuilder().UseConfiguration(config).
var client = builder.Build();
await client.Connect();
Configurazioni di produzione
Gli esempi di configurazione usati qui sono per testare i silos e i client in esecuzione nello stesso computer di localhost
. In produzione, i silos e i client vengono in genere eseguiti in server diversi e sono configurati con una delle opzioni di configurazione del cluster affidabile. Altre informazioni sono disponibili nella Guida alla configurazione e nella descrizione della gestione del cluster.