J'ai lu un peu sur le modèle d'acteur, mais je ne comprends pas vraiment comment utiliser les acteurs dans une situation réelle - comment modéliser un problème avec eux.
Quelqu'un peut-il expliquer? Un exemple simple ou des liens vers des exemples seraient très appréciés.
Réponses:
Acteurs, dans le sens de modéliser des actions, avec des messages, etc. est un moyen de modéliser un logiciel qui fournit quelques éléments utiles ...
Les acteurs peuvent vivre sur un seul thread, permettant aux opérations non thread-safe / non simultanées de se produire sans un tas de magie de verrouillage. Un acteur répondra aux messages dans sa boîte de réception. Lorsque vous souhaitez qu'il traite une commande, vous lui envoyez un message et il s'occupe d'eux dans l'ordre de leur réception. Tout comme une file d'attente normale. Thread safe est un tueur ici, et je l'utilise dans un certain nombre de projets open source sur lesquels je travaille.
Dans certaines langues, Scala par exemple, il est facile de transformer le code basé sur les acteurs en un seul processus en un système distribué en séparant les acteurs et en transformant les canaux qu'ils communiquent en canaux distants. Cela change entre les implémentations sur la facilité, mais c'est une fonctionnalité géniale.
Aide à se concentrer sur les événements basés sur les tâches plutôt que sur les événements CRUD. CRUD est simple mais c'est comme interagir avec un classeur. Si nous pouvons fournir plus de valeur que cela dans le logiciel que nous produisons, pourquoi le faisons-nous? Lier plusieurs actions à une seule commande "Mettre à jour" dans un système basé sur des tâches est plus utile que simplement enregistrer dans la base de données. Cela entre également dans des choses comme CQRS.
la source
La réponse de Travis est solide. Lorsque vous commencez à parler de simultanéité, vous essayez de résoudre des problèmes de ressources. La concurrence avec les threads et les verrous est assez facile à faire mal. Le modèle d'acteur vous oblige à programmer des parties simultanées de votre code en tant que nuggets autonomes qui peuvent être exécutés en parallèle et sans dépendre d'un autre morceau de code. Vous essayez d'éviter la méchanceté comme les conditions de course et les blocages.
Les acteurs sont comme vous et moi dans cette conversation. Vous ne pouvez tout simplement pas entrer dans mon cerveau et choisir ce que je tape. Vous m'avez passé un message disant "Pourquoi existons-nous?" Je me suis assis et j'ai croqué quelques chiffres et j'ai envoyé une réponse "Je pense, donc je le suis." Vous ne pouviez pas dire ce que je faisais sur ma propre tranche de la planète Terre, le seul contact que vous avez avec moi est à travers les messages que nous transmettons.
ÉDITER:
Vous n'avez pas dit dans quelles langues vous êtes à l'aise, mais voyez s'il y a une implémentation d'acteur dans votre langue. Le plus simple serait peut-être quelques-unes des bibliothèques d'acteurs en python. Mais Erlang serait probablement mieux pour apprendre. La langue est un peu rude mais une fois que vous avez surmonté les nuances, c'est une bonne langue.
la source
Les acteurs sont un élément des diagrammes de cas d'utilisation qui représentent toute entité externe (utilisateur, système externe, etc.) pouvant agir sur un système. Tout cas d'utilisation de base contiendra des acteurs - il suffit de google "cas d'utilisation" pour une multitude d'exemples.
la source