Konvertieren einer Konsolenanwendung in einen Dienst?

8

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?

    
3 revs, 2 users 67%anon 25.06.2009, 22:38
quelle

5 Antworten

11

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 .

>     
Marc Gravell 31.05.2009, 09:23
quelle
2

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.

    
Philippe Leybaert 31.05.2009 07:30
quelle
0

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:

  • habe einen Debugging-Schalter (du solltest einen haben, wenn etwas wirklich schief geht)
  • Ausgabe an beide Konsolen und Dateien (versuchen Sie zum Beispiel log4net)
  • Erstellen Sie Ihre Protokollierung mit zukünftigen Regex-Parsing im Auge
  • Wenn es einige untergeordnete Prozesse gibt, lerne, wie man sie tötet, stoppe und starte sie neu
  • Wenn es einige unabhängige Prozesse gibt, versuchen Sie, mit ihnen zu kommunizieren

Hier ist ein kleines Konsolenbeispiel, das mit log4net

in db, Datei und Konsole ausgegeben wird %Vor%     
YordanGeorgiev 31.05.2009 07:20
quelle
0

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.

    
jrista 31.05.2009 09:18
quelle
0

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.

    
Luis Perez 07.10.2011 22:14
quelle

Tags und Links