Προγραμματισμός

Πώς να ξεκινήσετε με το Akka.Net

Το Akka.Net είναι ένα ανοιχτού κώδικα, κατανεμημένο πλαίσιο υπολογιστών που δημιουργήθηκε από την Petabridge. Το Akka.Net σάς επιτρέπει να δημιουργήσετε επεκτάσιμες, ανθεκτικές, ταυτόχρονες, βασισμένες σε εκδηλώσεις εφαρμογές χρησιμοποιώντας το μοντέλο ηθοποιού. Σε αυτό το άρθρο θα παρουσιάσω τις σημαντικές έννοιες πίσω από το Akka.Net, θα συζητήσω γιατί είναι χρήσιμο και θα σας βοηθήσω να ξεκινήσετε να εργάζεστε με το Akka.Net στο C #.

Το μοντέλο ηθοποιού είναι ένα παράδειγμα προγραμματισμού που βασίζεται σε ασύγχρονη αρχιτεκτονική που βασίζεται σε μηνύματα. Σε αυτό το παράδειγμα, η βασική μονάδα εκτέλεσης είναι ένας ηθοποιός. Αυτό το πρότυπο προγραμματισμού είναι κατάλληλο για τη δημιουργία μεγάλης κλίμακας, πολύπλοκων, κατανεμημένων εφαρμογών που είναι εξαιρετικά αξιόπιστες, αλλά ενδέχεται να έχουν απρόβλεπτους βαθμούς καθυστέρησης.

Η αντικειμενοστρεφής προσέγγιση προγραμματισμού χρησιμοποιεί κλάσεις και αντικείμενα για τη μοντελοποίηση του προβληματικού τομέα. Όταν εργάζεστε στο Akka.Net, χρησιμοποιείτε ηθοποιούς και μηνύματα για να διαμορφώσετε το πρόβλημά σας. Στο Akka.Net, ένας ηθοποιός είναι ένα αντικείμενο με κάποια συγκεκριμένη συμπεριφορά. Ενώ οι ηθοποιοί έχουν εσωτερική κατάσταση, δεν έχουν κοινή κατάσταση μεταβλητής. Μπορείτε να έχετε πολλούς ταυτόχρονους ηθοποιούς στην αίτησή σας με καθεμία από αυτές να επεξεργάζεται ανεξάρτητα μόνη της. Οι ηθοποιοί προσδιορίζονται με διευθύνσεις. Προέρχονται από την κατηγορία ActorBase και με τη σειρά τους μπορούν να δημιουργήσουν παιδικούς ηθοποιούς.

Οι ηθοποιοί επικοινωνούν μεταξύ τους διαβιβάζοντας μηνύματα ασύγχρονα. Ουσιαστικά, ένας ηθοποιός λαμβάνει ένα μήνυμα και στη συνέχεια αντιδρά σε αυτό είτε με την επεξεργασία του είτε με τη μετάδοση ενός άλλου μηνύματος σε άλλον ηθοποιό για να κάνει τη δουλειά. Σημειώστε ότι τα μηνύματα στο Akka.Net επεξεργάζονται διαδοχικά, ένα κάθε φορά, με τη σειρά με την οποία φτάνουν. Επειδή οι ηθοποιοί μπορούν να εκτελούνται τοπικά ή σε έναν απομακρυσμένο διακομιστή, απαιτείται μια κοινή μορφή ανταλλαγής μηνυμάτων. Τα μηνύματα Akka.Net είναι αμετάβλητα. Μπορούν να είναι περιπτώσεις συμβολοσειράς, ακέραιου ή ακόμη και προσαρμοσμένης κλάσης.

Ας δούμε πώς μπορούμε να χτίσουμε μια απλή τάξη ηθοποιών και να δουλέψουμε με μηνύματα. Πρώτα απ 'όλα, πρέπει να εγκαταστήσετε το Akka.Net από το NuGet. Μπορείτε να το κάνετε πληκτρολογώντας την ακόλουθη εντολή στη γραμμή εντολών NuGet.

Εγκατάσταση-πακέτο Akka

Εναλλακτικά, μπορείτε να εγκαταστήσετε το Akka.Net χρησιμοποιώντας το παράθυρο διαχείρισης πακέτων NuGet μέσα από το Visual Studio IDE.

Σημειώστε ότι τα προσαρμοσμένα μαθήματα ηθοποιών στο Akka.Net πρέπει να προέρχονται από το Άτυπος ηθοποιός τάξη, η οποία επεκτείνει το Ηθοποιός κλάση του πλαισίου Akka.Net. Δείτε πώς πρέπει να είναι η δομή μιας προσαρμοσμένης τάξης ηθοποιών στο Akka.Net.

