Apa itu Objek Aktif?

Dalam pemrograman dan rekayasa komputer, objek aktif adalah jenis pola desain yang dapat digunakan untuk membantu memastikan bahwa beberapa layanan selalu tersedia dalam sistem multi-utas atau bersamaan. Objek aktif adalah objek yang mengimplementasikan mekanisme sehingga dapat menerima dan memproses input dari objek eksternal tanpa memaksa objek eksternal untuk menunggu eksekusi selesai. Mekanisme ini juga memungkinkan banyak objek yang mungkin semuanya berjalan secara bersamaan untuk menggunakan objek aktif tanpa kemungkinan waktu pemblokiran yang lama di mana proses bersamaan harus berhenti dan menunggu akses. Ini paling sering dicapai dengan membungkus objek aktif dalam antarmuka yang dapat diakses publik, yang disebut proxy, dan kemudian menerapkan jenis sistem antrian di dalam objek sehingga pesan disimpan untuk diproses nanti. Ini menciptakan pola desain di mana objek mengirim pesan ke objek aktif dan kemudian melanjutkan pemrosesannya hingga objek aktif memproses pesan dan kemudian memberi tahu objek pemanggil tentang hasilnya sehingga mereka dapat memperbarui statusnya.

Di luar pola desain objek aktif, objek normal dapat disebut sebagai objek pasif. Dalam contoh program sederhana, objek pasif mungkin bertindak sebagai relai server obrolan, di mana objek jarak jauh menghubungi objek pasif untuk mengirimkan pesan ke semua orang di server. Setiap kali objek server pasif menerima pesan obrolan dari objek jarak jauh, ia harus menangani permintaan segera dan kemudian segera mengirim output, sementara objek jarak jauh menghentikan eksekusinya sendiri sampai proses selesai, efek yang dikenal sebagai pemblokiran. Membuat utas yang berbeda dalam program dapat memecahkan masalah pemblokiran eksekusi tetapi kemudian memulai masalah dengan sinkronisasi.

Dalam pola desain objek aktif, objek server yang sama dalam contoh di atas akan berjalan di utasnya sendiri yang terpisah dari objek lain. Itu juga akan dibungkus dalam beberapa jenis antarmuka yang dikenal sebagai proxy yang juga berjalan di utas terpisah, terkadang utas eksekusi program utama. Ketika objek jarak jauh ingin agar objek server mengirimkan pesan obrolan, objek tersebut akan menghubungi objek proxy, meneruskan semua informasi yang diperlukan kepadanya, dan kemudian kembali ke status eksekusi normal alih-alih menunggu.

Antarmuka proxy kemudian mengubah informasi dari objek jarak jauh menjadi pesan yang diteruskan ke antrian untuk diproses objek aktif. Pada titik ini, baik antarmuka proxy dan objek jarak jauh bebas untuk melanjutkan eksekusi dan tidak diblokir. Sementara itu, objek aktif berfungsi untuk menjaga antrian tetap kosong, memproses setiap pesan yang masuk. Jika objek panggilan memerlukan beberapa informasi untuk dikembalikan oleh objek aktif, maka struktur panggilan balik dapat digunakan untuk menginformasikan objek jarak jauh dari setiap perubahan status.