Дизайн приложения - Daemon с интерфейсом веб-страницы

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

  •  11-09-2019
  •  | 
  •  

Вопрос

У меня есть приложение, которое сканирует входной каталог каждые пять секунд, и когда задание (т.е.file) помещается в каталог, который приложение считывает, обрабатывает и выводит другой файл (ы) в выходной каталог.

Мой вопрос в том, если бы я хотел разместить веб-интерфейс в этом приложении, как бы я дождался завершения обработки?

  • Пользователь отправляет задание
  • задание помещается во входной каталог
  • ......Что я делаю на этой веб-странице здесь?
  • происходит обработка
  • генерируется выходной файл
  • ...... Как мне узнать, что задание завершено?

Два решения, которые я предложил, были:

  • опрашивать выходной каталог каждые x секунд с веб-страницы
  • используйте ajax для опроса веб-сервиса или веб-страницы, которая сообщает, присутствует ли выходной файл

Есть ли лучший дизайн для сервера?Другими словами, как TCP или Именованные каналы помогли бы в этой ситуации?(Невозможно использовать удаленное подключение из-за объекта DCOM.)

Это было полезно?

Решение

Решение, которое мы реализовывали коммерчески в прошлом, в основном заключается в том, что демон записывает в журнал (обычно DB) информацию о том, что он делает, с отметкой даты / времени, а веб-интерфейс просто показывает последнее количество записей из журнала X с небольшим переключением, чтобы скрыть все сообщения "Просмотрен в каталоге, файл не найден", работал довольно хорошо, позже мы обновили его с помощью AJAX (таймер, который перезагружается каждые 20 секунд).

Другие советы

Я не думаю, что именованные каналы упростят автоматический опрос веб-клиента, но это может позволить серверу лучше уведомлять другой процесс о завершении преобразования - и, в конечном счете, ставить сообщение в очередь веб-браузера.

Вы можете попробовать проводить опрос веб-клиента каждые несколько секунд, чтобы узнать, завершен ли процесс обработки файла, в качестве альтернативы вы могли бы использовать что-то вроде команд Juggernaut "push" на страницу.Juggernaut работает с использованием Flash для открытия сокета в веб-браузере, который постоянно передает JavaScript с сервера.Это может быть ответственно за отправку команды для предупреждения браузера о завершении работы с файлом, а затем за перенаправление.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top