δημόσια τάξη ThisIsACustomActor: UntypedActor

    {

προστατευμένη παράκαμψη κενού PreStart ()

        {

// Μπορείτε να γράψετε οποιονδήποτε κωδικό αρχικοποίησης εδώ

        }

προστατευμένη παράκαμψη void PreRestart (Λόγος εξαίρεσης, μήνυμα αντικειμένου)

        {

        }

προστατευμένη παράκαμψη void OnReceive (μήνυμα αντικειμένου)

        {         

// Αυτή η μέθοδος χρησιμοποιείται για τον χειρισμό μηνυμάτων

        }

προστατευμένη παράκαμψη κενού PostStop ()

        {

// Εδώ μπορείτε να γράψετε τον κώδικα καθαρισμού.

// Αυτή η μέθοδος καλείται όταν ο ηθοποιός έχει σταματήσει και δεν λαμβάνει πλέον μηνύματα

        }

προστατευμένη παράκαμψη άκυρη PostRestart (Λόγος εξαίρεσης)

        {

        }

    }

Δεν χρειάζεται να παρακάμψετε όλες αυτές τις μεθόδους. Για λόγους απλότητας, θα παρακάμψουμε μόνο το OnReceive μέθοδος για να δημιουργήσετε μια προσαρμοσμένη κατηγορία ηθοποιών με ελάχιστη λειτουργικότητα. Το παρακάτω απόσπασμα κώδικα δημιουργεί μια προσαρμοσμένη κλάση ηθοποιού με το όνομα Βασικός ηθοποιός.

δημόσια τάξη BasicActor: UntypedActor

    {

προστατευμένη παράκαμψη void OnReceive (μήνυμα αντικειμένου)

        {

εάν (το μήνυμα είναι συμβολοσειρά)

            {

var msg = μήνυμα ως συμβολοσειρά;

Console.WriteLine (msg);

            }

        }

    }

Για να δημιουργήσετε μια παρουσία ενός ηθοποιού, θα πρέπει να επωφεληθείτε από το Akka.Actor.ActorSystem τάξη. Ενα Σύστημα ηθοποιών μπορεί να οριστεί ως μια ιεραρχική συλλογή ηθοποιών που έχουν την ίδια διαμόρφωση. Το παρακάτω απόσπασμα κώδικα δείχνει πώς μπορείτε να δημιουργήσετε μια παρουσία του Βασικός ηθοποιός τάξη και, στη συνέχεια, μεταδώστε μηνύματα σε αυτήν.

static void Main (συμβολοσειρά [] args)

        {

var اداکارSystem = ActorSystem.Create ("ActorSystem");

var basicActor = اداکارSystem.ActorOf ();

basicActor.Tell ("Γεια σου Κόσμος!")

Console.ReadLine ();

        }

Θα πρέπει να σημειωθεί εδώ ότι όταν στέλνετε ένα μήνυμα σε έναν ηθοποιό, το μήνυμα παραδίδεται σε ένα γραμματοκιβώτιο που έχει ταξινομηθεί με σειρά FIFO (first in, first out). Το γραμματοκιβώτιο προωθεί το μήνυμα στο OnReceive μέθοδο μόνο όταν ο ηθοποιός είναι διαθέσιμος για την επεξεργασία του.

Εδώ είναι η πλήρης λίστα κωδικών για την αναφορά σας.

χρησιμοποιώντας το Akka.Actor;

χρησιμοποιώντας το Σύστημα;

namespace AkkaDemo

{

Πρόγραμμα τάξης

    {

static void Main (συμβολοσειρά [] args)

        {

var اداکارSystem = ActorSystem.Create ("ActorSystem");

var basicActor = اداکارSystem.ActorOf ();

basicActor.Tell ("Γεια σου Κόσμος!")

Console.ReadLine ();

        }

    }

δημόσια τάξη BasicActor: UntypedActor

    {

προστατευμένη παράκαμψη κενού OnReceive (μήνυμα αντικειμένου)

        {

εάν (το μήνυμα είναι συμβολοσειρά)

            {

var msg = μήνυμα ως συμβολοσειρά;

Console.WriteLine (msg);

            }

        }

    }

}

Όταν εκτελείτε το παραπάνω πρόγραμμα, το μήνυμα "Hello World!" θα εμφανιστεί στο παράθυρο της κονσόλας.

Το Akka.Net είναι μια εξαιρετική επιλογή όταν χρειάζεστε ταυτόχρονη χρήση και κατανεμημένο υπολογισμό, καθώς σας επιτρέπει να εργαστείτε με αφαιρέσεις υψηλού επιπέδου αντί για νήματα και συν-ρουτίνες. Είναι ανθεκτικό στο σχεδιασμό και υποστηρίζει προσαρμοστική εξισορρόπηση φορτίου, διαμέριση, δρομολόγηση και απομακρυσμένη ρύθμιση παραμέτρων.

Θα επανεξετάσω το Akka.Net σε μελλοντικές δημοσιεύσεις εδώ. Μέχρι τότε, μπορείτε να μάθετε περισσότερα για το Akka.Net και το μοντέλο του ηθοποιού, εξερευνώντας το περιεχόμενο που διατίθεται στο Bootcamp του Akka.Net του Petabridge.

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