Cvičení – vytváření zrn a sila
Váš nový projekt je správně nakonfigurovaný a jste připraveni začít pracovat s Orleans. V tomto kroku vytvoříte a nakonfigurujete zrnka a sila vaší aplikace.
Vytvoříte podrobné informace pro správu každého zkráceného přesměrování adresy URL. Agregační interval ukládá základní data pro tento proces, jako je zkrácená hodnota hash a původní adresa URL, na která se má přesměrovat.
Také provedete spouštěcí konfigurace Orleans a vytvoříte silo pro uložení zrn. Zrnka lze načíst ze sila pomocí jejich identifikačního klíče. V tomto případě se zkrácená hodnota hash adresy URL zdvojnásobí jako identifikátor agregačního intervalu.
Vytvoření podrobného intervalu pro zkrácení adresy URL
Orálé zrno by mělo využívat rozhraní k definování jejich metod a vlastností. Rozhraní pro zkrácení adresy URL by mělo definovat dvě metody pro vytvoření a načtení zkrácené adresy URL.
Program
Uvnitř třídy přidejte následující definici rozhraní do dolní části souboru. Zrna můžou implementovat různá rozhraní, která definují typ klíče, který se používá k identifikaci agregace. V tomto případě implementujeteIGrainWithStringKey
rozhraní, protože řetězce jsou logickou volbou pro práci s hodnotami adresy URL.C#public interface IUrlShortenerGrain : IGrainWithStringKey { Task SetUrl(string fullUrl); Task<string> GetUrl(); }
Vytvořte
UrlShortenerGrain
třídu pomocí následujícího kódu. Tato třída dědí zGrain
třídy poskytované Orleans a implementujeIUrlShortenerGrain
rozhraní, které jste vytvořili. ZákladníGrain
třída poskytuje základní funkce pro vnitřní chování Orleans.C#public sealed class UrlShortenerGrain : Grain, IUrlShortenerGrain { private KeyValuePair<string, string> _cache; public Task SetUrl(string fullUrl) { _cache = new( key: this.GetPrimaryKeyString(), value: fullUrl); return Task.CompletedTask; } public Task<string> GetUrl() => Task.FromResult(_cache.Value); }
Metoda
SetUrl
ukládá zkrácený segment trasy a úplnou adresu URL v souboru IPersistentState<TState>. Když se agregační interval načte pomocí zkráceného identifikátoru,GetUrl
metoda pak vrátí úplnou adresu URL. Aplikace může pomocí úplné adresy URL přesměrovat uživatele do požadovaného umístění.
Vytvoření a konfigurace sila
V aplikaci jste definovali třídu a rozhraní zrnitosti. Pokud ale chcete úspěšně implementovat zrnko, musíte aplikaci nakonfigurovat tak, aby používala Orleans.
V horní části Program
třídy refaktorujte builder
kód tak, aby používal Orleans. Hotový kód by měl vypadat jako v následujícím příkladu:
using Orleans.Runtime;
var builder = WebApplication.CreateBuilder(args);
builder.Host.UseOrleans(siloBuilder =>
{
siloBuilder.UseLocalhostClustering();
});
using var app = builder.Build();
Kód používá ISiloBuilder k vytvoření sila, které může uchovávat zrnka. V tomto scénáři použijete cluster localhost, ale v produkční aplikaci můžete nakonfigurovat robustnější možnosti. Nezapomeňte, že cluster je kolekce sila pro vaši aplikaci.
Vaše aplikace je teď nastavená tak, aby během spouštění nakonfigurovali Orleans a vytvořili silo pro ukládání zrn. Také jste vytvořili třídu zrnitosti pro správu dat pro vaši aplikaci. V dalším kroku se dozvíte, jak tyto prvky umístit do práce vytvořením koncových bodů pro vytvoření a načtení zkrácených adres URL.