En programación informática , la programación basada en eventos es un paradigma de programación en el que el flujo del programa está determinado por eventos externos . Los eventos de la interfaz de usuario de ratones , teclados , paneles táctiles y pantallas táctiles , y las entradas de sensores externos son casos comunes. Los eventos también pueden generarse mediante programación, como a partir de mensajes de otros programas , notificaciones de otros subprocesos u otros eventos de red .
La programación basada en eventos es el paradigma dominante utilizado en aplicaciones de interfaces gráficas de usuario y servidores de red.
En una aplicación impulsada por eventos, generalmente hay un bucle de eventos que escucha los eventos y luego activa una función de devolución de llamada cuando se detecta uno de esos eventos.
Los programas controlados por eventos se pueden escribir en cualquier lenguaje de programación , aunque la tarea es más fácil en lenguajes que proporcionan abstracciones de alto nivel .
Aunque no se ajustan exactamente al modelo basado en eventos, el manejo de interrupciones y el manejo de excepciones tienen muchas similitudes.
Es importante diferenciar entre los paradigmas basados en eventos y los basados en mensajes (también conocidos como basados en colas) : los servicios basados en eventos (por ejemplo, AWS SNS ) están desacoplados de sus consumidores, mientras que los servicios basados en colas/mensajes (por ejemplo, AWS SQS ) están acoplados a sus consumidores. [1]
Debido a que el bucle de eventos de recuperación/envío de eventos es común entre las aplicaciones, muchos marcos de programación se encargan de su implementación y esperan que el usuario proporcione solo el código para los controladores de eventos.
RPG , uno de los primeros lenguajes de programación de IBM , cuyo concepto de diseño de los años 1960 era similar a la programación basada en eventos analizada anteriormente, proporcionaba un bucle de E/S principal integrado (conocido como "ciclo de programa") donde los cálculos respondían de acuerdo con "indicadores" ( banderas ) que se establecían anteriormente en el ciclo.
La lógica real está contenida en rutinas de manejo de eventos. Estas rutinas manejan los eventos a los que responderá el programa principal. Por ejemplo, un solo clic con el botón izquierdo del mouse en un botón de comando en un programa GUI puede activar una rutina que abrirá otra ventana, guardará datos en una base de datos o saldrá de la aplicación. Muchos IDE proporcionan al programador plantillas de eventos GUI, lo que le permite centrarse en escribir el código del evento.
En un programa secuencial, realizar un seguimiento del historial suele ser una tarea trivial. Debido a que los controladores de eventos se ejecutan en respuesta a eventos externos, estructurar correctamente los controladores para que funcionen cuando se los llama en cualquier orden puede requerir una atención y una planificación especiales en un programa controlado por eventos.
Además de escribir los controladores de eventos, estos también deben estar vinculados a los eventos para que se llame a la función correcta cuando se produce el evento. Para los eventos de la interfaz de usuario, muchos IDE combinan los dos pasos: haga doble clic en un botón y el editor crea un controlador de eventos (vacío) asociado con el usuario que hace clic en el botón y abre una ventana de texto para que pueda editar el controlador de eventos.
La mayoría de las arquitecturas de GUI existentes utilizan programación basada en eventos. [2] Windows tiene un bucle de eventos . El marco de trabajo Java AWT procesa todos los cambios de la interfaz de usuario en un único hilo, llamado hilo de despacho de eventos . De manera similar, todas las actualizaciones de la interfaz de usuario en el marco de trabajo JavaFX se producen en el hilo de aplicación JavaFX. [3]
La mayoría de los servidores de red y marcos como Node.js también están controlados por eventos. [4]
Esta sección está vacía. Puedes ayudarnos agregándole algo. ( Mayo 2024 ) |
El gráfico de escena de JavaFX, que representa la interfaz gráfica de usuario de una aplicación JavaFX, no es seguro para subprocesos y solo se puede acceder a él y modificarlo desde el subproceso de la interfaz de usuario, también conocido como subproceso de la aplicación JavaFX.