Programovanie

Ako začať s Akka.Net

Akka.Net je open source, distribuovaný výpočtový rámec postavený spoločnosťou Petabridge. Akka.Net vám umožňuje vytvárať škálovateľné, odolné, súčasné aplikácie založené na udalostiach pomocou modelu herec. V tomto článku predstavím dôležité pojmy, ktoré stoja za Akka.Net, rozoberiem, prečo je to užitočné, a pomôžem vám začať pracovať s Akka.Net v C #.

Herecký model je paradigma programovania, ktorá je založená na asynchrónnej architektúre riadenej správami. V tejto paradigme je základnou popravnou jednotkou herec. Táto paradigma programovania je vhodná na vytváranie rozsiahlych, komplexných a distribuovaných aplikácií, ktoré sú vysoko spoľahlivé, ale môžu mať nepredvídateľný stupeň latencie.

Objektovo orientovaný programovací prístup využíva na modelovanie problémovej domény triedy a objekty. Pri práci v sieti Akka.Net modelujete svoj problém pomocou hercov a správ. V Akka.Net je herec objekt s určitým špecifickým správaním. Hoci herci majú vnútorný stav, nemajú žiadny zdieľaný premenlivý stav. Vo svojej aplikácii môžete mať veľa súbežných aktérov, pričom každý z nich spracováva operácie nezávisle na sebe. Herci sú identifikovaní podľa adries. Vychádzajú z triedy ActorBase a môžu následne vytvárať detských hercov.

Herci medzi sebou komunikujú asynchrónnym odovzdávaním správ. Herec v zásade prijme správu a potom na ňu reaguje buď jej spracovaním, alebo odovzdaním inej správy ďalšiemu hercovi, aby vykonal svoju prácu. Upozorňujeme, že správy v sieti Akka.Net sa spracúvajú postupne, v poradí, v akom prišli. Pretože herci môžu bežať lokálne alebo na vzdialenom serveri, je potrebný spoločný formát výmeny správ. Správy Akka.Net sú nemenné. Môžu to byť inštancie reťazca, celého čísla alebo dokonca vlastnej triedy.

Pozrime sa, ako môžeme vytvoriť jednoduchú triedu hercov a pracovať so správami. Najskôr by ste si mali nainštalovať Akka.Net z NuGet. Môžete to urobiť zadaním nasledujúceho príkazu do príkazového riadku NuGet.

Inštalačný balík Akka

Prípadne môžete nainštalovať Akka.Net pomocou okna správcu balíkov NuGet z prostredia Visual Studio IDE.

Upozorňujeme, že vlastné triedy hercov v Akka.Net by mali pochádzať z UntypedActor triedy, ktorá rozširuje ActorBase trieda rámca Akka.Net. Tu by mala vyzerať štruktúra vlastnej triedy hercov v Akka.Net.

verejná trieda ThisIsACustomActor: UntypedActor

    {

protected override void PreStart ()

        {

// Tu môžete napísať ľubovoľný inicializačný kód

        }

protected override void PreRestart (dôvod výnimky, správa objektu)

        {

        }

protected override void OnReceive (správa objektu)

        {         

// Táto metóda sa používa na spracovanie správ

        }

chránené prepísanie zrušiť PostStop ()

        {

// Sem môžete napísať čistiaci kód.

// Táto metóda sa zavolá, keď sa herec zastavil a už neprijíma správy

        }

chránené prepísanie zrušiť PostRestart (dôvod výnimky)

        {

        }

    }

Nie je potrebné prepísať všetky tieto metódy. Kvôli jednoduchosti prepíšeme iba OnReceive metóda na vytvorenie vlastnej triedy herca s minimálnou funkčnosťou. Nasledujúci úryvok kódu vytvorí vlastnú triedu herca s názvom Základný herec.

verejná trieda BasicActor: UntypedActor

    {

protected override void OnReceive (správa objektu)

        {

if (správa je reťazec)

            {

var msg = správa ako reťazec;

Console.WriteLine (správa);

            }

        }

    }

Ak chcete vytvoriť inštanciu herca, mali by ste využiť výhody Akka.Actor.ActorSystem trieda. An ActorSystem možno definovať ako hierarchickú zbierku aktérov, ktorí majú identickú konfiguráciu. Nasledujúci úryvok kódu ukazuje, ako môžete vytvoriť inštanciu nášho súboru Základný herec triedy a potom jej odovzdávať správy.

static void Main (reťazec [] args)

        {

var herecSystem = ActorSystem.Create („ActorSystem“);

var basicActor = actorSystem.ActorOf ();

basicActor.Tell („Hello World!“);

Console.ReadLine ();

        }

Tu je potrebné poznamenať, že keď pošlete správu hercovi, správa sa doručí do poštovej schránky, ktorá je zoradená v poradí FIFO (prvý dovnútra, prvý von). Poštová schránka preposiela správu ďalej OnReceive metóda, iba ak je účastník k dispozícii na jej spracovanie.

Tu je kompletný zoznam kódov pre vašu referenciu.

pomocou Akka.Actor;

pomocou systému;

menný priestor AkkaDemo

{

triedny program

    {

static void Main (reťazec [] args)

        {

var herecSystem = ActorSystem.Create („ActorSystem“);

var basicActor = actorSystem.ActorOf ();

basicActor.Tell („Hello World!“);

Console.ReadLine ();

        }

    }

verejná trieda BasicActor: UntypedActor

    {

protected override void OnReceive (správa objektu)

        {

if (správa je reťazec)

            {

var msg = správa ako reťazec;

Console.WriteLine (správa);

            }

        }

    }

}

Po spustení vyššie uvedeného programu sa zobrazí správa „Hello World!“ sa zobrazí v okne konzoly.

Akka.Net je skvelou voľbou, keď potrebujete súbežnosť a distribuovaný výpočet, pretože vám umožňuje pracovať s abstrakciami na vysokej úrovni namiesto vlákien a bežných postupov. Je odolný už svojim dizajnom a podporuje adaptívne vyváženie záťaže, rozdelenie na oddiely, smerovanie a vzdialenú komunikáciu na základe konfigurácie.

Znovu navštívim Akka.Net v ďalších príspevkoch tu. Do tej doby sa dozviete viac o Akka.Net a hereckom modeli preskúmaním obsahu dostupného na bootcampu Petabridge’s Akka.Net.

$config[zx-auto] not found$config[zx-overlay] not found