Programmering

Sådan kommer du i gang med Akka.Net

Akka.Net er en open source, distribueret computerramme bygget af Petabridge. Akka.Net giver dig mulighed for at oprette skalerbare, modstandsdygtige, samtidige, begivenhedsdrevne applikationer ved hjælp af skuespillermodellen. I denne artikel vil jeg introducere de vigtige begreber bag Akka.Net, diskutere hvorfor det er nyttigt og hjælpe dig med at komme i gang med at arbejde med Akka.Net i C #.

Skuespillermodellen er et programmeringsparadigme, der er baseret på asynkron, meddelelsesdrevet arkitektur. I dette paradigme er den grundlæggende enhed for udførelse en skuespiller. Dette programmeringsparadigme er velegnet til opbygning af store, komplekse, distribuerede applikationer, der er meget pålidelige, men som kan have uforudsigelige grader af latenstid.

Den objektorienterede programmeringsmetode bruger klasser og objekter til at modellere problemdomænet. Når du arbejder i Akka.Net, bruger du skuespillere og beskeder til at modellere dit problem. I Akka.Net er en skuespiller et objekt med en bestemt opførsel. Mens aktører har intern tilstand, har de ingen delt mutabel tilstand. Du kan have mange samtidige aktører i din applikation, hvor hver af dem behandler operationer uafhængigt alene. Skuespillere identificeres ved adresser. De stammer fra ActorBase-klassen, og til gengæld kan de skabe børneaktører.

Skuespillere kommunikerer med hinanden ved at sende meddelelser asynkront. I det væsentlige modtager en skuespiller en besked og reagerer derefter på den enten ved at behandle den eller ved at sende en anden besked til en anden skuespiller for at få arbejdet gjort. Bemærk, at meddelelserne i Akka.Net behandles sekventielt, én ad gangen, i den rækkefølge, de ankommer til. Da skuespillere kan køre lokalt eller på en ekstern server, er det nødvendigt med et fælles meddelelsesudvekslingsformat. Akka.Net-meddelelser er uforanderlige. De kan være forekomster af en streng, et heltal eller endda en brugerdefineret klasse.

Lad os se på, hvordan vi kan opbygge en simpel aktørklasse og arbejde med beskeder. Først skal du installere Akka.Net fra NuGet. Du kan gøre dette ved at skrive følgende kommando ved NuGet-kommandoprompten.

Install-pakke Akka

Alternativt kan du installere Akka.Net ved hjælp af NuGet-pakkehåndteringsvinduet fra Visual Studio IDE.

Bemærk, at tilpassede skuespillerklasser i Akka.Net skal stamme fra UntypedActor klasse, der udvider ActorBase klasse af Akka.Net-rammen. Sådan skal strukturen i en brugerdefineret aktørklasse i Akka.Net se ud.

offentlig klasse ThisIsACustomActor: UntypedActor

    {

beskyttet tilsidesættelse ugyldig PreStart ()

        {

// Du kan skrive enhver initialiseringskode her

        }

beskyttet tilsidesættelse ugyldig PreRestart (Undtagelsesårsag, objektbesked)

        {

        }

beskyttet tilsidesættelse ugyldig OnReceive (objektbesked)

        {         

// Denne metode bruges til at håndtere meddelelser

        }

beskyttet tilsidesættelse ugyldig PostStop ()

        {

// Her er hvor du kan skrive oprydningskoden.

// Denne metode kaldes, når skuespilleren er stoppet og ikke længere modtager beskeder

        }

beskyttet tilsidesættelse ugyldig PostRestart (grund til undtagelse)

        {

        }

    }

Du behøver ikke at tilsidesætte alle disse metoder. Af enkelheds skyld vil vi kun tilsidesætte OnReceive metode til at opbygge en brugerdefineret skuespillerklasse med minimal funktionalitet. Følgende kodestykke opretter en brugerdefineret aktørklasse med navnet BasicActor.

offentlig klasse BasicActor: UntypedActor

    {

beskyttet tilsidesættelse ugyldig OnReceive (objektbesked)

        {

hvis (besked er streng)

            {

var msg = besked som streng;

Console.WriteLine (msg);

            }

        }

    }

For at oprette en instans af en skuespiller skal du drage fordel af Akka.Actor.ActorSystem klasse. En ActorSystem kan defineres som en hierarkisk samling af aktører, der har identisk konfiguration. Følgende kodestykke viser, hvordan du kan oprette en forekomst af vores BasicActor klasse og derefter sende meddelelser til den.

statisk ugyldigt Main (streng [] args)

        {

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

var basicActor = actorSystem.ActorOf ();

basicActor.Tell (“Hello World!”);

Console.ReadLine ();

        }

Det skal bemærkes her, at når du sender en besked til en skuespiller, leveres beskeden til en postkasse, der er sorteret i FIFO (først i, først ud) rækkefølge. Postkassen videresender beskeden til OnReceive metode kun når skuespilleren er tilgængelig til at behandle den.

Her er den komplette kodeliste til din reference.

ved hjælp af Akka.Actor;

ved hjælp af System;

navneområde AkkaDemo

{

klasse Program

    {

statisk ugyldigt Main (streng [] args)

        {

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

var basicActor = actorSystem.ActorOf ();

basicActor.Tell (“Hello World!”);

Console.ReadLine ();

        }

    }

offentlig klasse BasicActor: UntypedActor

    {

beskyttet tilsidesættelse ugyldig OnReceive (objektbesked)

        {

hvis (besked er streng)

            {

var msg = besked som streng;

Console.WriteLine (msg);

            }

        }

    }

}

Når du kører ovenstående program, vises meddelelsen “Hello World!” vises i konsolvinduet.

Akka.Net er et godt valg, når du har brug for samtidighed og distribueret beregning, da det giver dig mulighed for at arbejde med abstraktioner på højt niveau i stedet for tråde og co-rutiner. Det er elastisk af design og understøtter adaptiv belastningsbalancering, partitionering, routing og konfigurationsbaseret fjernstyring.

Jeg vil besøge Akka.Net i fremtidige indlæg her. Indtil da kan du lære mere om Akka.Net og skuespillermodellen ved at udforske det tilgængelige indhold på Petabridge's Akka.Net bootcamp.

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