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:
-
Solche Widgets lassen sich in GUI - Builder wie GLADE leicht verwenden
-
Durch sogenannte Bags lassen sich zusätzliche Eigenschaften hinzufügen
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
-
Erzeugen von Dokumenten die aus vielen Teilen bestehen
-
Editieren von Unterdokumenten (und Unterdokumenten und Unterdokumenten...)
-
Wiederverwendung von Programmcode
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?
-
CORBA Schnittstellen
-
GTK+ Umhüllung
Ä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 :
-
Herausfinden der Objekteigenschaften und Speicherverwaltung
-
Standardimplementierung für GNOME ist vorhanden (GnomeObject)
-
Benutzer kann queryInterface implementieren wie er will
Erzeugen eines Objektes mit zwei Schnittstellen
Vereinigung zweier Objekte in eines
a = new Object_1;
b = new Object_2;
bonobo_object_add_interface(a,b);
-
Die Beiden Objekte sind jetzt vereinigt und verhalten sich wie eins
-
Durch queryInterface kann man durch die Schnittstellen "browsen"
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.
-
Zwei Schnittstellen müssen implementiert werden
-
Bonobo::Storage repräsentiert ein Verzeichnis
-
Bonobo::Stream repräsentiert eine Datei
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.
-
Evolution (grafischer Mailclient mit Terminverwaltung (Outlook)) kann als
"Federation" von Bonobo Komponenten gesehen werden
-
Nautilus Filemanager ist komplett bonoboized
-
Gnumeric (Tabellenkalkulation) ist zugreifbar über Bonobo
-
GNOME - DB Framework für Datenbankenanwendungen
Bonobo Zukunft
Bonobo hat eine Menge interessante Entwicklungen hervorgebracht. In der
Zukunft soll sich Bonobo weiter verbreiten und auf folgenden Gebieten Einfluss
nehmen.
-
Suns Open Office Projekt beschäftigt sich experimentell mit Bonobo
-
Das Bonobo Clipboard, welches Copy and Paste zusammengesetzter Komponenten
zwischen Applikationen erlaubt.
-
Monkey Beans eine experimentelle Java-Implementation von Bonobo.
-
Mono eine freie Implementation einer C# Entwicklungsumgebung.
... [ Seminar Linux und Apache]
... [ Thema GNOME Komponentenmodell ] ... [
Bonobo ] ... [ Ausblick: GNOME 2.0] ...