2009-06-05 15 views
0

Ich habe eine Anwendung, die alle fünf Sekunden ein Eingabeverzeichnis durchsucht und wenn ein Job (dh eine Datei) in das Verzeichnis gestellt wird, liest das Programm es, verarbeitet es und gibt eine andere Datei aus in einem Ausgabeverzeichnis.Anwendungsdesign - Daemon mit WebPage FrontEnd

Meine Frage ist, wenn ich ein webbasiertes Frontend auf diese Anwendung stellen wollte, wie würde ich warten, bis die Verarbeitung abgeschlossen ist?

  • Benutzer senden Job
  • Job in Eingabeverzeichnis platziert
  • ...... Was bin ich hier auf der Webseite zu tun?
  • Verarbeitung erfolgt
  • Ausgabedatei
  • erzeugt wird ...... Wie kann ich wissen, dass der Job beendet ist?

Die beiden Lösungen kam ich mit waren:

  • Umfrage Ausgabeverzeichnis alle x Sekunden von der Webseite
  • Verwendung Ajax eine Webservice oder Webseite abzufragen, ob zurückmeldet die Ausgabedatei vorhanden ist

Gibt es ein besseres Design für den Server? Mit anderen Worten, wie würden TCP oder Named Pipes in dieser Situation helfen? (Kann Remoting aufgrund eines DCOM-Objekts nicht verwenden.)

+0

Ruft der Benutzer der Webseite die Datei hoch und wartet darauf, dass sie verarbeitet wird? – scottm

+0

Sie übermitteln Informationen, aus denen die Datei "job" erstellt wird. –

Antwort

0

Eine Lösung, die wir in der Vergangenheit kommerziell gemacht haben, ist im Grunde, dass der Daemon in ein Protokoll (typischerweise DB) schreibt, mit einem Datums-/Zeitstempel, was das tut, und das Web-Frontend zeigt nur die letzten X Einträge aus dem Protokoll, mit einem kleinen Toggle, um alle "Gesehen in Verzeichnis, keine Datei gefunden" Nachrichten auszublenden, funktionierte ziemlich gut, wir aktualisierten es später mit AJAX (Timer, der alle 20 Sekunden neu lud).

+0

Ich hoffe, das ergab einen Sinn, es ist wie 2:30 Uhr hier, iv war für 19 Stunden auf :) –

+0

Danke pzycoman, das ist eine andere Lösung, die ich im Sinn hatte und wird wahrscheinlich für diese Anwendung arbeiten. –

0

Ich glaube nicht, dass Named Pipes es einfacher machen werden, den Webclient automatisch abzufragen, aber dadurch kann der Server einen anderen möglicherweise besser benachrichtigen Verarbeiten Sie, dass die Konvertierung abgeschlossen wurde, und stellen Sie schließlich eine Nachricht an den Webbrowser ein.

Sie können versuchen, den Webclient alle paar Sekunden abfragen zu lassen, ob der Dateiprozess abgeschlossen ist, alternativ könnten Sie etwas wie Juggernaut "push" -Befehle auf der Seite haben. Juggernaut verwendet Flash, um einen Socket im Webbrowser zu öffnen, der kontinuierlich JavaScript vom Server eingibt. Es könnte für das Senden eines Befehls verantwortlich sein, um den Browser darauf aufmerksam zu machen, dass die Datei abgeschlossen wurde, und dann eine Umleitung ausstellen.