Dienst-Überwachung
Vor kurzem habe ich ein Programm zur Überwachung und Status-Anzeige verschiedener Dienste geschrieben.
Eigentlich nichts allzu schwierig, denkt man!
Allerdings ist das ganze Programmiertechnisch sehr unterschiedlich lösbar.
Zu einem kann man einfach mehrere Variablen/Listen führen, in denen die Resultate und die "Timeout-Counter" gespeichert werden. Diese Lösung ist sicher schnell zu erstellen, aber bei vielen Abfragen sehr unhandlich.
Zweite Möglichkeit ist, für jeden Test eine Klasse zu machen, die intern alle Zustände speichert. Allerdings müsste man dann auch jeden Test separat Ansteuern.
Meiner Meinung nach die beste Lösung ist: Auch für jeden Test eine eigene Klasse zu machen, die intern ihren Test ausführt und über eine Eigenschaft/Event das Resultat zur Verfügung stellt.
Die Klasse sollte aber ein Interface implementieren, das einen Test beschreibt, also z.B. die Methode StartTest(), Eigenschaft Resultat oder eben Events.
Das ganze bietet zwei erhebliche Vorteile gegenüber den anderen Varianten:
Code sehr überschaubar, auch bei viele unterschiedlichen Tests.
Immer gleiche Behandlung, also einfache Erweiterung.
Es kann eine List<ITest> erstellt werden und so sehr einfach durch die Tests gelaufen werden.
Eigentlich nichts allzu schwierig, denkt man!
Allerdings ist das ganze Programmiertechnisch sehr unterschiedlich lösbar.
Zu einem kann man einfach mehrere Variablen/Listen führen, in denen die Resultate und die "Timeout-Counter" gespeichert werden. Diese Lösung ist sicher schnell zu erstellen, aber bei vielen Abfragen sehr unhandlich.
Zweite Möglichkeit ist, für jeden Test eine Klasse zu machen, die intern alle Zustände speichert. Allerdings müsste man dann auch jeden Test separat Ansteuern.
Meiner Meinung nach die beste Lösung ist: Auch für jeden Test eine eigene Klasse zu machen, die intern ihren Test ausführt und über eine Eigenschaft/Event das Resultat zur Verfügung stellt.
Die Klasse sollte aber ein Interface implementieren, das einen Test beschreibt, also z.B. die Methode StartTest(), Eigenschaft Resultat oder eben Events.
Das ganze bietet zwei erhebliche Vorteile gegenüber den anderen Varianten:
Code sehr überschaubar, auch bei viele unterschiedlichen Tests.
Immer gleiche Behandlung, also einfache Erweiterung.
Es kann eine List<ITest> erstellt werden und so sehr einfach durch die Tests gelaufen werden.
