Bagaimana cara memulai Akka.Net

Akka.Net adalah open source, framework komputasi terdistribusi yang dibangun oleh Petabridge. Akka.Net memungkinkan Anda membuat aplikasi yang dapat diskalakan, tangguh, bersamaan, dan digerakkan oleh peristiwa menggunakan model aktor. Pada artikel ini saya akan memperkenalkan konsep penting di balik Akka.Net, membahas mengapa ini berguna, dan membantu Anda mulai bekerja dengan Akka.Net di C #.

Model aktor adalah paradigma pemrograman yang didasarkan pada arsitektur asynchronous, message-driven. Dalam paradigma ini, unit dasar eksekusi adalah aktor. Paradigma pemrograman ini cocok untuk membangun aplikasi berskala besar, kompleks, dan terdistribusi yang sangat andal, tetapi mungkin memiliki derajat latensi yang tidak dapat diprediksi.

Pendekatan pemrograman berorientasi objek menggunakan kelas dan objek untuk memodelkan domain masalah. Saat bekerja di Akka.Net, Anda menggunakan aktor dan pesan untuk mencontoh masalah Anda. Dalam Akka.Net, aktor adalah objek dengan beberapa perilaku tertentu. Meskipun aktor memiliki status internal, mereka tidak memiliki status yang dapat berubah bersama. Anda dapat memiliki banyak aktor serentak dalam aplikasi Anda dengan masing-masing dari mereka memproses operasi sendiri-sendiri. Aktor diidentifikasi berdasarkan alamat. Mereka berasal dari kelas ActorBase dan pada gilirannya mereka dapat menciptakan aktor cilik.

Aktor berkomunikasi satu sama lain dengan meneruskan pesan secara asinkron. Pada dasarnya, aktor menerima pesan dan kemudian bereaksi baik dengan memprosesnya atau dengan meneruskan pesan lain ke aktor lain untuk menyelesaikan pekerjaan. Perhatikan bahwa pesan di Akka.Net diproses secara berurutan, satu per satu, sesuai urutan kedatangannya. Karena aktor dapat berjalan secara lokal atau di server jauh, format pertukaran pesan umum diperlukan. Pesan Akka.Net tidak dapat diubah. Mereka bisa berupa instance string, integer, atau bahkan kelas kustom.

Mari kita lihat bagaimana kita bisa membangun kelas aktor sederhana dan bekerja dengan pesan. Pertama, Anda harus menginstal Akka.Net dari NuGet. Anda dapat melakukan ini dengan mengetik perintah berikut di prompt perintah NuGet.

Install-Package Akka

Alternatifnya, Anda dapat menginstal Akka.Net menggunakan jendela manajer paket NuGet dari dalam Visual Studio IDE.

Perhatikan bahwa kelas aktor kustom di Akka.Net harus berasal dari UntypedActorkelas, yang memperluas ActorBasekelas kerangka Akka.Net. Begini tampilan struktur kelas aktor kustom di Akka.Net.

kelas publik ThisIsACustomActor: UntypedActor

    {

        dilindungi override void PreStart ()

        {

            // Anda dapat menulis kode inisialisasi apa pun di sini

        }

        protected override void PreRestart (Alasan pengecualian, pesan objek)

        {

        }

        dilindungi override void OnReceive (pesan objek)

        {         

           // Metode ini digunakan untuk menangani pesan

        }

        dilindungi menimpa void PostStop ()

        {

            // Di sinilah Anda dapat menulis kode pembersihan.

            // Metode ini dipanggil ketika aktor berhenti dan tidak lagi menerima pesan

        }

        protected override void PostRestart (Alasan pengecualian)

        {

        }

    }

Anda tidak perlu mengganti semua metode ini. Demi kesederhanaan, kami hanya akan mengganti OnReceivemetode untuk membangun kelas aktor kustom dengan fungsionalitas minimal. Cuplikan kode berikut membuat kelas aktor kustom bernama BasicActor.

kelas publik BasicActor: UntypedActor

    {

        dilindungi override void OnReceive (pesan objek)

        {

            if (pesan adalah string)

            {

                var msg = pesan sebagai string;

                Console.WriteLine (msg);

            }

        }

    }

Untuk membuat instance aktor, Anda harus memanfaatkan Akka.Actor.ActorSystemkelas. An ActorSystemdapat didefinisikan sebagai kumpulan hierarkis aktor yang memiliki konfigurasi identik. Cuplikan kode berikut menunjukkan bagaimana Anda dapat membuat instance dari BasicActorkelas kita dan kemudian meneruskan pesan ke sana.

static void Main (string [] args)

        {

            var actorSystem = ActorSystem.Create ("ActorSystem");

            var basicActor = actorSystem.ActorOf ();

            basicActor.Tell (“Halo Dunia!”);

            Console.ReadLine ();

        }

Perlu dicatat di sini bahwa ketika Anda mengirim pesan ke seorang aktor, pesan tersebut dikirim ke kotak surat yang diurutkan dalam urutan FIFO (first in, first out). Kotak surat meneruskan pesan ke OnReceivemetode hanya jika aktor tersedia untuk memprosesnya.

Berikut adalah daftar kode lengkap untuk referensi Anda.

menggunakan Akka.Actor;

menggunakan Sistem;

namespace AkkaDemo

{

    Program kelas

    {

        static void Main (string [] args)

        {

            var actorSystem = ActorSystem.Create ("ActorSystem");

            var basicActor = actorSystem.ActorOf ();

            basicActor.Tell (“Halo Dunia!”);

            Console.ReadLine ();

        }

    }

    kelas publik BasicActor: UntypedActor

    {

       dilindungi override void OnReceive (pesan objek)

        {

            if (pesan adalah string)

            {

                var msg = pesan sebagai string;

                Console.WriteLine (msg);

            }

        }

    }

}

Saat Anda menjalankan program di atas, pesan "Hello World!" akan ditampilkan di jendela konsol.

Akka.Net adalah pilihan tepat ketika Anda membutuhkan komputasi konkurensi dan terdistribusi, karena memungkinkan Anda bekerja dengan abstraksi tingkat tinggi sebagai pengganti utas dan rutinitas bersama. Ini tangguh dengan desain dan mendukung load balancing adaptif, partisi, perutean, dan jarak jauh berbasis konfigurasi.

Saya akan mengunjungi kembali Akka.Net di posting selanjutnya di sini. Sampai saat itu, Anda dapat mempelajari lebih lanjut tentang Akka.Net dan model aktor dengan menjelajahi konten yang tersedia di bootcamp Akka.Net Petabridge.