2011-01-07 4 views
4

Ich habe in den letzten 6 Monaten mehrere .Net Konsolenanwendungen geschrieben und wir haben viele weitere in verschiedenen Projekten in unserer Organisation. Ich bleibe im Allgemeinen bei meinen Konsolenanwendungen im selben Standardformat/-struktur. Leider tun dies viele unserer Konsolenanwendungen nicht.Konsolenanwendungsstruktur

Ich habe nach Wegen zur Standardisierung der Struktur dieser Konsolenanwendungen gesucht. Ich möchte auch einen Rahmen für die grundlegende Struktur einer Konsolenanwendung bereitstellen und einen einfachen Zugang zu Standardmethoden wie Argumentübergabe, Protokollierung usw. geben.

Kann jemand Best Practices für die Behandlung dieser Probleme empfehlen? Ich habe diesen MSDN-Artikel unter Console Applications in .Net gelesen, in dem ein Entwurfsmuster für Konsolenanwendungen vorgeschlagen wird. Das Beispiel verwendet ein Template-Methodenmuster, um einige der oben aufgeführten Probleme zu behandeln.

In diesem Artikel werden zwei Negative zur Verwendung dieses Ansatzes aufgeführt.

  • Ende mit doppelt so vielen Klassen
  • Mit vielen einfachen, ähnlichen Klassen

Kann jemand empfehlen, besser oder Standard, Möglichkeiten, dies zu umgehen? Wie wäre es, zusätzliche Negative mit diesem Ansatz aufzulisten?

+0

/Viele einfache, ähnliche Klassen/ist ein häufiges Problem. Schreiben Sie einen kleinen DSL-Prozessor/Parser, um die spezifischen Klassen von Grund auf neu zu generieren und im Build-Prozess zu verwenden. –

+0

Bitte verwenden Sie keine verkleinerten URLs. Die Leute mögen es nicht, sie anzuklicken, und dieser scheint kaputt zu sein. –

+0

Die Verknüpfung wurde korrigiert. Ich werde zukünftig keine reduzierten URLs mehr verwenden. Danke für die Köpfe hoch. –

Antwort

1

Zum Teil meiner eigenen Frage zu beantworten ...

ich ziemlich viel Zeit verbrachten für eine Standard-Weg, um das Parsen von Argumenten an meine Konsole Anwendungen weitergegeben zu behandeln. Ich war speziell auf der Suche nach etwas ähnlich wie GetOpt für Python. In diesem Sinne ist die Lösung, auf die ich mich eingelassen habe, NDesk.Options. Es deckt alle unsere Bedürfnisse ab und scheint mit Argumenten auf eine Standardart zu reagieren. Ich dachte, das könnte jemandem helfen, der bei der Suche nach dieser Frage stolpert.

+0

Verwenden Sie NDesk.Options in der Produktion? Die Website behauptet in ziemlich großen Buchstaben, dass sie instabil ist. Hat es dir Probleme bereitet? – Cornelius

+0

Ich benutze es derzeit in mehreren Produktionsdiensten und habe keine Probleme oder Instabilität festgestellt. Es war eine Freude, mit ihnen zu arbeiten. –

+0

Das ist großartig zu hören. Danke für die Rückmeldung. :) – Cornelius

0

Ich neige dazu, meine Konsolen-Anwendungen so einfach wie möglich und so viel in einer anderen Schicht zu halten, dass es einfacher Einheit und Akzeptanz getestet werden kann. Ich halte meine Konsolenanwendungen auch generell einfach/einfach, daher habe ich oft nicht viele mögliche Wege durch Dinge wie Befehlszeilenargumente. Dies erlaubt mir, die Argumente, falls vorhanden, einfach zu analysieren und sie an die "Backend" -Logik weiterzuleiten.