Programavimas

Kaip pradėti naudotis „Akka.Net“

„Akka.Net“ yra atvirojo kodo paskirstytoji skaičiavimo sistema, sukurta „Petabridge“. Naudodamas aktoriaus modelį, „Akka.Net“ leidžia kurti keičiamo dydžio, atsparias, vienu metu vykstančias, įvykių valdomas programas. Šiame straipsnyje aš supažindinsiu su „Akka.Net“ svarbiomis sąvokomis, aptarsiu, kodėl tai naudinga, ir padėsiu pradėti dirbti su „Akka.Net“ C #.

Aktoriaus modelis yra programavimo paradigma, paremta asinchronine, pranešimais paremta architektūra. Šioje paradigmoje pagrindinis vykdymo vienetas yra veikėjas. Ši programavimo paradigma tinka kurti didelio masto, sudėtingas, paskirstytas programas, kurios yra labai patikimos, tačiau gali turėti nenuspėjamų vėlavimo laipsnių.

Objektinio programavimo metodas probleminėms sritims modeliuoti naudoja klases ir objektus. Dirbdami „Akka.Net“, modeliuodami problemą naudojate aktorius ir pranešimus. „Akka.Net“ veikėjas yra objektas, turintis tam tikrą specifinį elgesį. Nors aktoriai turi vidinę būseną, jie neturi jokios bendros kintamos būsenos. Savo programoje galite turėti daug vienu metu veikiančių subjektų, kurie kiekvienas atskirai apdoroja operacijas. Aktoriai identifikuojami pagal adresus. Jie kilę iš „ActorBase“ klasės ir savo ruožtu gali sukurti vaikų aktorius.

Aktoriai bendrauja tarpusavyje asinchroniškai perduodami žinutes. Iš esmės aktorius gauna pranešimą ir tada į jį reaguoja arba apdorodamas, arba perduodamas kitą pranešimą kitam aktoriui, kad atliktų darbą. Atkreipkite dėmesį, kad pranešimai „Akka.Net“ yra tvarkomi nuosekliai, po vieną, jų gavimo tvarka. Kadangi aktoriai gali veikti vietoje arba nuotoliniame serveryje, reikalingas bendras keitimosi pranešimais formatas. „Akka.Net“ pranešimai yra nekintami. Tai gali būti eilutės, sveiko skaičiaus ar net pasirinktinės klasės egzemplioriai.

Pažvelkime, kaip mes galime sukurti paprastą aktorių klasę ir dirbti su žinutėmis. Pirmiausia turėtumėte įdiegti „Akka.Net“ iš „NuGet“. Tai galite padaryti įvesdami šią komandą „NuGet“ komandų eilutėje.

„Install-Package Akka“

Arba galite įdiegti „Akka.Net“ naudodami „NuGet“ paketų tvarkyklės langą iš „Visual Studio IDE“.

Atkreipkite dėmesį, kad „Akka.Net“ aktorių klasės turėtų atsirasti iš Netyfuotas aktorius klasę, kuri pratęsia „ActorBase“ „Akka.Net“ sistemos klasė. Štai kaip turėtų atrodyti įprastos „Akka.Net“ aktorių klasės struktūra.

public class ThisIsACustomActor: UntypedActor

    {

apsaugotas nepaisymas negaliojantis „PreStart“ ()

        {

// Čia galite parašyti bet kokį inicializavimo kodą

        }

apsaugotas nepaisymas negaliojančio „PreRestart“ (išimties priežastis, objekto pranešimas)

        {

        }

apsaugotas nepaisymas negaliojančio OnReceive (objekto pranešimas)

        {         

// Šis metodas naudojamas pranešimams tvarkyti

        }

apsaugotas nepaisymas negalioja „PostStop“ ()

        {

// Čia galite parašyti valymo kodą.

// Šis metodas iškviečiamas, kai aktorius sustoja ir nebegauna pranešimų

        }

apsaugotas nepaisymas negalioja PostRestart (išimties priežastis)

        {

        }

    }

Jums nereikia ignoruoti visų šių metodų. Paprastumo sumetimais mes nepaisysime tik OnReceive metodas sukurti pasirinktą aktorių klasę su minimaliu funkcionalumu. Šis kodo fragmentas sukuria pasirinktą aktoriaus klasę, pavadintą Pagrindinis aktorius.

viešosios klasės „BasicActor“: „UntypedActor“

    {

apsaugotas nepaisymas negaliojančio OnReceive (objekto pranešimas)

        {

jei (pranešimas yra eilutė)

            {

var msg = pranešimas kaip eilutė;

Console.WriteLine (msg);

            }

        }

    }

Norėdami sukurti aktoriaus egzempliorių, turėtumėte pasinaudoti Akka.Actor.ActorSystem klasė. An „ActorSystem“ gali būti apibrėžta kaip hierarchinė veikėjų, turinčių identišką konfigūraciją, kolekcija. Šis kodo fragmentas parodo, kaip galite sukurti mūsų egzempliorių Pagrindinis aktorius klasę ir tada perduoti jai žinutes.

static void Main (string [] args)

        {

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

var basicActor = activSystem.ActorOf ();

basicActor.Tell („Labas pasaulis!“);

Pultas.ReadLine ();

        }

Čia reikia pažymėti, kad kai jūs išsiunčiate pranešimą aktoriui, pranešimas pristatomas į pašto dėžutę, kuri rūšiuojama FIFO (pirmas į pirmąjį, pirmas iš eilės) tvarka. Pašto dėžutė persiunčia pranešimą į OnReceive metodas tik tada, kai aktorius gali jį apdoroti.

Čia yra visas jūsų kodo sąrašas.

naudojant Akka.Actor;

naudojant sistemą;

vardų sritis „AkkaDemo“

{

klasės programa

    {

static void Main (string [] args)

        {

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

var basicActor = activSystem.ActorOf ();

basicActor.Tell („Labas pasaulis!“);

Pultas.ReadLine ();

        }

    }

viešoji klasė „BasicActor“: „UntypedActor“

    {

apsaugotas nepaisymas negaliojančio OnReceive (objekto pranešimas)

        {

jei (pranešimas yra eilutė)

            {

var msg = pranešimas kaip eilutė;

Console.WriteLine (msg);

            }

        }

    }

}

Paleidus pirmiau nurodytą programą, pranešimas „Sveikas pasaulis!“ bus rodomas konsolės lange.

„Akka.Net“ yra puikus pasirinkimas, kai jums reikia lygiagretumo ir paskirstyto skaičiavimo, nes tai leidžia dirbti su aukšto lygio abstrakcijomis vietoj gijų ir bendrų rutinų. Pagal konstrukciją jis yra atsparus ir palaiko adaptyvų apkrovos balansavimą, skaidymą, nukreipimą ir konfigūracija pagrįstą nuotolinį valdymą.

Aš dar kartą apsilankysiu „Akka.Net“ būsimuose pranešimuose čia. Iki to laiko galite sužinoti daugiau apie „Akka.Net“ ir aktoriaus modelį, tyrinėdami turinį, kurį galite rasti „Petabridge“ programoje „Akka.Net“.

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