Come viene utilizzato il modello dell'attore?

18

Ho letto un po 'del modello dell'attore, ma non capisco veramente come usare gli attori in una situazione reale - come modellare un problema con loro.

Qualcuno può spiegare per favore? Un semplice esempio o collegamenti ad esempi sarebbero molto apprezzati.

    
posta Pnutus 08.08.2011 - 21:35
fonte

3 risposte

21

Gli attori, nel senso di azioni di modellazione, con messaggi, ecc. sono un modo di modellare software che fornisce un paio di elementi utili ...

  1. Gli attori possono vivere su un singolo thread, consentendo operazioni non thread-safe / non-concurrent che avvengono senza un sacco di magia di blocco. Un attore risponderà ai messaggi nella sua casella di posta. Quando si desidera elaborare un comando, si invia un messaggio e si prenderà cura di loro nell'ordine in cui vengono ricevuti. Proprio come una normale coda. Thread safe è killer qui, e lo uso in una serie di progetti open source su cui lavoro.

  2. In alcune lingue, per esempio, Scala è facile trasformare il codice basato su attori in un singolo processo in un sistema distribuito, rompendo gli attori e trasformando i canali che comunicano in canali remoti. Questo cambia tra le implementazioni su quanto sia facile, ma è una caratteristica fantastica.

  3. Aiuta a concentrarsi sugli eventi basati sulle attività piuttosto che sugli eventi CRUD. CRUD è semplice ma è come interagire con uno schedario. Se possiamo fornire più valore di quello nel software che produciamo, perché lo stiamo facendo? Legare più azioni a un singolo comando "Aggiorna" in un sistema basato su attività è più utile del semplice salvataggio nel DB. Anche questo entra in cose come CQRS.

risposta data 09.08.2011 - 02:19
fonte
4

La risposta di Travis è solida. Quando inizi a parlare di concorrenza, stai cercando di risolvere i problemi relativi alle risorse. La concorrenza con i thread e i blocchi è piuttosto facile da sbagliare. Il modello degli attori aiuta a forzare la programmazione di parti concorrenti del codice come nugget autonomi che possono essere eseguiti in parallelo e senza dipendere da un altro pezzo di codice. Stai cercando di evitare cattiveria come condizioni di gara e deadlock.

Gli attori sono come te e io in questa conversazione. Non puoi semplicemente entrare nel mio cervello e scegliere cosa sto scrivendo. Mi hai passato un messaggio che diceva "Perché esistiamo?" Mi sono seduto e ho scricchiolato alcuni numeri e ho inviato una risposta "Penso, quindi sono." Non potevi dire cosa stavo facendo sulla mia fetta di pianeta Terra, l'unico contatto che hai con me è attraverso i messaggi che passiamo avanti e indietro.

EDIT:

Non hai detto quali lingue ti senti a tuo agio, ma vedi se c'è un'implementazione di attore nella tua lingua. Forse il più semplice sarebbe alcune delle librerie degli attori in Python. Ma probabilmente meglio per l'apprendimento sarebbe Erlang. La lingua è un po 'approssimativa, ma una volta superate le sfumature, è un buon linguaggio.

    
risposta data 09.08.2011 - 04:31
fonte
-2

Gli attori sono un elemento dei diagrammi dei casi d'uso che rappresentano qualsiasi entità esterna (utente, sistema esterno, ecc.) che può agire su un sistema. Ogni caso d'uso di base conterrà degli attori - solo il "caso d'uso" di google per una serie di esempi.

    
risposta data 08.08.2011 - 22:19
fonte

Leggi altre domande sui tag