Event based components (EBC)

Ein interessanter Ansatz ...

Mittwoch 07 Juli 2010 at 12:43 am. Stichwörter: , , , , ,

Schon seit Jahren ist die komponentenorientierte Programmierung ein erstrebenswertes Ziel für viele Programmierer. Schon zu Visual Basic 5 Zeiten kämpfte man mit den COM (bzw. ActiveX) Komponenten. Als Ziel wurde immer die Wiederverwendbarkeit genannt.

Wer aber jemals in der DLL Hölle gelandet ist, der weiß, dass diese Komponenten so viele Abhängigkeiten besaßen, dass es praktisch jeder Zeit zum GAU kommen konnte. Ich selber habe für ein größeres Projekt eine Anleitung geschrieben, in der die Reihenfolge(!) beschrieben wurde, in der die Komponenten kompiliert werden mussten. In dieser Anleitung ging es nicht um die Funktionalität; es ging nur um die Infrastruktur. 

Mit den Assemblies in .net ging es dann weiter. Durch die Trennung des Interfaces (dem Vertrag einer Komponente) von der Implementierung (dem Quelltext) der Komponente war schon viel gewonnen. Jede Komponente musste nur noch die Verträge kennen, aber nicht mehr die eigentlichen Implementationen.

Dennoch musste eine Komponente das komplette Interface der genutzten Komponente kennen, auch wenn sie nur eine Funktion benötigte. Damit ergaben sich schon wieder Abhängigkeiten unter den einzelnen Komponenten.

Anfang diesen Jahres habe ich dann zum ersten Mal von den EBCs, den Event Basierten Componenten, gelesen.

In dem Artikel von Ralf Westphal wurde ein Ansatz beschrieben, der ein Software Modul darstellte, welches "in sich" ein komplettes Interface definiert. Dieses Modul hat festgelegte Ein- und Ausgänge, deren Vorgaben (Datentyp, Wertebereich,...) im Interface definiert werden.

Das besondere an diesem Ansatz ist, dass keinerlei Informationen über ein anderes Modul benötigt werden. Die einzelnen Komponenten kennen sich gegenseitig überhaupt nicht.

Um beide dennnoch zusammen zu bringen, muss es eine Instanz geben, die die Verbindungen zwischen den einzelnen Bauteilen herstellt. Dies ist die sogenannte Platine; deren Aufgabe ist es nur(!) die Verknüpfungen zu tragen. Die Platine selber hat keine(!) eigene Funktionalität .

Nähere Infos zu den EBCs gibtes unter "http://groups.google.com/group/event-based-components".