¿Qué es un objeto activo?

En programación e ingeniería de computadoras, un objeto activo es un tipo de patrón de diseño que se puede utilizar para ayudar a garantizar que algún servicio siempre esté disponible en un sistema múltiple o concurrente. Un objeto activo es un objeto que implementa un mecanismo para que pueda recibir y procesar la entrada de objetos externos sin obligar a los objetos externos a esperar a que se complete la ejecución. Este mecanismo también permite que muchos objetos que podrían estar ejecutándose simultáneamente para usar objetos activos sin la posibilidad de largos tiempos de bloqueo en los que los procesos concurrentes deben detenerse y esperar el acceso. Esto a menudo se logra envolviendo los objetos activos en una interfaz de acceso público, llamado proxy y luego implementando un tipo de sistema de cola dentro de los objetos para que los mensajes se almacenen para el procesamiento posterior. Esto crea un patrón de diseño en el que los objetos envían mensajes a objetos activos y luego continúan su procesamiento hasta que el objeto activo procese el mensaje y luego informalos objetos de llamadas de los resultados para que puedan actualizar sus estados en consecuencia.

Fuera de un patrón de diseño de objeto activo, un objeto normal puede llamarse un objeto pasivo. En un ejemplo de programa simple, un objeto pasivo podría estar actuando como un relé del servidor de chat, en el que los objetos remotos contactan al objeto pasivo para transmitir un mensaje a todos los demás en el servidor. Cada vez que el objeto del servidor pasivo recibe un mensaje de chat desde un objeto remoto, debe manejar la solicitud inmediatamente e inmediatamente enviar la salida, todo mientras el objeto remoto detiene su propia ejecución hasta que el proceso se realice, un efecto conocido como bloqueo. Crear diferentes hilos dentro del programa puede resolver el problema del bloqueo de ejecución, pero luego inicia problemas con la sincronización.

En un patrón de diseño de objeto activo, el mismo objeto del servidor en el ejemplo anterior se ejecutaría en su propio hilo separado delotros objetos. También estaría envuelto en algún tipo de interfaz conocida como proxy que también se está ejecutando en un hilo separado, a veces el hilo de ejecución del programa principal. Cuando un objeto remoto desea que el objeto del servidor envíe un mensaje de chat, se pone en contacto con el objeto proxy, le pasa toda la información requerida y luego regresa a su estado de ejecución normal en lugar de esperar.

La interfaz proxy luego convierte la información del objeto remoto en un mensaje que pasa a una cola para que el objeto activo se procese. En este punto, tanto la interfaz proxy como el objeto remoto pueden continuar ejecutándose y no están bloqueados. Mientras tanto, el objeto activo funciona para mantener la cola vacía, procesando cada mensaje entrante. Si el objeto de llamada requiere que el objeto activo devuelva alguna información, se puede usar una estructura de devolución de llamada para informar al objeto remoto de cualquier cambio en el estado.

OTROS IDIOMAS