Einäugige unter den Blinden

on

Es gibt Tage an denen ich mich eines frage:

Bin ich der Einäugige unter den Blinden und genieße nur noch einen besonderen Status weil ich das was ich mache schon so lange mache und wurde eigentlich schon lange von den Neuen abgehängt. Teilweise auch, weil ich mich aus der aktiven Programmierung sehr weit zurückgezogen habe und in vielen Angelegenheit nur noch beratend und konzipierend tätig bin?

Tja, meistens kennt die Software ja nur ein ausgewählter Kreis. Viel dringt da nicht nach draußen. Und dann kommt der Moment, wenn du auf einmal jemand von „draußen“ an der Strippe hast, der über ein Stück Software von mir gestolpert ist.

Ein Stück Software, bei dem ich noch nie so überzeugt davon war, dass es jetzt der große Wurf war. Es war mehr so ein „sollten wir mal machen“ Ding und hab ich danach nie wieder weitergepflegt.

Ein Client der beispielhaft den Versand einer eXTra-Nachricht per https realisiert. Da die Anforderung damals war, dass der Client möglichst generisch sein soll, habe ich ihn modular aufgebaut. Aufgeteilt in mehrere „Plugins“ mit standardisierten Schnittstellen zu einer Kernkomponente:

  • Eine Core-Library, die nichts anderes macht als aus den Informationen der anderen Plugins einen eXTra-Request aufzubauen.
  • Ein Data-Plugin, dass die zu versendenden Nutzdaten zur Verfügung stellt. Inklusive Datensatzspezifischen Informationen wie z.B. Verschlüsselung oder den Dateiname
  • Eine Abwandlung davon ist das Query-Plugin, dass eine Query nach den eXTra-Standardnachrichten erzeugt und anstelle der Nutzdaten übergibt.
  • Ein Config-Plugin, dass datensatzübergreifende Informationen zur Verfügung stellen. Zum Beispiel: Absender- und Empfänger-Informationen.
  • Ein Output-Plugin, dass den Request von der Core-Library übernimmt und versendet. Sei es nun durch Schreiben auf die Platte oder Versand per Webservice oder http oder Mail oder whatever. In meinem Fall übernimmt das Output-Plugin auch noch die Verarbeitung und Auswertung der Response übernimmt.
  • Ein Starter, das erstmal nichts weiter macht, als alle anderen Teile zu initialisieren. Ich hab’s mein einfach gemacht und damals nur eine Konsolen-Version gestrickt. Aber es ließe sich wohl auch per Oberfläche oder sonstwie starten.

Tja, alles in allem kein Hexenwerk. Geschrieben ist das ganze in Java 6 mit Spring 2.5. Das Marshalling und Unmarshalling übernimmt JaxB. Die Kommunikation läuft über Apache httpComponents.

Alles also kein Hexenwerk… aber es ist schön, dann zu hören, wenn jemand von der Idee sehr begeistert ist. Vielleicht sollte ich da in Zukunft doch noch wieder ein bisschen Energie rein investieren.