Programiranje

Kako začeti z Akka.Net

Akka.Net je odprtokodni, porazdeljeni računalniški okvir, ki ga je zgradil Petabridge. Akka.Net vam omogoča, da z uporabo igralčevega modela ustvarite razširljive, odporne, sočasne aplikacije, ki jih vodijo dogodki. V tem članku bom predstavil pomembne koncepte Akka.Net, razpravljal o tem, zakaj je uporaben, in vam pomagal začeti delati z Akka.Net v C #.

Igralski model je programska paradigma, ki temelji na asinhroni arhitekturi, ki temelji na sporočilih. V tej paradigmi je osnovna izvršilna enota igralec. Ta programska paradigma je primerna za gradnjo obsežnih, zapletenih, porazdeljenih aplikacij, ki so zelo zanesljive, vendar imajo lahko nepredvidljivo stopnjo zakasnitve.

Objektno usmerjen programski pristop za modeliranje problemske domene uporablja razrede in predmete. Ko delate v Akka.Netu, za oblikovanje svojega problema uporabljate igralce in sporočila. V Akka.Net je igralec objekt z določenim vedenjem. Čeprav imajo igralci notranje stanje, nimajo nobenega skupnega spremenljivega stanja. V svoji aplikaciji lahko imate več sočasnih akterjev, pri čemer vsak od njih samostojno obdela postopke. Akterje prepoznamo po naslovih. Izhajajo iz razreda ActorBase, nato pa lahko ustvarijo otroke igralce.

Igralci komunicirajo med seboj tako, da asinhrono prenašajo sporočila. V bistvu igralec prejme sporočilo in se nato odzove nanj bodisi z obdelavo bodisi s pošiljanjem drugega sporočila drugemu igralcu, da opravi delo. Sporočila v programu Akka.Net se obdelujejo zaporedno, eno za drugo, v vrstnem redu, v katerem prispejo. Ker se igralci lahko izvajajo lokalno ali na oddaljenem strežniku, je potrebna skupna oblika izmenjave sporočil. Sporočila Akka.Net so nespremenljiva. Lahko so primerki niza, celo število ali celo razred po meri.

Poglejmo, kako lahko sestavimo preprost razred igralcev in delamo s sporočili. Najprej namestite Akka.Net iz podjetja NuGet. To lahko storite tako, da v ukazni poziv NuGet vnesete naslednji ukaz.

Namestite paket Akka

Lahko pa namestite Akka.Net z uporabo okna upravitelja paketov NuGet znotraj Visual Studio IDE.

Upoštevajte, da morajo razredi igralcev po meri v Akka.Net izhajati iz UntypedActor razred, ki razširja ActorBase razred ogrodja Akka.Net. Evo, kako bi morala izgledati struktura igralniškega razreda po meri v Akka.Net.

javni razred ThisIsACustomActor: UntypedActor

    {

zaščiteno razveljavitev void PreStart ()

        {

// Tu lahko napišete katero koli inicializacijsko kodo

        }

zaščiteno preglasitev void PreRestart (razlog izjeme, sporočilo objekta)

        {

        }

zaščitena razveljavitev void OnReceive (sporočilo objekta)

        {         

// Ta metoda se uporablja za obdelavo sporočil

        }

zaščiteno razveljavitev void PostStop ()

        {

// Tukaj lahko napišete kodo za čiščenje.

// Ta metoda se pokliče, ko se igralec ustavi in ​​ne prejema več sporočil

        }

zaščiteno razveljavitev void PostRestart (razlog za izjemo)

        {

        }

    }

Ni vam treba preglasiti vseh teh metod. Zaradi poenostavitve bomo preglasili samo OnReceive metoda za izdelavo razreda igralcev po meri z minimalno funkcionalnostjo. Naslednji delček kode ustvari poimenovan razred igralca po meri BasicActor.

javni razred BasicActor: UntypedActor

    {

zaščitena razveljavitev void OnReceive (sporočilo objekta)

        {

če (sporočilo je niz)

            {

var msg = sporočilo kot niz;

Console.WriteLine (msg);

            }

        }

    }

Če želite ustvariti primerek igralca, morate izkoristiti Akka.Actor.ActorSystem razred. An ActorSystem lahko definiramo kot hierarhično zbirko akterjev z enako konfiguracijo. Naslednji delček kode prikazuje, kako lahko ustvarite primerek našega BasicActor razredu in mu nato posredujte sporočila.

statična praznina Main (string [] args)

        {

varctorSystem = ActorSystem.Create (“ActorSystem”);

var basicActor =ctorSystem.ActorOf ();

basicActor.Tell (»Pozdravljeni, svet!«);

Console.ReadLine ();

        }

Tu je treba opozoriti, da ko pošljete sporočilo igralcu, se sporočilo dostavi v nabiralnik, ki je razvrščen po vrstnem redu FIFO (prvi v, prvi ven). Nabiralnik sporočilo posreduje na OnReceive metoda le, če je igralec na voljo za njegovo obdelavo.

Tu je popoln seznam kod za vašo referenco.

z uporabo Akka.Actor;

z uporabo sistema;

imenski prostor AkkaDemo

{

razredni program

    {

statična praznina Main (string [] args)

        {

varctorSystem = ActorSystem.Create (“ActorSystem”);

var basicActor =ctorSystem.ActorOf ();

basicActor.Tell (»Pozdravljeni, svet!«);

Console.ReadLine ();

        }

    }

javni razred BasicActor: UntypedActor

    {

zaščitena razveljavitev void OnReceive (sporočilo objekta)

        {

če (sporočilo je niz)

            {

var msg = sporočilo kot niz;

Console.WriteLine (msg);

            }

        }

    }

}

Ko zaženete zgornji program, se prikaže sporočilo "Hello World!" bo prikazano v oknu konzole.

Akka.Net je odlična izbira, kadar potrebujete sočasnost in porazdeljeno računanje, saj vam omogoča, da namesto niti in ko-rutin delate z abstrakcijami na visoki ravni. Je odporna po zasnovi in ​​podpira prilagodljivo uravnoteženje obremenitve, particioniranje, usmerjanje in oddaljeno upravljanje na osnovi konfiguracije.

Akka.Net bom ponovno obiskal v prihodnjih objavah tukaj. Do takrat lahko več o Akka.Netu in igralčevem modelu izveste z raziskovanjem vsebine, ki je na voljo v zagonskem kampu Akka.Net podjetja Petabridge.

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