Ich habe eine Aufgaben Tabelle in meiner Datenbank. Ich möchte Daten aus dieser Tabelle lesen und Aufgaben ausführen. Welcher ist besser, ob er als Windows-Dienst oder als Konsolenanwendung ausgeführt werden soll. Der Server, auf dem dies ausgeführt wird, wird nicht heruntergefahrenIst es gut, einen Windows-Dienst oder eine Konsolenanwendung zu haben?
Antwort
Sie möchten wahrscheinlich einen Windows-Dienst verwenden.
Vorteile:
- Sie den Benutzer steuern kann (und die mit diesem Benutzerkonto verbundenen Rechte), die den Prozess
- Ein automatisch gestartet Prozess beginnt, bedeutet das Desktop auf, nicht vom Benutzer angemeldet sein müssen, für die Dienstleistung
- eine Politik, bei einem Fehler laufen kann definiert werden (versuchen Sie n-mal ein bestimmtes Programm ausführen neu starten, wenn nicht)
- eine Abhängigkeit definiert (wenn Sie auf andere sevices abhängen) werden kann
- Sie können Ihr Skript in einem unsichtbaren Fenster wickeln
- Sie können leicht Start/Stopp/Neustart das Skript (
net start <scriptname>
)
von hier Zitat:What is the benefit of developing the application as a windows service?
Windows-Dienst, da es keinen angemeldeten Benutzer erfordert.
würde ich sagen; Windows-Dienste
In diesem Fall (unter anderem) brauchen Sie keinen Benutzer, um angemeldet zu sein, Sie können es so konfigurieren, dass es automatisch neu startet, wenn es aus irgendeinem Grund heruntergefahren wird und Sie umfassende Rechte haben das System.
Windows-Dienst im Allgemeinen. Die Konsolenanwendung muss neu gestartet werden, wenn der Server neu gestartet wird, während ein Windows-Dienst automatisch gestartet werden kann.
Eine laufende Konsole App ist keine Option, wie die anderen angegeben haben.
Wenn Sie nur die alle x Minuten die einfachste Option ausführen Aufgabe wollen, ist eine geplante Aufgabe eine Konsolenanwendung verwendet wird.
Ein Windows-Dienst hat seine Vorteile, ist aber ein wenig komplexer zu implementieren und bereitzustellen. Wenn Ihre App jedoch immer eingeschaltet sein muss (z. B. müssen Sie auf externe Auslöser reagieren, Nachrichtenwarteschlange anhören, ...), ist ein Windows-Dienst die einzige Option. Wie die anderen gesagt haben, stellt die Service-Infrastruktur auch mehr Management-Funktionen, eingebaute Integration mit den Ereignisprotokoll, Neustart und Failover-Optionen ...
Danke Jeroenh !!Ja genau das ist meine Anforderung, ich sollte in der Lage sein, die Aufgabe auszulösen, sagen Sie alle x Minuten .. Können Sie pls erzählen, wie komplex es mit Dienstleistungen ist? – Juni
http://www.pedatreppe.com/post/How-to-create-(and-deploy)-a-windows-service-in-C-.aspx – jeroenh
Aber wie ich in meiner Antwort sagte, wenn Sie einfach brauchen die Aufgabe, alle x Minuten zu laufen, ist eine geplante Aufgabe viel einfacher und hat viele der gleichen Vorteile (kann unbeaufsichtigt laufen, einfache Bereitstellung, Integration mit Ereignisprotokoll usw.) – jeroenh
sollten Sie schauen auf: https://github.com/thedavejay/Self-Installing-Windows-Service
Es Sie debuggen erlaubt als Konsolenanwendung und installieren Sie es dann als Windows-Dienst.
- 1. Ist es gut, einen Formbuilder zu verwenden?
- 2. Warum ist es nicht gut, einen Primärschlüssel für eine Join-Tabelle zu haben?
- 3. Ist es möglich, eine Konsolenanwendung mit nw.js zu erstellen?
- 4. Ist es gut, einen DatabaseManager mit allen Funktionen aller Modellobjekte zu haben?
- 5. ist es richtig, eine Konstruktionsfunktion zu haben?
- 6. Ist es möglich, einen globalen Ausnahme-Hook zu haben?
- 7. Ist es gut, eine in eine leere zu setzen?
- 8. Ist es gut, eine allgemeinere Art von Ausnahme zu erfassen?
- 9. Ist es gut, minimale Parameter zu übergeben?
- 10. Unter welchen Bedingungen ist es gut, eine "partielle Klasse" zu haben?
- 11. Ist es möglich, einen benutzerdefinierten Facebook-Button zu haben?
- 12. Ist SQL Server Express gut genug für einen Entwickler oder sollte es eine Developer Edition geben?
- 13. Wann ist es gut, FTP zu verwenden?
- 14. Ist es gut, System.out.println in eine separate Methode zu platzieren?
- 15. Ist es gut, Hibernate- und Jaxb-Annotation in derselben Klasse zu haben
- 16. Ist es möglich, einen zusammengesetzten Fremdschlüssel in Schienen zu haben?
- 17. Ist es möglich, einen funktionsbasierten Index in MySQL zu haben?
- 18. Ist es gut, 2 verschiedene db
- 19. Ist es besser, einen großen Workflow oder mehrere kleinere spezifische zu haben?
- 20. Ist es möglich, einen benutzerdefinierten NSWindowController beim Start zu haben?
- 21. Ist es möglich, einen Segmentierungsfehler von einer Referenz zu haben?
- 22. Ist es besser, separate Tabellen für Artikel und Kommentare oder eine Tabelle für beide zu haben?
- 23. Ist es möglich, HttpBrowserCapabilities aus einer C# -Konsolenanwendung zu verwenden?
- 24. System.Web.Abstractions: wofür ist es gut?
- 25. Ist es möglich, einen Datepicker ohne Jquery UI zu haben?
- 26. Ist es in Ordnung, einen Fremdschlüssel als Primärschlüssel zu haben?
- 27. Warum ist es schlecht, einen lokalen Funktor zu haben?
- 28. Python's PyQtGraph: Ist es möglich, einen geologischen Verlauf zu haben?
- 29. Was ist eine vNext Konsolenanwendung?
- 30. Ist es besser, eine große Leinwand oder bis zu 100 kleine dynamisch erzeugte Leinwände zu haben?
Ausgezeichnete Antwort. Ich möchte hinzufügen, dass Sie für Vorfallszenarien eine kleine Webanwendung direkt in Ihrem Dienst hosten können. Auf diese Weise können Sie den Dienst remote steuern oder überwachen (achten Sie nur auf die Sicherheitsimplikation). Ein Beispiel dafür ist der [Rabbitmq Management Service] (http://www.rabbitmq.com/management.html). Ein kleiner eingebetteter Webserver ermöglicht dem Amdinistrator, den Dienst remote zu überwachen –