23 Stimmen

Ist es möglich, einen eigenständigen C#-Webdienst zu erstellen, der als EXE oder Windows-Dienst bereitgestellt wird?

Ist es möglich, eine C#-EXE oder einen Windows-Dienst zu erstellen, der Webdienstanfragen verarbeiten kann? Natürlich müsste eine Art eingebetteter, wahrscheinlich begrenzter Webserver Teil der EXE/des Dienstes sein. Die EXE/der Dienst wäre nicht auf die Installation von IIS angewiesen. Vorzugsweise könnte der eingebettete Webdienst Verbindungen vom Typ HTTPS/SSL verarbeiten.

Das Szenario ist folgendes: Der Kunde möchte einen kleinen Agenten (einen Windows-Dienst) auf seinen Unternehmensrechnern installieren. Der Agent soll zwei Hauptaufgaben haben: 1) das System im Laufe der Zeit zu überwachen und bestimmte Daten zu sammeln und 2) auf Webservice-Anfragen (SOAP -v- REST wird noch ausgehandelt) zu Zwecken der Datenerfassung oder Systemänderung zu reagieren. Dem Kunden gefällt die Idee von Webservice-APIs, so dass eine beliebige Anzahl von Clients (in einer beliebigen Sprache) geschrieben werden kann, um auf die verschiedenen Agenten zuzugreifen, die auf den Unternehmensrechnern laufen. Die Installation soll relativ einfach sein (Installation von .NET, einiger Assemblies, eines Dienstes, Änderung der Windows-Firewall, Start des Dienstes), ohne dass IIS installiert und konfiguriert werden muss.

Ich weiß, dass ich dies mit Delphi tun kann. Aber der Kunde würde es vorziehen, dies in C# zu tun, wenn möglich.

Irgendwelche Vorschläge?

1voto

AgileJon Punkte 52146

Ich würde die WCF sehr empfehlen. Es würde sehr gut in ein Produkt wie das von Ihnen beschriebene passen. Es gibt eine ganze Reihe von Bücher verfügbar.

1voto

W. Kevin Hazzard Punkte 731

Sicher, das können Sie tun. Stellen Sie sicher, dass Sie den Ausgabetyp des Projekts in Konsolenanwendung ändern. Fügen Sie dann in Ihrer Main-Funktion einen string[]-Parameter hinzu. Ausgehend von einem Schalter, den Sie in der Befehlszeile erhalten, können Sie zu ServiceBase.Run verzweigen, um als Windows-Dienst ausgeführt zu werden, oder zu einem anderen Code verzweigen, um eine Konsolenanwendung auszuführen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X