2009-07-10 12 views
0

Ich muss Folgendes tun und ich fragte mich, ob ich etwas von Ihrer Eingabe bekommen könnte. Jede Nacht wird eine Datei an einem bestimmten Ort (auf einem FTP-Server) erstellt. Was ich tun muss, ist diese Datei herunterladen und über Web-Services in einen Remote-SQL-Server importieren. Ich muss auch die Fähigkeit haben, den Importprozess (Datei herunterladen und Inhalt an den Server senden) jederzeit manuell ausführen zu können. Ich dachte, ein Windows-Dienst wäre dafür gut, aber ich sehe nicht, wie ich den Importprozess jederzeit manuell erneut ausführen kann. Hat jemand etwas Ähnliches getan? Wenn ja, mit welcher Technik haben Sie gearbeitet?Brauchen Sie etwas Richtung in Bezug auf Windows-Service

Dank

+1

Windows-Dienst ist ein Overkill, bis Sie es in regelmäßigen Abständen ausführen müssen. Stattdessen würde ich vorschlagen, dass Sie einen Zeitplan erstellen Task –

+1

Auch wenn es in regelmäßigen Abständen ausgeführt werden muss, ist ein Windows-Dienst wahrscheinlich übertrieben . Sie können festlegen, dass eine geplante Aufgabe in einem Intervall ausgeführt wird. – adrianbanks

Antwort

4

Ein Windows-Dienst ist ein wenig Overkill dafür, es sei denn vielleicht, wenn Sie alle 10 Minuten oder etwas für die Datei abfragen möchten. Andernfalls sollten Sie stattdessen eine geplante Aufgabe verwenden.

Wenn Sie mit einem Windows-Dienst gehen, können Sie eine simple Custom Command tun, um es abzurufen. Remoting, IPC, etc. würden ebenfalls funktionieren - sind aber erheblich schwerer.

+0

Ich bin wirklich neu beim Erstellen geplanter Aufgaben. Muss ich eine Windows-App erstellen und dann die Aufgabe auf einen Timer oder etwas ähnliches ausführen lassen? Weitere Informationen hierzu wären hilfreich. Vielen Dank – zSynopsis

2

Die Service Controller Klasse könnte hilfreich sein. Sie können damit einen Befehl in Ihrem laufenden Dienst von einer separaten "Front-End" -App ausführen.

0

Sie könnten etwas wie SyncBackSE verwenden, um ein Profil zu erstellen, um Ihre Datei per FTP herunterzuladen und dann ein After-Ereignis auszuführen, um Ihren Import durchzuführen (Sie können festlegen, was Sie ausführen möchten). Dies kann nach einem Zeitplan erfolgen (läuft über Windows geplante Aufgaben), aber Sie können es auch manuell ausführen (wählen Sie das Profil und dann Ausführen). Nicht wirklich irgendwelche Programmierung erforderlich, nehme ich an, dass dies mehr von einem Server-Administrator auf Ihre Frage antworten.

0

Wenn Sie von einer Desktop-App aus mit einem Windows-Dienst sprechen möchten (um ihm mitzuteilen, dass er Ihren manuellen Lauf ausführen soll), können Sie dafür Named Pipes verwenden. Sie sind ziemlich einfach zu implementieren, und Pipes überschreiten die Grenzen von Sitzung und Desktop, was notwendig ist, wenn Sie mit einem Service sprechen.

0

Ich stimme zu, dass Sie dies über eine geplante Aufgabe tun können. Wenn Sie jedoch stattdessen einen Windows-Dienst verwenden möchten, können Sie das Programm mit einem Befehlszeilenparameter wie "MyService.exe -ontime" ausführen. Dann können Sie in Ihrer Main-Funktion überprüfen, ob dieser Befehlszeilenparameter enthalten war. Wenn ja, könnten Sie den üblichen Code überspringen und stattdessen den Import ausführen.

Verwandte Themen