Pregunta

Tengo una aplicación que escanea un directorio de entrada de cada cinco segundos y cuando un trabajo (es decir, archivos) se coloca en el directorio de la aplicación lee, procesa y da salida a otro archivo (s) en un directorio de salida.

Mi pregunta es, si yo quería poner una interfaz basada en web en esta solicitud, ¿cómo voy a esperar a que el procesamiento sea completa?

  • somete Usuario trabajo
  • trabajo se coloca en el directorio de entrada
  • ...... ¿Qué estoy haciendo en la página web aquí?
  • se produce el procesamiento
  • se genera el archivo de salida
  • ...... ¿Cómo sé que el trabajo está terminado?

Las dos soluciones que se me ocurrió fueron:

  • directorio de salida sondeo cada x segundos de la página web
  • Uso de Ajax para sondear un servicio web o una página web que informa de vuelta si el archivo de salida está presente

¿Hay un mejor diseño para el servidor? En otras palabras, ¿cómo TCP o canalizaciones con nombre ayudar en esta situación? (No se puede usar la comunicación remota debido a un objeto DCOM.)

¿Fue útil?

Solución

Una solución que hemos hecho comercialmente en el pasado es básicamente el demonio escribe a un registro (normalmente DB), con un sello de fecha / hora, sobre lo que lo haga, y la interfaz web sólo demuestra la cantidad más reciente X de las entradas de el registro, con un poco de palanca para ocultar todos los mensajes de "Mirado en el directorio, no se encuentra el archivo", funcionó bastante bien, hemos mejorado más adelante con AJAX (Timer que vuelve a cargar cada 20 segundos).

Otros consejos

No creo que canalizaciones con nombre se va a hacer que sea más fácil para conseguir el cliente web para sondear de forma automática, pero puede hacer que el servidor en mejores condiciones para notificar a otro proceso que la conversión se ha completado - y en última instancia una cola mensaje al navegador web.

Puede intentar tener el sondeo de cliente web cada pocos segundos para ver si el proceso de archivo se ha completado, otra posibilidad es tener algo como Juggernaut "empujar" los comandos a la página. Juggernaut funciona con Flash para abrir un socket en el navegador web que se alimenta continuamente JavaScript desde el servidor. Podría ser responsable de enviar un comando para alertar al navegador que el archivo se ha completado y luego una redirección.

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