Aktör modeli nasıl kullanılır?


18

Aktör modeli hakkında biraz okudum, ancak aktörleri gerçek dünya durumunda nasıl kullanacağınızı gerçekten anlamıyorum - onlarla bir sorunun nasıl modelleneceğini.

Birisi açıklayabilir mi lütfen? Basit bir örnek veya örneklere bağlantılar çok takdir edilecektir.


Yoksa aktör modeli mi demek istediniz ?
back2dos

Aktörler değil, Ajanlar demek istediğinizden şüpheleniyorum. Öyleyse, bu wikipedia girişine
göz atın

1
Yeşil Fener ve Maymunlar Gezegeni'nde /. Sırayla, / de geeks. geri kalanımızı eğlendirmek.

Aktör modeli kastediyorum ve açıklamak için yazımı güncelledim.
Pnutus

Yanıtlar:


21

Aktörler, eylemleri modelleme anlamında, mesajlarla vb. Birkaç yararlı öğe sağlayan bir yazılım modelleme yoludur ...

  1. Aktörler tek bir iş parçacığında yaşayabilir, bu da iş parçacığı için güvenli olmayan / eşzamanlı olmayan işlemlerin bir sürü kilit sihri olmadan gerçekleşmesine izin verir. Bir oyuncu gelen kutusundaki iletilere yanıt verir. Bir komutu işlemesini istediğinizde, ona bir mesaj gönderirsiniz ve alındıkları sırayla bunlarla ilgilenir. Tıpkı normal bir kuyruk gibi. İş parçacığı kasası burada katil ve bunu üzerinde çalıştığım bir dizi açık kaynak projesinde kullanıyorum.

  2. Bazı dillerde, örneğin Scala, aktörleri parçalayıp iletişim kurdukları kanalları uzak kanallara çevirerek tek bir süreçte aktör tabanlı kodu dağıtılmış bir sisteme dönüştürmek kolaydır. Bu, uygulamaların ne kadar kolay olduğuna göre değişir, ancak harika bir özelliktir.

  3. CRUD olayları yerine Görev Tabanlı olaylara odaklanmaya yardımcı olur. CRUD basittir, ancak bir dosya dolabı ile etkileşim kurmak gibidir. Ürettiğimiz yazılımdan daha fazla değer sağlayabilirsek, neden yapıyoruz? Görev tabanlı bir sistemdeki tek bir "Güncelle" komutuna birden çok eylem eklemek, DB'ye kaydetmekten daha yararlıdır. Bu aynı zamanda CQRS gibi şeylere de giriyor.


Yardımcı yanıtınız ve bağlantılarınız için teşekkür ederiz. Aktörler hakkında daha iyi bir fikir edinmek için hangi dili aramaya başlamayı önerirsiniz?
Pnutus

1
Bence hangi dilde rahat olduğunuza bağlı. Scala, bir dil kavramı oldukları için aktörler hakkında en iyi belgelere sahip olabilir. Erlang genel olarak mesajlaşma için harika, ancak tüm dil bu kavramın etrafında duruyor.
Travis

Scala ve Erlang'a bir göz atacağım. Bulunan bu orada başlayacağım, Erlang için başlangıç kılavuzu. Teşekkürler!
Pnutus

+1: Çok ilginç. Uzak aktörleri uygulayan herhangi bir C ++ kütüphanesi olup olmadığını biliyor musunuz? Scala'yı kullanmaktan memnuniyet duyarım, ancak projem C ++ 'da.
Giorgio

1
Bu C ++ Aktör Modeli uygulamasını düşünün: actor-framework.org
Chen OT

4

Travis'in cevabı sağlam. Eşzamanlılık hakkında konuşmaya başladığınızda, kaynak sorunlarını çözmeye çalışıyorsunuz. İplik ve kilitlerle eşzamanlılık yanlış yapmak oldukça kolaydır. Aktör modeli, kodunuzun eşzamanlı bölümlerini, başka bir kod parçasına bağlı olmadan paralel olarak gerçekleştirilebilen müstakil külçeler olarak programlamanıza yardımcı olur. Yarış koşulları ve kilitlenmeler gibi sıkıntılardan kaçınmaya çalışıyorsunuz.

Bu konuşmada aktörler senin ve benim gibiyiz. Sadece beynime ulaşamaz ve ne yazdığımı öğrenemezsin. Bana "Neden varız?" Ben oturdum ve bazı numaraları crunched ve "Bence, bu yüzden öyleyim" bir cevap gönderdi. Dünya gezegeni dilimimde ne yaptığımı söyleyemezdiniz, benimle olan tek temas, ileri ve geri ilettiğimiz mesajlardır.

DÜZENLE:

Hangi dilde rahat olduğunuzu söylemediniz, ancak kendi dilinizde bir aktör uygulaması olup olmadığını görün. Belki de en basiti python'daki aktör kütüphanelerinden bazılarıdır. Ama muhtemelen öğrenme için daha iyi Erlang olurdu. Dil biraz kaba ama nüansları aştığınızda iyi bir dil.


Gnat'ın düzenlemesinin bana yönelik olup olmadığından emin değilim, ancak seçim silahım genellikle Haskell olma eğilimindedir. Erlang kesinlikle iyi bir dildir. Haskell geleneksel olarak CSP'lere eşzamanlılık için güveniyordu, ancak orada bazı aktör uygulamaları var.
M15K

-2

Aktörler, bir sistem üzerinde etkili olabilecek herhangi bir harici varlığı (kullanıcı, harici sistem, vb.) Temsil eden kullanım örneği diyagramlarıdır. Herhangi bir temel kullanım durumu aktörler içerir - çok sayıda örnek için sadece google "kullanım örneği".


6
Çöp adamlar denmiyor mu?
pillmuncher

1
Net değildim ve yanlış anladın. Oyuncu modelinden bahsediyordum.
Pnutus
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.