Orleans-toepassing
Een typische Orleans-toepassing bestaat uit een cluster van serverprocessen (silo's) waar korrels leven en een set clientprocessen, meestal webservers, die externe aanvragen ontvangen, deze omzetten in korrelmethode-aanroepen en resultaten retourneren. Het eerste wat u moet doen om een Orleans-toepassing uit te voeren, is daarom een cluster van silo's te starten. Voor testdoeleinden kan een cluster bestaan uit één silo. Voor een betrouwbare productie-implementatie willen we meer dan één silo in een cluster voor fouttolerantie en schaal.
Zodra het cluster wordt uitgevoerd, kunnen we een of meer clientprocessen starten die verbinding maken met het cluster en aanvragen naar de korrels kunnen verzenden. Clients maken verbinding met een speciaal TCP-eindpunt op silo's - gateway. Standaard is voor elke silo in een cluster een clientgateway ingeschakeld. Clients kunnen dus parallel verbinding maken met alle silo's voor betere prestaties en tolerantie.
Een silo wordt programmatisch geconfigureerd via een ClusterConfiguration object. Het kan rechtstreeks worden geïnstantieerd en gevuld, instellingen uit een bestand laden of met verschillende beschikbare helpermethoden voor verschillende implementatieomgevingen worden gemaakt. Voor lokale tests is de eenvoudigste manier om de helpermethode te gebruiken LocalhostPrimarySilo . Het configuratieobject wordt vervolgens doorgegeven aan een nieuw exemplaar van SiloHost klasse, dat daarna kan worden geïnitialiseerd en gestart.
U kunt een leeg consoletoepassingsproject maken dat is gericht op .NET Framework 4.6.1 of hoger voor het hosten van een silo.
Voeg het Microsoft.Orleans.Server
NuGet-metapakket toe aan het project.
Install-Package Microsoft.Orleans.Server
Hier volgt een voorbeeld van hoe een lokale silo kan worden gestart:
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();
Client voor het maken van verbinding met een cluster silo's en het verzenden van aanvragen naar korrels wordt programmatisch geconfigureerd via een ClientConfiguration object en een ClientBuilder. ClientConfiguration
het object kan rechtstreeks worden geïnstantieerd en ingevuld, instellingen uit een bestand laden of met verschillende beschikbare helpermethoden voor verschillende implementatieomgevingen worden gemaakt. Voor lokale tests is de eenvoudigste manier om de helpermethode te gebruiken LocalhostSilo . Het configuratieobject wordt vervolgens doorgegeven aan een nieuw exemplaar van ClientBuilder
klasse.
ClientBuilder
biedt meer methoden voor het configureren van extra clientfuncties. Nadat deze ClientBuilder.Build() methode van het ClientBuilder
object is aangeroepen om een implementatie van IClusterClient de interface op te halen. Ten slotte roepen IClusterClient.Connect() we de methode aan voor het geretourneerde object om verbinding te maken met het cluster.
U kunt een leeg consoletoepassingsproject maken dat is gericht op .NET Framework 4.6.1 of hoger voor het uitvoeren van een client of het consoletoepassingsproject dat u hebt gemaakt voor het hosten van een silo, opnieuw gebruiken. Voeg het Microsoft.Orleans.Client
NuGet-metapakket toe aan het project.
Install-Package Microsoft.Orleans.Client
Hier volgt een voorbeeld van hoe een client verbinding kan maken met een lokale silo:
var config = ClientConfiguration.LocalhostSilo();
var builder = new ClientBuilder().UseConfiguration(config).
var client = builder.Build();
await client.Connect();
De hier gebruikte configuratievoorbeelden zijn voor het testen van silo's en clients die op dezelfde machine worden uitgevoerd als localhost
. In productie worden silo's en clients meestal uitgevoerd op verschillende servers en worden geconfigureerd met een van de betrouwbare clusterconfiguratieopties. Meer informatie hierover vindt u in de configuratiehandleiding en in de beschrijving van clusterbeheer.