Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tento přehled se spojuje s ukázkovou aplikací Hello World.
Hlavní koncepty Orleans zahrnují sila, klienta a jednu nebo více zrn. Vytvoření Orleans aplikace zahrnuje konfiguraci sila, konfiguraci klienta a zápis zrn.
Konfigurace sila
Konfigurujte silos prostřednictvím programového kódu ISiloBuilder
a několika doplňkových tříd voleb. Seznam všech možností najdete v seznamu tříd možností.
static async Task<ISiloHost> StartSilo(string[] args)
{
var builder = Host.CreateApplicationBuilder(args)
UseOrleans(c =>
{
c.UseLocalhostClustering()
.Configure<ClusterOptions>(options =>
{
options.ClusterId = "dev";
options.ServiceId = "HelloWorldApp";
})
.Configure<EndpointOptions>(
options => options.AdvertisedIPAddress = IPAddress.Loopback)
.ConfigureApplicationParts(
parts => parts.AddApplicationPart(typeof(HelloGrain).Assembly).WithReferences())
.ConfigureLogging(logging => logging.AddConsole());
});
var host = builder.Build();
await host.StartAsync();
return host;
}
Možnost | Použití |
---|---|
.UseLocalhostClustering() |
Nakonfiguruje klienta pro připojení k silu na místním hostiteli. |
ClusterOptions |
ClusterId je název pro cluster Orleans, který musí být stejný pro silo i klienta, aby mohli komunikovat.
ServiceId je ID používané pro aplikaci a nesmí se měnit napříč nasazeními. |
EndpointOptions |
Řekne silu, kde má naslouchat. V tomto příkladu použijte loopback . |
ConfigureApplicationParts |
Přidá do aplikace Orleans sestavení třídy grain a rozhraní jako součásti aplikace. |
Po načtení konfigurací sestavte ISiloHost
a poté ho spusťte asynchronně.
Konfigurace klienta
Podobně jako silo nakonfigurujte klienta pomocí IClientBuilder
a podobné sbírky tříd možností.
static async Task<IClusterClient> StartClientWithRetries()
{
attempt = 0;
var client = new ClientBuilder()
.UseLocalhostClustering()
.Configure<ClusterOptions>(options =>
{
options.ClusterId = "dev";
options.ServiceId = "HelloWorldApp";
})
.ConfigureLogging(logging => logging.AddConsole())
.Build();
await client.Connect(RetryFilter);
Console.WriteLine("Client successfully connect to silo host");
return client;
}
Možnost | Použití |
---|---|
.UseLocalhostClustering() |
Stejné jako pro SiloHost |
ClusterOptions |
Stejné jako pro SiloHost |
Podrobnější průvodce konfigurací klienta najdete v části Konfigurace klienta v průvodci konfigurací.
Zapsat zrno
Zrna jsou klíčovými primitivy programovacího Orleans modelu. Jedná se o stavební bloky Orleans aplikace, které slouží jako atomické jednotky izolace, distribuce a trvalosti. Zrna jsou objekty představující entity aplikace. Stejně jako v klasickém Object-Oriented programování zapouzdřuje grain stav entity a kóduje její chování v logice kódu. Zrna mohou obsahovat odkazy na sebe navzájem a interagovat vyvoláním metod vystavených prostřednictvím rozhraní.
Přečtěte si další informace v dokumentaci v části Orleans.
Toto je hlavní tělo kódu pro obilninu Hello World:
namespace HelloWorld.Grains;
public class HelloGrain : Orleans.Grain, IHello
{
Task<string> IHello.SayHello(string greeting)
{
logger.LogInformation($"SayHello message received: greeting = '{greeting}'");
return Task.FromResult($"You said: '{greeting}', I say: Hello!");
}
}
Třída grain implementuje jedno nebo více rozhraní grain. Další informace najdete v části Obilnárna .
namespace HelloWorld.Interfaces;
public interface IHello : Orleans.IGrainWithIntegerKey
{
Task<string> SayHello(string greeting);
}
Jak díly spolupracují
Tento programovací model vychází ze základní koncepce distribuovaného Object-Oriented programování. Začněte nejprve ISiloHost
. Pak program OrleansClient
spusťte. Metoda Main
volá metodu OrleansClient
, která spouští klienta, StartClientWithRetries()
. Předejte klientovi metodu DoClientWork()
.
static async Task DoClientWork(IClusterClient client)
{
var friend = client.GetGrain<IHello>(0);
var response = await friend.SayHello("Good morning, my friend!");
Console.WriteLine($"\n\n{response}\n\n");
}
V tomto okamžiku OrleansClient
vytvoří odkaz na zrno IHello
a zavolá jeho SayHello()
metodu IHello
prostřednictvím rozhraní. Toto volání aktivuje zrnko v silu.
OrleansClient
odešle pozdrav do aktivovaného zrnka. Zrno vrátí pozdrav jako odpověď OrleansClient
, který ho pak zobrazí na konzoli.
Spuštění ukázkové aplikace
Ukázkovou aplikaci spustíte v souboru Readme.