3 Stimmen

Web app zu Konsolenanwendung?

Ich arbeite mit dieser kleinen Web-Anwendung (1 Seite), die von jemand anderem erstellt wurde und nach dem Drücken eines Knopfes auf der Webseite eine bestimmte Aufgabe erledigt.

Jetzt haben sich die Anforderungen leicht geändert, und wir müssen dies automatisieren, um wöchentlich ohne Benutzerinteraktion zu laufen.

Was wäre der beste Weg, dies zu tun, um die Änderungen am Code zu minimieren?

Ich dachte daran, eine Konsolenanwendung dem Projekt hinzuzufügen, die dann intern auf die Webanwendung verweist, aber das scheint nicht zu funktionieren.

Oder vielleicht die Webanwendung in eine Konsolenanwendung umzuwandeln, wenn das überhaupt möglich ist?

Gibt es einen einfachen Weg, dies zu tun?

Danke

1voto

Jeremy McGee Punkte 24034

Zunächst stellen Sie sicher, dass die "spezifische Aufgabe" aus der Webanwendung ausgelagert wird, sodass sie in ihrem eigenen .NET-Projekt liegt. Auch wenn dieses Projekt nur eine Klasse enthält, trennen Sie die Verantwortlichkeiten zwischen der webbasierten Benutzeroberfläche und der Aufgabe selbst.

Dann können Sie ein weiteres "Wrapper-Projekt" erstellen, um dieses neue Projekt aufzurufen, wie Sie möchten. Eine Konsolenanwendung könnte gut funktionieren - Sie können diese mit einer geplanten Aufgabe ausführen - oder Sie bevorzugen die Verwendung eines Windows-Dienstes.

0voto

Dmytro Shevchenko Punkte 31263

Es hängt wirklich davon ab, wie gut der vorhandene Code strukturiert ist. Ein üblicher Ansatz ist es, die Geschäftslogik von der Präsentationsschicht zu trennen. In VS wird dies normalerweise durch die Erstellung eines Klassenbibliotheksprojekts und die Aufbewahrung aller Geschäftslogik darin durchgeführt. Ein Webanwendungsprojekt würde dann nur Geschäftslogikklassen instanziieren und deren Methoden ausführen.

Wenn das so gemacht wird, müssen Sie nur auf das Klassenbibliotheksprojekt verweisen. Wenn Sie dagegen die gesamte Logik im Webanwendungsprojekt haben, gibt es wahrscheinlich keinen schnellen Weg, dies zu tun, da Sie Page-Klassen nicht manuell instanziieren sollen (nun ja, das können Sie auch machen, aber das ist umständlich und nicht zu empfehlen). In diesem Fall sollten Sie also ein Klassenbibliotheksprojekt erstellen und all die Logik dorthin verschieben, die Sie in Ihrer Konsolenanwendung verwenden müssen. Ich stelle mir vor, dass das eine ziemliche Menge an Refactoring erfordern würde.

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