Jak używany jest model aktora?

18

Przeczytałem trochę o modelu aktora, ale tak naprawdę nie rozumiem, jak używać aktorów w rzeczywistej sytuacji - jak wymodelować z nimi problem.

Czy ktoś może wyjaśnić? Doceniony zostanie prosty przykład lub linki do przykładów.

Pnutus
źródło
Czy masz na myśli model aktora ?
back2dos,
Podejrzewam, że masz na myśli Agentów, a nie Aktorów. Jeśli tak, sprawdź ten wpis w Wikipedii: en.wikipedia.org/wiki/Software_agent
DwB
1
Występują w Green Lantern i Planet of the Apes, aby bawić maniaków w /. Z kolei maniacy w /. bawić resztę z nas.
Job
Mam na myśli model aktora i zaktualizowałem swój post, aby wyjaśnić.
Pnutus

Odpowiedzi:

21

Aktorzy, w sensie modelowania działań, za pomocą komunikatów itp. To sposób modelowania oprogramowania, który zapewnia kilka przydatnych elementów ...

  1. Aktorzy mogą żyć w jednym wątku, co pozwala na wykonywanie operacji nieobsługujących wątku / współbieżnych bez mnóstwa magii blokowania. Aktor odpowie na wiadomości w swojej skrzynce odbiorczej. Kiedy chcesz przetworzyć polecenie, wysyłasz mu wiadomość, która zajmie się nimi w kolejności ich otrzymania. Tak jak normalna kolejka. Wątek jest tutaj zabójczy i używam tego w wielu projektach open source, nad którymi pracuję.

  2. W niektórych językach, na przykład Scala, łatwo jest przekształcić kod aktora w jednym procesie w rozproszony system, dzieląc aktorów i zamieniając kanały, które komunikują, na kanały zdalne. Zmienia się to między implementacjami, jak łatwo jest, ale jest to niesamowita funkcja.

  3. Pomaga skupić się na zdarzeniach opartych na zadaniach, a nie na zdarzeniach CRUD. CRUD jest prosty, ale przypomina interakcję z szafką na dokumenty. Jeśli możemy zapewnić większą wartość niż w oprogramowaniu, które produkujemy, dlaczego to robimy? Powiązanie wielu działań z jednym poleceniem „Aktualizuj” w systemie opartym na zadaniach jest bardziej przydatne niż zapisywanie w bazie danych. Dotyczy to również CQRS.

Travis
źródło
Dziękujemy za pomocną odpowiedź i linki. W jakim języku poleciłbyś zacząć, aby lepiej wyczuć aktorów?
Pnutus,
1
Myślę, że to zależy od tego, z jakim językiem czujesz się komfortowo. Scala może mieć jednak najlepszą dokumentację dotyczącą aktorów, ponieważ są oni koncepcją językową. Erlang jest jednak świetny do przesyłania wiadomości, cały język opiera się na tej koncepcji.
Travis,
Spojrzę na Scalę i Erlanga. Znaleziono ten przewodnik dla początkujących Erlang, zamierzam rozpocząć tam. Dzięki!
Pnutus
+1: bardzo interesujące. Czy wiesz, czy jest jakaś biblioteka C ++, która implementuje zdalnych aktorów? Z przyjemnością skorzystam ze Scali, ale mój projekt jest w C ++.
Giorgio
1
Rozważ to wdrożenie modelu aktora C ++: actor-framework.org
Chen OT
4

Odpowiedź Travisa jest solidna. Kiedy zaczynasz mówić o współbieżności, próbujesz rozwiązać problemy z zasobami. Współbieżność z wątkami i blokadami jest dość łatwa do zrobienia. Model aktora pomaga zmusić cię do zaprogramowania współbieżnych części kodu jako samodzielnych samorodków, które można wykonywać równolegle i bez zależności od innego fragmentu kodu. Starasz się unikać nieprzyjemności, takich jak warunki wyścigowe i impasy.

W tej rozmowie aktorzy są tacy jak ty i ja. Po prostu nie możesz sięgnąć do mojego mózgu i wybrać, co piszę. Przekazałeś mi wiadomość zatytułowaną „Dlaczego istniejemy?” Usiadłem, zgryziłem kilka cyfr i wysłałem odpowiedź „Myślę, więc jestem”. Nie potrafisz powiedzieć, co robię na moim własnym kawałku planety Ziemia, jedynym kontaktem, jaki masz ze mną, są wiadomości, które przekazujemy tam iz powrotem.

EDYTOWAĆ:

Nie powiedziałeś, w których językach czujesz się komfortowo, ale sprawdź, czy w Twoim języku jest implementacja aktora. Być może najprostsze byłyby niektóre biblioteki aktorskie w Pythonie. Ale prawdopodobnie lepszym do nauki byłby Erlang. Język jest trochę szorstki, ale kiedy przejdziecie przez niuanse, będzie to dobry język.

M15K
źródło
Nie jestem pewien, czy edycja komara jest skierowana w moją stronę, ale moją ulubioną bronią jest zwykle Haskell. Erlang jest zdecydowanie dobrym językiem. Haskell tradycyjnie polegał na CSP dla współbieżności, ale istnieją pewne implementacje aktorów.
M15K,
-2

Aktorzy są elementem diagramów przypadków użycia, które reprezentują dowolny byt zewnętrzny (użytkownik, system zewnętrzny itp.), Który może działać w systemie. Każdy podstawowy przypadek użycia będzie zawierał aktorów - wystarczy znaleźć „przypadek użycia” Google, aby znaleźć wiele przykładów.

afeygin
źródło
6
Czy to nie są tak zwane figurki ?
pillmuncher
1
Nie byłem jasny, a ty źle zrozumiałeś. Mówiłem o modelu aktora.
Pnutus,