NXServer & NXClient – Abstractionlayer

Ich habe beim Stöbern in meinen alten Workspaces ein altes Projekt gefunden, welches ich gerne einmal wieder online stelle. Inhaltlich ist es noch sehr modern, allerdings würde ich viele technische Details heute, aufgrund neuerer verfügbarer Technologien, anders machen. Dennoch hier eine kurze Vorstellung des Projektes:

Vorab der Link zur laufenden Anwendung: http://code.nylz.net/nxserver/

Die Software repräsentiert eine Art Abstraktionsschicht zwischen beliebigen Systemen. Als Benutzerschnittstelle dient in diesem Fall ein HTML/JavaScript-Client, welcher einen Konsolenzugang imitiert. Die Kommunikation zum Server läuft ausschließlich über eine AJAX-Schnittstelle. Somit kann der Client gegen beliebige andere ausgetauscht werden.

Screenshot NXClient

Der NXClient imitiert einen Konsolenzugang im Browser.

Der NXServer, mit welchem der Client kommuniziert, bringt einen eigens hierfür entwickelten HTTP-Server mit. Er parst das jeweils eingegebene Kommando (commandline-style) und prüft, ob er dieses kennt. Dazu dient ihm eine zentrale XML-Konfiguration, in welcher die Kommandos bestimmten Java-Klassen zugeordnet werden. Auf diese Weise ist die Serverseite durch Plugins beliebig erweiterbar. Hier ein Blick auf die Gesamtarchitektur:

NXServer & NXClient Overview

Die Architektur des Gesamtsystems im Überblick

Die Deklaration in der XML-Konfiguration sieht syntaktisch wie folgt aus:

Die Klasse de.nylz.nxs.cmd.TestCommand sieht dann so aus:

Dadurch, dass die Klasse in der XML-Konfiguration unter dem Namen „test“ deklariert wurde, wird diese auch vom Server durch diesen Befehl instantiiert und die Parameter an die Methode „parseCommands“ übergeben. Der Rest erklärt sich eigentlich durch einfaches Ausprobieren. Also hier noch einmal der Link zur laufenden Anwendung:  http://code.nylz.net/nxserver/