scala - traducida - love the way you lie traducir a español
¿Cuál es la diferencia del Actor de Akka con el modelo Actor de Scala? (3)
Bueno, no hay. Solo hay un modelo de Actor, y los actores de Akka y los actores de Scala son dos implementaciones de ese modelo.
Todo el modelo Actor dice que sus primitivas de concurrencia son actores, que pueden:
recibir un mensaje y decidir qué hacer a continuación dependiendo del contenido del mensaje, que incluye:
enviar mensajes a cualquier actor que conozcan
crear nuevos actores
y proporciona ciertas garantías, por ejemplo:
cualquier actor solo manejará un solo mensaje a la vez
los mensajes enviados por el actor X al actor Y llegarán en el orden en que fueron enviados
No hay diferencia entre los actores Scala y Akka en este nivel.
Para conocer las diferencias en lo que pueden hacer, consulte la Descripción general de diferentes implementaciones de Scala Actor . El más grande, para mí, es que Akka apoya a los supervisores y ActorRegistry.
Descubrí que también hay un modelo de actor Akka, así que me pregunto ¿cuál es la diferencia entre el Actor de Akka y el modelo Actor de Scala?
Esto depende un poco de lo que quiere decir con "modelo": puede referirse al "modelo de ejecución" o al "modelo de programación" (y quizás también a otros modelos).
Para los modelos de ejecución, hay básicamente dos: basado en subprocesos o basado en eventos. La biblioteca de actores estándar de Scala contiene ambos. El hilo basado en utiliza un hilo para cada actor, mientras que el basado en eventos utiliza un grupo de hilos. El primero es más intuitivo de entender, el último es más eficiente. Akka se basa en el modelo basado en eventos.
Para el modelo de programación, hay una gran diferencia entre la biblioteca estándar Scala y Akka. En la biblioteca estándar de scala, básicamente implementa el método "ejecutar", y si desea esperar un mensaje entrante, se pone en estado de espera (llamando a "recibir" o "reaccionar"). Entonces, el modelo de programación sigue la "metáfora de hilos". Sin embargo, en Akka, la metáfora de la programación es que se implementan algunos métodos de ciclo de vida, pero el método "ejecutar" se escribe dentro del marco. Realmente resulta que este modelo de programación funciona mucho mejor con el modelo de ejecución basado en eventos también.
Si está interesado en los diferentes modelos de ejecución y modelos de programación de los actores estándar de scala, he escrito few posts sobre el tema.
También hay una respuesta histórica. Los creadores de Scala pensaron que debería haber un marco de actor. Jonas Bonér lo probó, pero no estaba completamente satisfecho, así que comenzó a trabajar en uno nuevo, que se convirtió en Akka. Sin embargo, la gente de Scala pensó que era mejor que la suya, por lo que en Jfokus 2011 anunciaron que Akka se convertiría en el marco de actor estándar de Scala. Sin embargo, esa migración llevará algún tiempo.