Meine Liebling Option, und eine, die ich meinen früheren Arbeitgeber überzeugt als Unternehmenspolitik zu verabschieden, ist wie folgt:
Alle Server-Typ-Anwendungen werden ohne direkt angeschlossenen UI jeglicher Art geschrieben.Ob dies als Konsolenanwendung, als Windows-Anwendung oder sonstwie kompiliert wird, ist in der Entwurfsphase irrelevant - bei .NET kommt der Unterschied auf den Wechsel eines Compiler-Switch. Da das Programm jedoch ohne direkte menschliche Eingriffe ausgeführt wird, haben wir es normalerweise so konzipiert, dass es als Dienst ausgeführt wird. Der Service Control Manager kümmert sich um den Start und das Herunterfahren, kann die Anwendung bei einem Fehler neu starten und leistet gute Dienste Dinge, die alleine beim Schreiben einer Desktop-Anwendung schwierig sind.
Als nächstes haben Sie die Server-Anwendung hören über das Netzwerk für eine "admin" zu verbinden. Diese Admin-Verbindung ist Ihre Benutzeroberfläche. Dinge wie SSL-Verschlüsselung und -Authentifizierung sind Ihnen und Ihrem Unternehmen überlassen, aber ich würde Ihnen empfehlen, eine zeilenbasierte, lesbare Oberfläche zu erstellen. Auf diese Weise können Sie mit telnet eine Verbindung herstellen und Befehle wie "show connections
", "drop user 52
" und "" ausgeben. Jede Art von Verwaltungsverhalten und jede Art von Status und Statistiken sollten über diese Schnittstelle verfügbar gemacht werden. Vor allem hilft dies beim Debuggen, und zweitens führt es zum nächsten Schritt ...
Zuletzt erstellen Sie eine Benutzeroberfläche. Ein einfacher wahrscheinlich. Ein Teil der Konfiguration für diese UI besteht darin, einen Host und einen Port anzugeben, mit denen eine Verbindung hergestellt werden kann, sowie alle Authentifizierungsbits. Die UI-Anwendung stellt eine Verbindung mit dem Computer her, auf dem der Dienst ausgeführt wird, und gibt Befehle über die Netzwerkadministrationsschnittstelle aus und interpretiert die Ergebnisse. In unserem Unternehmen war jede neue Benutzeroberfläche ein Snap-In-Modul im Rahmen eines größeren Projekts. Dieses Projekt würde kleine rote und grüne Lichter zeigen, die die verschiedenen Server und deren Status repräsentieren. Wenn Sie auf einen Server klicken, können Sie auf diesen Server "drill-down" gehen und verschiedene Aspekte des Status oder der Konfiguration untersuchen.
Obwohl das Projekt als kleines Programm auf nur einem oder zwei Servern begann, wuchs es schnell zu Dutzenden von Servern mit einer Handvoll von Diensten, die auf verschiedenen Betriebssystemen und in zahlreichen Städten auf der ganzen Welt laufen. Diese einfache UI-Richtlinie ermöglichte es uns, Hunderte dieser Dienste von einem einzigen Sitz aus oder gleichzeitig an verschiedenen Schaltern in verschiedenen Büros zu verfolgen und zu kontrollieren.
Skalierbarkeit bedeutet, dass nicht jemand vor dem Computer eine Taste eines Programms drücken muss, das Sie geschrieben haben.