Programmering

Hvordan komme i gang med Akka.Net

Akka.Net er et åpen kildekode, distribuert databehandlingsrammer bygget av Petabridge. Akka.Net lar deg lage skalerbare, elastiske, samtidige, hendelsesdrevne applikasjoner ved bruk av skuespillermodellen. I denne artikkelen vil jeg introdusere de viktige konseptene bak Akka.Net, diskutere hvorfor det er nyttig, og hjelpe deg med å komme i gang med Akka.Net i C #.

Skuespillermodellen er et programmeringsparadigme som er basert på asynkron, meldingsdrevet arkitektur. I dette paradigmet er den grunnleggende utførelsesenheten en skuespiller. Dette programmeringsparadigmet er egnet for å bygge store, komplekse, distribuerte applikasjoner som er svært pålitelige, men som kan ha uforutsigbare grader av ventetid.

Den objektorienterte programmeringsmetoden bruker klasser og objekter til å modellere problemdomenet. Når du jobber i Akka.Net, bruker du skuespillere og meldinger for å modellere problemet ditt. I Akka.Net er en skuespiller et objekt med en viss spesifikk oppførsel. Selv om skuespillere har intern tilstand, har de ingen delt mutbar tilstand. Du kan ha mange samtidige aktører i søknaden din, hver av dem behandler operasjoner uavhengig alene. Skuespillere identifiseres av adresser. De kommer fra ActorBase-klassen, og i sin tur kan de lage barneaktører.

Skuespillere kommuniserer med hverandre ved å sende meldinger asynkront. I hovedsak mottar en skuespiller en melding og reagerer på den enten ved å behandle den eller ved å sende en annen melding til en annen skuespiller for å få jobben gjort. Merk at meldingene i Akka.Net behandles sekvensielt, en om gangen, i den rekkefølgen de ankommer. Siden skuespillere kan kjøre lokalt eller på en ekstern server, er det nødvendig med et vanlig format for meldingsutveksling. Akka.Net-meldinger er uforanderlige. De kan være forekomster av en streng, et heltall eller til og med en tilpasset klasse.

La oss se på hvordan vi kan bygge en enkel aktørklasse og jobbe med meldinger. Først og fremst bør du installere Akka.Net fra NuGet. Du kan gjøre dette ved å skrive følgende kommando ved NuGet-ledeteksten.

Install-pakke Akka

Alternativt kan du installere Akka.Net ved hjelp av NuGet-pakkehåndteringsvinduet fra Visual Studio IDE.

Merk at tilpassede skuespillerklasser i Akka.Net bør stamme fra UntypedActor klasse, som utvider ActorBase klasse av Akka.Net-rammeverket. Slik skal strukturen til en tilpasset skuespillerklasse i Akka.Net se ut.

offentlig klasse ThisIsACustomActor: UntypedActor

    {

beskyttet overstyring ugyldig PreStart ()

        {

// Du kan skrive hvilken som helst initialiseringskode her

        }

beskyttet overstyring ugyldig PreRestart (unntaksårsak, objektmelding)

        {

        }

beskyttet overstyring ugyldig OnReceive (objektmelding)

        {         

// Denne metoden brukes til å håndtere meldinger

        }

beskyttet overstyring ugyldig PostStop ()

        {

// Her kan du skrive oppryddingskoden.

// Denne metoden blir ringt når skuespilleren har stoppet og ikke lenger mottar meldinger

        }

beskyttet overstyring ugyldig PostRestart (unntaksårsak)

        {

        }

    }

Du trenger ikke å overstyre alle disse metodene. For enkelhets skyld vil vi bare overstyre OnReceive metode for å bygge en tilpasset skuespillerklasse med minimal funksjonalitet. Følgende kodebit oppretter en tilpasset aktørklasse som heter BasicActor.

offentlig klasse BasicActor: UntypedActor

    {

beskyttet overstyring ugyldig OnReceive (objektmelding)

        {

hvis (meldingen er streng)

            {

var msg = melding som streng;

Console.WriteLine (msg);

            }

        }

    }

For å lage en forekomst av en skuespiller, bør du dra nytte av Akka.Actor.ActorSystem klasse. An ActorSystem kan defineres som en hierarkisk samling av aktører som har identisk konfigurasjon. Følgende kodebit viser hvordan du kan opprette en forekomst av vår BasicActor klasse og deretter sende meldinger til den.

statisk tomrom Main (streng [] args)

        {

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

var basicActor = actorSystem.ActorOf ();

basicActor.Tell (“Hello World!”);

Console.ReadLine ();

        }

Det skal bemerkes her at når du sender en melding til en skuespiller, blir meldingen levert til en postkasse som er sortert i FIFO (først i, først ut) rekkefølge. Postkassen videresender meldingen til OnReceive metoden bare når skuespilleren er tilgjengelig for å behandle den.

Her er den komplette kodelisten for din referanse.

ved hjelp av Akka.Actor;

bruker System;

navnerom AkkaDemo

{

klasse Program

    {

statisk tomrom Main (streng [] args)

        {

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

var basicActor = actorSystem.ActorOf ();

basicActor.Tell (“Hello World!”);

Console.ReadLine ();

        }

    }

offentlig klasse BasicActor: UntypedActor

    {

beskyttet overstyring ugyldig OnReceive (objektmelding)

        {

hvis (meldingen er streng)

            {

var msg = melding som streng;

Console.WriteLine (msg);

            }

        }

    }

}

Når du kjører programmet ovenfor, vises meldingen "Hello World!" vises i konsollvinduet.

Akka.Net er et godt valg når du trenger samtidighet og distribuert beregning, da det lar deg jobbe med abstraksjoner på høyt nivå i stedet for tråder og co-rutiner. Den er elastisk av design og støtter adaptiv lastbalansering, partisjonering, ruting og konfigurasjonsbasert fjernstyring.

Jeg kommer tilbake til Akka.Net i fremtidige innlegg her. Inntil da kan du lære mer om Akka.Net og skuespillermodellen ved å utforske innholdet som er tilgjengelig på Petabridge’s Akka.Net bootcamp.

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