Welches Muster wird für eine Anwendung akzeptiert, die als Dienst oder als Konsolenanwendung ausgeführt werden kann?

Ich habe ein Projekt, das als Windows-Dienst für die Produktion bereitgestellt wird. Für lokale Entwicklungszwecke wäre es jedoch nützlich, es als Konsolenanwendung auszuführen. Im Moment habe ich eine Klasse angerufenReportingHost Das bietet meine Kernfunktionalität und eine Klasse namens ReportingServiceHost, die von erbtServiceBase und ermöglicht es mir, die Anwendung als Dienst auszuführen. Es gibt auch eine Programmklasse mit einer Hauptmethode, die aufruftServiceBase.Run auf meinem ReportingServiceHost.

Ich glaube ich muss eine schreibenReportingConsoleHost Klasse, mit der ich die Funktionalität in einer Konsole ausführen kann. Dann muss ich meine ändernMain um auf einen Befehlszeilenschalter zu reagieren und den einen oder anderen zu wählen. Dies sind die beiden Teile, mit denen ich Probleme habe.

Ich habe mir das angeschautdiese und habe versucht, diesen Code zu verwenden, aber meine App wird sofort beendet. Es wird kein Konsolenfenster angezeigt und es wird nicht auf die Eingabe gewartet, bevor das Programm geschlossen wird.

Ein Teil des Problems ist, dass ich nicht genau verstehe, wie diese Dinge funktionieren. Ich hoffe, ein endgültiges Muster für die Aufteilung meiner Funktionalität, meine zwei verschiedenen Arten, diese Funktionalität auszuführen, und eine Hauptmethode zu finden, die eine dieser Möglichkeiten basierend auf einem Befehlszeilenargument auswählt.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage