|
Roblet®-Development-Kit 1.1 (10Juni10) API für Anwendungen |
|||||||||
PREV PACKAGE NEXT PACKAGE | FRAMES NO FRAMES |
See:
Description
Interface Summary | |
Roblet | Diese Schnittstelle charakterisiert Roblet®-Klassen. |
Robot | Stellt den Kontext eines Roblets® dar und
ermöglicht das Erfragen von Einheiten (Unit ) eines
Roblet®-Servers. |
Unit | Alle Einheiten der Roblet®-Technik müssen von diesem Typ sein. |
Hier sind die zentralen Schnittstellen der Roblet®-Technik enthalten.
Im Rahmen der Roblet®-Technik werden einige Definitionen benötigt, die in allen Teilen einer verteilten Anwendung auf dieser Basis gleich sein müssen. Diese Definitionen sind Java™-Schnittstellen (interface-Klassen). Sie werden an anderer Stelle implementiert bzw. deren Implementierungen erwartet. Diese Schnittstellen sind hier zusammengefaßt.
Roblet
- Roblet®-Schnittstelle
Will eine Anwendung eine gewünschte Funktionalität auf einem
Roblet®-Server ausführen, so muß sie eine Klasse erstellen,
die die Java™-Schnittstelle Roblet
implementiert1.
Zur Laufzeit können in der Anwendung bei Bedarf (beliebig viele,
auch verschiedene) Instanzen von solchen Klassen erzeugt
werden2.
Diese Instanzen können jederzeit zu einem Roblet®-Server
geschickt werden.
Dort werden sie dann ausgeführt.3
Aus einer Roblet®-Instanz wird vom Roblet®-Server durch Ausführen der
Methode Roblet.execute(Robot)
ein Roblet®.
Die genannte Methode wird vom Entwickler der Roblet®-Klasse
als Teil der Anwendung bereitgestellt.
Die Methode ist vergleichbar mit der Methode main(...) einer
normalen Java™-Anwendung.
Eine Anwendung versendet Roblet®-Instanzen mit Hilfe eines
Roblet®-Klienten.
Ein Roblet®-Klienten ist eine Instanz von
Client
.
Robot
- Kontext
Einem Roblet® wird im Roblet®-Server beim
Ausführen der o.g. Roblet.execute(Robot)
-Methode
eine Instanz vom Typ Robot
übergeben.
Diese Instanz wird Kontext genannt.
Mit diesem Kontext kann das Roblet® auf die vom Roblet®-Server
bereitgestellten Ressourcen in Form von
Einheiten zugreifen.
Der Zugriff auf diese Einheiten erfolgt mit der Methode
Robot.getUnit(Class)
.
Unit
- Einheiten
Ein Roblet®-Server bietet einem Roblet® die von ihm
verwalteten Ressourcen mit Hilfe von Instanzen von Klassen an, die die
Java™-Schnittstelle Unit
implementieren.
Roblets® können sich diese Instanzen über die (einzige) Methode des
Kontexts holen:
Robot.getUnit(Class)
.
Der Themenkomplex Einheit (engl. unit) beginnt damit, daß ein Hersteller oder einfach ein Entwickler eine Ressource zur Verfügung stellen will. Eine Ressource kann ein Stück Hardware sein, aber auch eine Software oder oft auch eine Kombination aus beidem.
Die Bereitstellung erfolgt, indem zunächst eine
Java™-Schnittstelle (interface) erstellt wird.
Diese Schnittstelle muß Unit
erweitern (extends).
Damit wird eine Einheit definiert.
Diese Definition sollte dokumentiert werden und kann dann an
Anwendungsentwickler herausgegeben werden.
Damit die Ressource genutzt werden kann, erstellt der Hersteller der anzubietenden Ressource passend noch eine Klasse, die die o.g. eigene Schnittstelle implementiert (implements). Diese Klasse platziert4 er als Teil eines Moduls in einem Roblet®-Server, so daß dieser bei Bedarf von ihr Instanzen erzeugen kann.
Die Implementierung der Klasse kann reines Java sein, aber auch eine Anbindung anderer Software in C/C++ per JNI und damit praktisch auch der Zugriff auf beliebige Hardware und Bibliotheken ist möglich. Eine solche Implementierung kann mit Treibern in Betriebssystemen verglichen werden.
Fragt ein Roblet® nach der durch die
Einheitendefinition dargestellten Ressource, so gibt der Roblet®-Server
daraufhin eine Instanz der Einheitenimplementierung
zurück.
Der Methode Robot.getUnit(Class)
des
Kontexts wird dazu die Klasse der
Einheiten-Schnittstelle als Parameter übergeben.
Eine Einheitendefinition ist ein Java™-interface
zuzüglich einer textuellen Beschreibung, d.h. der Dokumentation der Art und
Weise, wie sie benutzt werden kann und soll, inkl. Grundzustand,
Fehlerfälle, Sonderfälle etc.
Diese Definition erweitert Unit
.
Die Einheitenimplementierung (dann eine Java™-class)
wird als Teil eines Roblet®-Servers bereitgestellt.
Ein Roblet® erhält auf Anfrage zur Laufzeit jeweils eine Instanz
einer solchen Klasse und kann damit die dargestellte Ressource benutzen.
Wesentlich ist, daß nach Veröffentlichung der Definition einer Einheit keine Änderung mehr vorgenommen werden darf. Eine Änderung würde dazu führen, daß die bereits existierenden Anwendungen nicht mehr das vorfinden, wogeben sie entwickelt wurden.
Eine Weiterentwicklung kann jedoch erfolgen, indem einfach eine weitere Definition gemacht wird. Diese Definition kann der vorigen sehr ähnlich sein. Auch die neue Definition muß eine Implementierung bereitgestellt werden, die aber für den Fall, daß sie der vorigen sehr ähnlich ist, auch sehr ähnlich und daher einfach sein wird. Der Roblet®-Server kann dann möglicherweise sogar beide Implementierungen zur Verfügung stellen.
Auf diese Weise ist erfahrungsgemäß ein einfaches aber sehr tragfähiges Konzept der Versionierung gegeben. Alte Anwendungen verwenden noch die alte Einheit (sofern verfügbar), neue Anwendungen können wählen.
Auch zum Thema Einheiten sind Informationen und Beispiele auf roblet®.org verfügbar.
|
Roblet®-Development-Kit 1.1 (10Juni10) API für Anwendungen |
|||||||||
PREV PACKAGE NEXT PACKAGE | FRAMES NO FRAMES |