Programování

Jak začít s Akka.Net

Akka.Net je open source, distribuovaný výpočetní rámec vytvořený společností Petabridge. Akka.Net vám umožňuje vytvářet škálovatelné, odolné, souběžné aplikace založené na událostech pomocí modelu herec. V tomto článku představím důležité koncepty Akka.Net, proberu, proč je to užitečné, a pomůžu vám začít pracovat s Akka.Net v C #.

Model herec je paradigma programování, které je založeno na asynchronní architektuře založené na zprávách. V tomto paradigmatu je základní jednotkou provedení herec. Toto paradigma programování je vhodné pro vytváření rozsáhlých, složitých a distribuovaných aplikací, které jsou vysoce spolehlivé, ale mohou mít nepředvídatelné stupně latence.

Objektově orientovaný programovací přístup používá třídy a objekty k modelování problémové domény. Při práci v Akka.Net modelujete svůj problém pomocí herců a zpráv. V Akka.Net je herec objekt s určitým specifickým chováním. I když herci mají vnitřní stav, nemají žádný sdílený proměnlivý stav. Ve své aplikaci můžete mít mnoho souběžných aktérů, přičemž každý z nich zpracovává operace samostatně samostatně. Herci jsou identifikováni podle adres. Pocházejí z třídy ActorBase a zase mohou vytvářet podřízené herce.

Herci spolu komunikují předáváním zpráv asynchronně. Herec v zásadě přijme zprávu a poté na ni reaguje buď zpracováním, nebo předáním jiné zprávy jinému herci, aby svou práci dokončil. Všimněte si, že zprávy v Akka.Net jsou zpracovávány postupně, jeden po druhém, v pořadí, v jakém přicházejí. Protože herci mohou běžet místně nebo na vzdáleném serveru, je nutný společný formát pro výměnu zpráv. Zprávy Akka.Net jsou neměnné. Mohou to být instance řetězce, celého čísla nebo dokonce vlastní třídy.

Pojďme se podívat na to, jak můžeme vytvořit jednoduchou třídu herců a pracovat se zprávami. Nejprve byste měli nainstalovat Akka.Net z NuGet. To lze provést zadáním následujícího příkazu na příkazovém řádku NuGet.

Instalační balíček Akka

Alternativně můžete nainstalovat Akka.Net pomocí okna správce balíčků NuGet z prostředí Visual Studio IDE.

Všimněte si, že vlastní třídy herců v Akka.Net by měly pocházet z UntypedActor třída, která rozšiřuje ActorBase třída rámce Akka.Net. Zde by měla vypadat struktura vlastní třídy herců v Akka.Net.

veřejná třída ThisIsACustomActor: UntypedActor

    {

protected override void PreStart ()

        {

// Zde můžete napsat libovolný inicializační kód

        }

protected override void PreRestart (důvod výjimky, zpráva objektu)

        {

        }

protected override void OnReceive (zpráva o objektu)

        {         

// Tato metoda se používá ke zpracování zpráv

        }

chráněné přepsání neplatné PostStop ()

        {

// Zde můžete napsat čisticí kód.

// Tato metoda se zavolá, když se herec zastavil a již nepřijímá zprávy

        }

chráněné přepsání neplatné PostRestart (důvod výjimky)

        {

        }

    }

Nemusíte přepsat všechny tyto metody. Kvůli jednoduchosti přepíšeme pouze OnReceive metoda k vytvoření vlastní třídy herce s minimální funkčností. Následující fragment kódu vytvoří vlastní třídu herec s názvem Základní herec.

veřejná třída BasicActor: UntypedActor

    {

protected override void OnReceive (zpráva o objektu)

        {

if (zpráva je řetězec)

            {

var msg = zpráva jako řetězec;

Console.WriteLine (zpráva);

            }

        }

    }

Chcete-li vytvořit instanci herce, měli byste využít výhod Akka.Actor.ActorSystem třída. An Herecký systém lze definovat jako hierarchickou sbírku aktérů, kteří mají identickou konfiguraci. Následující fragment kódu ukazuje, jak můžete vytvořit instanci naší Základní herec třídy a poté do ní předávat zprávy.

static void Main (řetězec [] args)

        {

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

var basicActor = actorSystem.ActorOf ();

basicActor.Tell („Ahoj světe!“);

Console.ReadLine ();

        }

Zde je třeba poznamenat, že když odešlete zprávu herci, zpráva se doručí do poštovní schránky, která je tříděna v pořadí FIFO (první dovnitř, první ven). Poštovní schránka přeposílá zprávu do OnReceive metoda pouze v případě, že herec je k dispozici ke zpracování.

Zde je kompletní seznam kódů pro vaši referenci.

pomocí Akka.Actor;

pomocí systému;

jmenný prostor AkkaDemo

{

třídní program

    {

static void Main (řetězec [] args)

        {

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

var basicActor = actorSystem.ActorOf ();

basicActor.Tell („Hello World!“);

Console.ReadLine ();

        }

    }

veřejná třída BasicActor: UntypedActor

    {

protected override void OnReceive (zpráva o objektu)

        {

if (zpráva je řetězec)

            {

var msg = zpráva jako řetězec;

Console.WriteLine (zpráva);

            }

        }

    }

}

Po spuštění výše uvedeného programu se zobrazí zpráva „Hello World!“ se zobrazí v okně konzoly.

Akka.Net je skvělou volbou, když potřebujete souběžnost a distribuovaný výpočet, protože vám umožňuje pracovat s abstrakcemi na vysoké úrovni místo podprocesů a společných rutin. Je odolný designem a podporuje adaptivní vyvažování zátěže, rozdělení, směrování a vzdálenou komunikaci na základě konfigurace.

Vrátím se na Akka.Net v budoucích příspěvcích zde. Do té doby se můžete dozvědět více o Akka.Net a hereckém modelu prozkoumáním obsahu dostupného na Petabridge's bootcampu Akka.Net.

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