Je voudrais utiliser des acteurs distants, d'une nature inconnue du serveur à sa compilation, afin que ces acteurs soient définis uniquement du côté client. C'est possible?Est-il nécessaire d'avoir le code pour l'acteur scala distant sur le serveur?
Répondre
Normalement, ce n'est pas nécessaire.
Les acteurs distants sont accessibles via le proxy d'acteur, ce qui n'est pas pertinent pour la mise en œuvre d'acteur spécifique. Tant que la bonne façon de travailler avec les acteurs est d'envoyer des messages (et donc d'éviter d'appeler directement les méthodes des acteurs, ce qui est malheureusement possible avec les acteurs Scala standard, mais impossible par exemple dans Akka qui sépare les acteurs et les références des acteurs). travailler pour vous dans le plus de scénarios.
Cependant, il y a des cas où le code d'octet de l'acteur est requis sur l'autre noeud. Par exemple, lorsque vous voulez sérialiser l'acteur avec sa boîte aux lettres, et l'envoyer pour exécution à un autre noeud.
Citation de The Scala Actors API:
pour obtenir une référence distante à un acteur à distance cours d'exécution sur la machine MyMachine, sur le port 8000, avec le nom « anActor, utiliser select de la manière suivante :
val myRemoteActor = select(Node("myMachine", 8000),'anActor)
L'acteur retour de select a type A bstractActor qui fournit essentiellement la même interface comme un acteur régulier , et soutient ainsi le un message envoyer les opérations habituelles
Je me sens un peu confus, « malheureusement possible » et « impossible » pour Akka? –
Ai-je manqué le point d'ActorRefs dans Akka? Je pensais que l'intention était d'empêcher les appelants d'accéder directement aux méthodes des acteurs. –
Donc, si je vous comprends bien, le bon endroit pour le code d'acteur à distance est le côté répondeur, où Actor fonctionnera réellement, mais pas le côté demandeur, n'est-ce pas? –