Ich suche nach verschiedenen Wegen mit Stärken / Schwächen für die Konvertierung einer Konsolenanwendung, die wir langfristig in einem Windows-Dienst verwenden. Wir verwenden etwas namens Java-Service-Wrapper für ActiveMQ, und ich glaube, die Leute haben mir gesagt, dass man alles damit verpacken kann. Das heißt nicht, dass Sie etwas damit verpacken sollten; Wir hatten Probleme mit diesem Setup.
Die Konsolenanwendung ist eine .NET-Konsolenanwendung, die standardmäßig viele Informationen in der Konsole anmeldet, obwohl dies konfigurierbar ist.
Irgendwelche Empfehlungen?
Sollten wir es einfach in Visual Studio als Dienst neu erstellen? Verwenden Sie einen Wrapper? Welcher?
Ich wäre versucht, ein leeres Windows-Service-Projekt zu erstellen, und nehme einfach die Teile, die mit einem Service zu tun haben; Es ist nicht viel - ein paar Referenzen und ein Teil des Codes in Main
. Sie können Ihre bestehende Konsole tatsächlich als beide als Dienst und als Konsole verwenden - entweder indem Sie die Argumente auf Main
prüfen und (zum Beispiel) eine "-console verwenden "wechseln, oder ich glaube, Sie können Environment.UserInteractive
überprüfen.
Wenn es im "Konsolen" -Modus ist, führen Sie Ihren Code so aus, wie Sie es jetzt tun; Wenn es sich im Wartungsmodus befindet, führen Sie den Code aus, den Sie aus dem Vorlagenprojekt abgerufen haben.
Für Informationen können Sie auch dieselbe ausführbare Version wie das Installationsprogramm / Deinstallationsprogramm für den Dienst verwenden! Ich mache das mit "-install" / "-uninstall" -Schaltern. Ein Beispiel finden Sie hier .
>Vici WinService verwandelt eine Konsolen-App in einen selbstinstallierenden Windows-Dienst. Es ist Open-Source und Sie können den Quellcode herunterladen. Selbst wenn Sie die Bibliothek nicht verwenden möchten, können Sie dennoch einige Ideen daraus erhalten.
Einige Gedanken:
Windows-Dienst mit VS 2005 erstellen
Installieren Sie den .Net-Dienst
Ich habe vor ein paar Jahren einen Perl-basierten Satz ausführbarer Dateien (theads) usw. geschrieben, der ähnliche Anforderungen zu haben scheint wie Ihr ...
Einige Dinge zu beachten:
Hier ist ein kleines Konsolenbeispiel, das mit log4net
in db, Datei und Konsole ausgegeben wird %Vor%Was ist Ihr langfristiges Nutzungsszenario? Ein Windows-Dienst könnte ausreichen ... aber Windows Server 2008 / IIS7 bietet einige faszinierende neue Möglichkeiten zum Hosten und Aktivieren von "Diensten" über Windows Activation Services. Ein Windows-Dienst wird immer ausgeführt und erfordert möglicherweise eine spezielle Codierung. Mit WAS können Sie Ihren Host als normalen WCF-Dienst schreiben und auf Anforderung aktivieren, wenn Anforderungen eingehen, und deaktivieren, wenn er nicht verwendet wird. Andere Optionen gibt es auch ... wie MSMQ-Hosting und Instanziierung, etc.
Ich bin auf dasselbe Problem gestoßen, ich habe letztendlich meinen eigenen Wrapper geschrieben, es ist nur gut für die einfachsten Situationen, aber es hat seine Vorteile. Sie finden das Tool hier: Ссылка . Einige der Vorteile sind die Tatsache, dass Sie Ihre Anwendung als eine Konsolenanwendung programmieren können, die einfach in der IDE getestet und ausgeführt werden kann. Das Einrichten eines Dienstes umfasst einen einfachen Befehl, sodass Sie Ihre Anwendung nicht bearbeiten müssen. Sie können den Dienst auch mehrmals mit verschiedenen Namen installieren, die Sie möglicherweise ausführen möchten, wenn Sie jeweils verschiedene Parameter ausführen möchten.
Wie ich schon sagte, obwohl es nur die einfachsten Szenarien behandelt, Anwendungen, die bereits im Wesentlichen Dienste sind. Das ist sie laufen kontinuierlich. Ich bin mir sicher, dass es viele andere Dienste gibt, die Ihnen viel mehr Möglichkeiten bieten.
Ich persönlich glaube nicht, dass es besonders schwierig ist, eine Konsolenanwendung zu konvertieren, aber es kann sehr mühsam sein, sie zu testen. Am Ende hängt es jedoch davon ab, wie viel Kontrolle du willst. Wenn es ein wirklich wichtiger Dienst für Ihr Unternehmen ist, würde ich sagen, dass Sie es konvertieren.
Tags und Links .net windows-services