Programmēšana

Kā sākt darbu ar Akka.Net

Akka.Net ir atvērtā koda izplatīta skaitļošanas sistēma, kuru ir uzbūvējis Petabridge. Akka.Net ļauj jums izveidot mērogojamas, elastīgas, vienlaicīgas, notikumu virzītas lietojumprogrammas, izmantojot aktiera modeli. Šajā rakstā es iepazīstināšu ar Akka.Net svarīgajiem jēdzieniem, apspriedīšu, kāpēc tas ir noderīgi, un palīdzēsim sākt darbu ar Akka.Net C #.

Aktiera modelis ir programmēšanas paradigma, kuras pamatā ir asinhrona, uz ziņām balstīta arhitektūra. Šajā paradigmā izpildes pamatvienība ir aktieris. Šī programmēšanas paradigma ir piemērota liela mēroga, sarežģītu, izplatītu lietojumprogrammu veidošanai, kas ir ļoti uzticamas, bet kurām var būt neparedzama latentuma pakāpe.

Objektorientētā programmēšanas pieeja problēmas domēna modelēšanai izmanto klases un objektus. Strādājot Akka.Net, jūs izmantojat dalībniekus un ziņojumus, lai modelētu savu problēmu. Vietnē Akka.Net aktieris ir objekts ar noteiktu uzvedību. Kaut arī dalībniekiem ir iekšējs stāvoklis, viņiem nav kopīga mainīga stāvokļa. Jūsu lietojumprogrammā var būt daudz vienlaicīgu dalībnieku, un katrs no viņiem pats atsevišķi veic apstrādes darbības. Aktieri tiek identificēti pēc adresēm. Viņi nāk no ActorBase klases un savukārt var radīt bērnu aktierus.

Aktieri sazinās viens ar otru, asinhroni nododot ziņas. Būtībā aktieris saņem ziņojumu un pēc tam uz to reaģē, vai nu apstrādājot to, vai arī nododot citu ziņojumu citam aktierim, lai tas paveiktu darbu. Ņemiet vērā, ka Akka.Net ziņojumi tiek apstrādāti secīgi, pa vienam, secībā, kādā tie tiek saņemti. Tā kā aktieri var darboties lokāli vai attālā serverī, ir nepieciešams kopīgs ziņojumu apmaiņas formāts. Akka.Net ziņojumi nav maināmi. Tie var būt virknes, vesela skaitļa vai pat pielāgotas klases gadījumi.

Apskatīsim, kā mēs varam izveidot vienkāršu aktieru klasi un strādāt ar vēstījumiem. Vispirms jums jāinstalē Akka.Net no NuGet. To var izdarīt, ierakstot komandu NuGet komandrindā šo komandu.

Install-Package Akka

Alternatīvi, jūs varat instalēt Akka.Net, izmantojot Visual Studio IDE logu NuGet pakešu pārvaldnieks.

Ņemiet vērā, ka Akka.Net pasūtījuma dalībnieku klasēm vajadzētu būt no NettypedActor klase, kas pagarina ActorBase klases Akka.Net ietvaru. Lūk, kā jāizskatās pielāgotas aktieru klases struktūrai Akka.Net.

publiskā klase ThisIsACustomActor: UntypedActor

    {

aizsargāts ignorēt spēkā neesošu PreStart ()

        {

// Šeit var ierakstīt jebkuru inicializācijas kodu

        }

aizsargāts ignorēt anulēto PreRestart (izņēmuma iemesls, objekta ziņojums)

        {

        }

aizsargāts ignorēt spēkā neesošu OnReceive (objekta ziņojums)

        {         

// Šo metodi izmanto ziņojumu apstrādei

        }

aizsargāts ignorēt spēkā neesošu PostStop ()

        {

// Šeit var ierakstīt attīrīšanas kodu.

// Šī metode tiek izsaukta, kad aktieris ir apstājies un vairs nesaņem ziņojumus

        }

aizsargāts ignorēt spēkā neesošu PostRestart (izņēmuma iemesls)

        {

        }

    }

Jums nav nepieciešams ignorēt visas šīs metodes. Vienkāršības labad mēs ignorēsim tikai OnReceive metode, lai izveidotu pielāgotu aktieru klasi ar minimālu funkcionalitāti. Šis koda fragments izveido pielāgotu aktieru klasi ar nosaukumu BasicActor.

publiskā klase BasicActor: UntypedActor

    {

aizsargāts ignorēt spēkā neesošu OnReceive (objekta ziņojums)

        {

ja (ziņojums ir virkne)

            {

var msg = ziņojums kā virkne;

Console.WriteLine (msg);

            }

        }

    }

Lai izveidotu aktiera gadījumu, jums vajadzētu izmantot Akka.Actor.ActorSystem klasē. An ActorSystem var definēt kā tādu dalībnieku hierarhisku kolekciju, kuriem ir identiska konfigurācija. Šis koda fragments parāda, kā jūs varat izveidot mūsu instanci BasicActor klasē un pēc tam nodot tai ziņas.

static void Main (virkne [] args)

        {

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

var basicActor = activSystem.ActorOf ();

basicActor.Tell (“Sveika pasaule!”);

Console.ReadLine ();

        }

Šeit jāatzīmē, ka, nosūtot ziņojumu dalībniekam, ziņojums tiek piegādāts pastkastē, kas tiek sakārtota FIFO (pirmais iekšā, pirmais ārā) secībā. Pastkaste pārsūta ziņojumu uz OnReceive metodi tikai tad, kad aktieris ir pieejams tās apstrādei.

Šeit ir pilns kodu saraksts jūsu atsaucei.

izmantojot Akka.Actor;

izmantojot sistēmu;

nosaukumvieta AkkaDemo

{

klases programma

    {

static void Main (virkne [] args)

        {

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

var basicActor = activSystem.ActorOf ();

basicActor.Tell (“Sveika pasaule!”);

Console.ReadLine ();

        }

    }

publiskā klase BasicActor: UntypedActor

    {

aizsargāts ignorēt spēkā neesošu OnReceive (objekta ziņojums)

        {

ja (ziņojums ir virkne)

            {

var msg = ziņojums kā virkne;

Console.WriteLine (msg);

            }

        }

    }

}

Palaidot iepriekš minēto programmu, tiek parādīts ziņojums “Sveika pasaule!” tiks parādīts konsoles logā.

Akka.Net ir lieliska izvēle, kad nepieciešama vienlaicība un sadalīta aprēķināšana, jo tā ļauj strādāt ar augsta līmeņa abstrakcijām pavedienu un kopējas kārtības vietā. Tas ir elastīgs pēc konstrukcijas un atbalsta adaptīvu slodzes līdzsvarošanu, sadalīšanu, maršrutēšanu un uz konfigurāciju balstītu tālvadību.

Es atkārtoti apmeklēšu Akka.Net turpmākajos ierakstos šeit. Līdz tam jūs varat uzzināt vairāk par Akka.Net un aktiera modeli, izpētot Petabridge’s Akka.Net sāknēšanas kempingā pieejamo saturu.

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