Proporcionar comentarios al usuario durante el proceso de larga duración y la separación entre la interfaz de usuario y la lógica empresarial.

StackOverflow https://stackoverflow.com/questions/552072

  •  23-08-2019
  •  | 
  •  

Pregunta

Cuando se ejecuta un proceso de larga duración, es una buena práctica proporcionar comentarios al usuario, por ejemplo, actualizando una barra de progreso.

Algunas preguntas frecuentes sobre bibliotecas GUI sugieren algo como esto:

function long_running_progress()
    do_some_work()
    update_progress_bar()
    while finish
        do_some_work()
        update_progress_bar()
    end while
end function

De todos modos, sabemos que es una buena práctica separar el código de lógica empresarial del código de la interfaz de usuario.El ejemplo anterior mezcla código de interfaz de usuario dentro de una función de lógica empresarial.

¿Cuál es una buena técnica para implementar funciones en la capa de lógica empresarial cuyo progreso podría ser rastreado fácilmente mediante una interfaz de usuario sin mezclar capas?

Se aceptan respuestas para cualquier idioma o plataforma.

¿Fue útil?

Solución

proporcionar una interfaz de devolución de llamada. La lógica de negocio llamará a su método de vez en cuando. La capa de usuario se actualizará el progreso o lo que sea. Si desea permitir la cancelación - no hay problema, que el método de devolución de llamada tiene un valor de retorno que indicará la necesidad de cancelación. Esto funcionará independientemente del número de hilos.

Otros consejos

Si se utiliza un paradigma MVC podría tener publicar el modelo de su estado de progreso actual como una propiedad, el controlador podría extraer esta cada x segundos y luego ponerlo en la vista. Esto supone multi-threading sin embargo, que no estoy seguro de si se permite.

Publicar es un excelente camino a seguir.Todo depende de la plataforma de cómo se haga.Sin embargo, cuando se trata de la experiencia de usuario También hay un par de cosas a considerar:

  • No le dé al usuario una barra de progreso si no sabe cuánto tiempo se ejecuta la tarea.¿Qué hora queda?¿Qué significa a mitad de camino?Es mejor utilizar la función de reloj de arena (ruedas giratorias, barras de progreso que rebotan, etc.).

  • Lo único interesante para ver el progreso es el tiempo;¿Qué significa A mitad de camino en un proceso?Quieres saber si tienes tiempo para esa taza de café.Si muestra otras cosas probablemente esté mostrando el funcionamiento de la programación del sistema.La mayoría de los usuarios no están interesados ​​o simplemente se confunden.

  • El progreso prolongado siempre debe ayudar al usuario con un escape, una forma de cancelar la solicitud.No querrás encerrar al usuario por mucho tiempo.Mejor aún es manejar una solicitud de larga duración completamente en segundo plano y permitir que el usuario regrese cuando obtenga el resultado.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top