2009-04-22 4 views
0

Ich muss eine Anwendung erstellen, die mit einer Batch-Datei aktiviert werden kann.Welche Art von Anwendung wäre am besten, wenn Sie nicht interaktiv laufen?

Die Anwendung würde einen einzelnen Zeichenfolgenparameter eines Dateinamens akzeptieren. Es wird dann einige Verarbeitung mit dieser Datei ausführen und eine andere Datei an einem vorgegebenen Speicherort ablegen und beenden.

Die Anwendung muss nicht mit einem tatsächlichen Benutzer interagieren.

Meine bevorzugte Plattform ist .net mit C#.

Ursprünglich wollte ich eine Konsolenanwendung schreiben, bin mir aber nicht sicher, ob das die beste Idee ist.

Was ist der beste Weg, um diese Aufgabe zu erfüllen? Gibt es eine Möglichkeit, einen Windows-Dienst zu erstellen, der von einer Batchdatei ausgelöst wird? Ist das wünschenswert? Wäre ein Windows Form-Projekt wünschenswerter?

Antwort

3

Option 1: Konsolen-App. Verwenden Sie Windows Scheduler, um es zu geplanten Zeiten auszuführen. (empfohlen)

Option zwei: Windows-Dienst, der über einen eingebauten Scheduler oder Poller verfügt.

0

Wenn es nicht interaktiv ist, ist Konsole fast sicher der Weg zu gehen, wie Sie es einfach in den Hintergrund stellen und es in Ruhe lassen könnten.

0

Sie könnten sicherlich einen Windows-Dienst erstellen, der nach Dateien sucht, die in einem bestimmten Ordner abgelegt werden sollen. Die Batch-Datei könnte dann einfach Dateien in diesen Ordner legen.

Ich empfehle Ihnen jedoch, einen besseren Grund dafür zu finden. Fragen Sie sich: "Inwiefern wäre dies besser als ein Batch-Job, bei dem nur ein Konsolenprogramm ausgeführt und der Dateiname angegeben wird"?

1

Die schnellste Entwicklung ist wahrscheinlich eine Konsolenanwendung mit einer Stapeldatei, die von Windows Geplanten Tasks (oder ähnlichem) ausgelöst wird.

Auf diese Weise müssen Sie nur die Funktionalität der Anwendung selbst entwickeln, anstatt einen Zeitplanungsrahmen zu erstellen.

Sie können auch die Funktionalität von geplanten Aufgaben wie Protokollierung, leicht anpassbare Planung, Fehlerberichterstattung usw. nutzen. Eine andere Option für Windows-Aufgaben mit Scheduled könnte die Verwendung von SQL Server Geplanten Jobs, die auch eine nette bieten beruflicher Werdegang.

Alles, was gesagt, wenn Sie diesen Pfad gehen, haben Sie zusätzliche Abhängigkeiten, die Sie möglicherweise beseitigen können, wenn Sie Ihren eigenen Windows-Dienst geschrieben haben. Wenn die Bereitstellung ein Problem darstellt, können Sie den Windows-Dienst mit einem Installationsprogramm viel besser steuern.

0

Ein Windows-Dienst mit einem FileSystemWatcher, der den betreffenden Ordner anstelle einer Always-on-Konsolenanwendung überwacht. Dafür sind sie da, und wenn das System ausfällt, müssen Sie nicht daran denken, die Datei anzulegen, und Sie müssen es nicht in Ihren Windows-Startup stecken. Stellen Sie den Dienst so ein, dass er automatisch startet.

3

Meine Liebling Option, und eine, die ich meinen früheren Arbeitgeber überzeugt als Unternehmenspolitik zu verabschieden, ist wie folgt:

Alle Server-Typ-Anwendungen werden ohne direkt angeschlossenen UI jeglicher Art geschrieben.Ob dies als Konsolenanwendung, als Windows-Anwendung oder sonstwie kompiliert wird, ist in der Entwurfsphase irrelevant - bei .NET kommt der Unterschied auf den Wechsel eines Compiler-Switch. Da das Programm jedoch ohne direkte menschliche Eingriffe ausgeführt wird, haben wir es normalerweise so konzipiert, dass es als Dienst ausgeführt wird. Der Service Control Manager kümmert sich um den Start und das Herunterfahren, kann die Anwendung bei einem Fehler neu starten und leistet gute Dienste Dinge, die alleine beim Schreiben einer Desktop-Anwendung schwierig sind.

Als nächstes haben Sie die Server-Anwendung hören über das Netzwerk für eine "admin" zu verbinden. Diese Admin-Verbindung ist Ihre Benutzeroberfläche. Dinge wie SSL-Verschlüsselung und -Authentifizierung sind Ihnen und Ihrem Unternehmen überlassen, aber ich würde Ihnen empfehlen, eine zeilenbasierte, lesbare Oberfläche zu erstellen. Auf diese Weise können Sie mit telnet eine Verbindung herstellen und Befehle wie "show connections", "drop user 52" und "" ausgeben. Jede Art von Verwaltungsverhalten und jede Art von Status und Statistiken sollten über diese Schnittstelle verfügbar gemacht werden. Vor allem hilft dies beim Debuggen, und zweitens führt es zum nächsten Schritt ...

Zuletzt erstellen Sie eine Benutzeroberfläche. Ein einfacher wahrscheinlich. Ein Teil der Konfiguration für diese UI besteht darin, einen Host und einen Port anzugeben, mit denen eine Verbindung hergestellt werden kann, sowie alle Authentifizierungsbits. Die UI-Anwendung stellt eine Verbindung mit dem Computer her, auf dem der Dienst ausgeführt wird, und gibt Befehle über die Netzwerkadministrationsschnittstelle aus und interpretiert die Ergebnisse. In unserem Unternehmen war jede neue Benutzeroberfläche ein Snap-In-Modul im Rahmen eines größeren Projekts. Dieses Projekt würde kleine rote und grüne Lichter zeigen, die die verschiedenen Server und deren Status repräsentieren. Wenn Sie auf einen Server klicken, können Sie auf diesen Server "drill-down" gehen und verschiedene Aspekte des Status oder der Konfiguration untersuchen.

Obwohl das Projekt als kleines Programm auf nur einem oder zwei Servern begann, wuchs es schnell zu Dutzenden von Servern mit einer Handvoll von Diensten, die auf verschiedenen Betriebssystemen und in zahlreichen Städten auf der ganzen Welt laufen. Diese einfache UI-Richtlinie ermöglichte es uns, Hunderte dieser Dienste von einem einzigen Sitz aus oder gleichzeitig an verschiedenen Schaltern in verschiedenen Büros zu verfolgen und zu kontrollieren.

Skalierbarkeit bedeutet, dass nicht jemand vor dem Computer eine Taste eines Programms drücken muss, das Sie geschrieben haben.

Verwandte Themen