Komponenten und Dokumentenmodell Bonobo


... [ Seminar Linux und Apache] ... [ Thema GNOME Komponentenmodell ] ... [Ausblick : GNOME 2.0 ] ... 

Übersicht: Komponenten und Dokumentenmodell Bonobo


Motivation für Bonobo


Bonobo ist wie Orbit ebenfalls zu einem Teilprojekt von GNOME herangewachsen. Es hat zum Ziel ein Komponentenmodell und einen Standard für die Interaktion zwischen Komponenten eines komplexen Dokumentes zu schaffen.
Es verfolgt ein ähnliches Konzept wie OLE (Object Linking and Embedding) und erlaubt es Entwicklern wiederverwendbare Software-Komponentenobjekte zu erzeugen. Zusätzlich ist BONOBO ein Dokumentenmodell, dass mehrere Objekte nahtlos in ein gemeinsam genutzten Container interagieren lässt.
Ein oft zitiertes Beispiel soll an dieser Stelle das eingebettete Excel - Dokument  in einem Word - Dokument (Container)  sein. Also enthält das Dokument sowohl Excel als auch Word Daten und wenn sie auf die Tabelle klicken, können sie diese editieren. Bonobo baut auf den von CORBA bereitgestellten Diensten auf und bietet ein Framework, dass den Entwicklern und Anwendern hohe Flexibilität liefert. Daraus folgt, dass die  Bonobo - Schnittstellen sowohl sprach- als auch Toolkit-unabhängig sind. Um grafische Applikationen zu erzeugen, werden in der Referenzimplementierung CORBA-Schnittstellen auf Gtk-Objekte abgebildet, die vom Applikationsprogrammierer einfach angepasst werden.



 

Was gibt es bei Bonobo?

Bonobo Komponenten

Bonobo Komponenten sind alle von der Bonobo::Unknown Schnittstelle abgeleitet. Wie diese Schnittstelle aussieht wird später noch gezeigt.
Eine Referenzimplementierung eines Bonobo Objektes ist das GnomeObject.

Bonobo Steuerelemente (Bonobo Controls)

Bonobo Controls sind widgets (GUI Elemente), die durch die Verbindung mit BONOBO (CORBA Diensten) mit Containern kommunizieren können.
Sie haben folgende Vorteile:

Bonobo Verbunddokumente

Wie oben erwähnt bietet Bonobo die Möglichkeit Verbunddokumente zu erzeugen, die dann ein komplexes Element darstellen, in dem die einzelnen Objekte miteinander kommunizieren (Excel - Word Beispiel).

Problem

Beispiel : GNUMERIC Tabelle in Abiword
Unterstützt einheitliche Objekte und Verknüpfung von Objekten
Bietet eine einheitliche Schnittstelle zu allen Objekten

Wie wird das was in Bonobo realisiert?

Ähnlichkeiten zu COM, OLE2, ActiveX, Delphi und Java Beans

Die Schnittstelle

interface Unknown {
        /* increment the reference count */
        void ref ();

        /* decrement the reference count */
        void unref ();

        /* return a CORBA object with interface repoid,
         * or CORBA_NIL */
        Unknown queryInterface (in string repoid);
};

Grundlegende Schnittstelle : Bonobo::Unknown

Aufgaben :

Erzeugen eines Objektes mit zwei Schnittstellen


Permanentes Speichern von Objekten

Was Verbundokumente sind wurde bereits oben beschrieben. Wie nun allerdings diese persistent abgespeichert werden ist noch nicht geklärt.
Das Problem  diese Dokumente bilden  eine Hierarchie  (Excel Sheet in Worddokument usw.) die in einer Datei abgebildet werden müssen.
Die Abstraktion ist ein Dateisystem innerhalb einer Datei. Das bedeutet, dass ein Verzeichnis (Container) mehrere Dateien (Component) enthalten kann.
  Es gibt allerdings schon eine dateibasierte Implementierung dieses Konzeptes (libefs) für Bonobo.
 



Bonobo heute

Der Erfolg von einem Komponentenmodell wie Bonobo hängt von der Verfügbarkeit schon implementierter Komponenten ab. Was soll man Wiederverwenden, von dem was nicht da ist?
 

Hier nun einige Programme die bereits Bonobo verwenden.


Bonobo Zukunft

Bonobo hat eine Menge interessante Entwicklungen hervorgebracht. In der Zukunft soll sich Bonobo weiter verbreiten und auf folgenden Gebieten Einfluss nehmen.
 
... [ Seminar Linux und Apache] ... [ Thema GNOME Komponentenmodell ] ... [ Bonobo ] ... [ Ausblick: GNOME 2.0] ...