23.11.2012 Aufrufe

monitor 4_97

monitor 4_97

monitor 4_97

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

Activation (auch als Compound Document<br />

bezeichnet) bestehen.<br />

Das Component Object Model ist<br />

eine Sammlung von Klassen mit den jeweiligen<br />

Schnittstellen (Interfaces).<br />

Entscheidender Unterschied zwischen<br />

gängigen Betrachtungsweisen der<br />

Objektorientierung und dem COM-<br />

Konzept ist die Tatsache, daß ein COM-<br />

Objekt mehrere Interfaces anbieten<br />

kann. Ein spezielles Interface wird dabei<br />

immer unterstützt, das Unknown-Interface.<br />

Unknown bietet als wesentliche<br />

Methode die Query-Interface-Methode<br />

an. Mit Query-Interface können weiterführende<br />

Interfaces abgefragt werden.<br />

Physisch stellt ein Interface immer eine<br />

Menge von Funktionszeigern dar. Ein<br />

C++-Objekt (oder auch Small-Talkoder<br />

Java-Objekt) hat immer nur ein Interface.<br />

Dieses Interface setzt sich aus<br />

den eigenen öffentlichen Attributen<br />

und Methoden und denen der Mutterklassen<br />

zusammen. Dieses Interface ist<br />

somit eindeutig durch die Klasse bestimmt.<br />

Ein Abfragen nach weiteren Interfaces<br />

ist sinnlos. COM dagegen kennt<br />

keine Vererbung. Die Anhäufung von<br />

Interfaces soll im COM die Vererbung<br />

ersetzen.<br />

COM-Verbindungen beginnen mit<br />

der Suche der Klassen-Kennung<br />

(CLSID) in der Registrierungsdatei. Der<br />

Suchbegriff setzt sich aus dem Komponenten-,<br />

Klassen- und Versionsbezeichner<br />

zusammen (z.B. Excel.Application.5).<br />

Eine COM-API-Funktion kann<br />

eindeutige CLSIDs, die sich aus Zeitstempel<br />

und Netzwerkkennung zusammensetzen,<br />

generieren.<br />

Über die CLSID wird der gesuchte<br />

Server gestartet und ein Metaklassenobjekt<br />

zur Objektgenerierung (class<br />

factory) im Server instanziert. Diese<br />

Class Factory instanziert schließlich das<br />

gesuchte Server-Objekt. Bei COM-<br />

Klassen, die über Visual C++ angelegt<br />

wurden, ist die Class Factury-Klasse<br />

eine Kindklasse von COleObject-<br />

Factory. Diese Kindklasse wird über einen<br />

Makro DECLARE_OLECREATE<br />

eingerichtet. Über das Query-Interface<br />

erhält man vom Serverobjekt das gesuchte<br />

Interface. Die Lokalität des<br />

Serverobjekts kann dabei im selben Prozeßrahmen<br />

des Clients (In-Proc-Server)<br />

oder als COM-Objekt lokal oder remote<br />

sein. Innerhalb des Clients befindet sich<br />

dann ein Proxy-Objekt, das die Schnittstellen<br />

des Servers nachbildet. Die<br />

Kommunikation zwischen Proxy und<br />

dem Gegenüber im Server (Stub) wird<br />

über COM abgewickelt.<br />

Ziel dieses 1989 gegründeten und herstellerunabhängigen<br />

Konsortiums war die<br />

Bereitstellung einer geeigneten Infrastruktur<br />

für verteilte objektorientierte Programme<br />

auf heterogenen Netzwerken. Um die<br />

Standardisierung in geordnete Bahnen zu<br />

lenken, hat die OMG eine Referenzarchitektur<br />

OMA (Object Management Architecture)<br />

definiert, deren Bestandteile die<br />

beteiligten Mitglieder schrittweise mit Inhalt<br />

füllen.<br />

Der Object Request Broker (ORB) ist<br />

Kern der OMA. Seine primäre Aufgabe besteht<br />

in der Übermittlung von Methodenaufrufen<br />

von einer Client-Applikation zu<br />

einem entfernten Objekt sowie in der<br />

Rückmeldung von Fehlern und Ergebnissen.<br />

Corba ist das Kürzel für ,,Common Object<br />

Request Broker Architecture“. Corba<br />

ist allerdings mehr als ein bloßer Mechanismus<br />

für Methodenaufruf zwischen Prozessen.<br />

Der Zugriff auf entfernte Objekte soll<br />

auch unabhängig von Programmiersprachen<br />

erfolgen. Ein solches Objektmodell<br />

findet sich in der Corba-Spezifikation. Jedes<br />

Objekt ist Instanz eines Interface-Typs.<br />

Ein Interfacetyp repräsentiert eine Klasse<br />

mit möglicherweise mehreren Elternklassen.<br />

Unterstützung findet dabei Schnitt-<br />

COM oder ActiveX-Controls kennzeichnen<br />

sich durch Schnittstellen, die<br />

als Methoden (Diensterbringung) und<br />

Eigenschaften (Properties) verfügbar<br />

sind. Einige Standard-Eigenschaften<br />

(Stock-Properties), wie Schriftart-Einstellung<br />

oder Farbeinstellung sind bereits<br />

vorbereitet. Stock-Properties können<br />

einfach in ActiveXControls<br />

integriert werden. Grundsätzlich sollten<br />

Merkmale, die gesetzt und gelesen<br />

werden und zudem ein Attribut zur<br />

Datenhaltung erfordern, als Properties<br />

realisiert werden. Methoden sollen die<br />

Services des Controls sein. Für den Einsatz<br />

des Controls spielt es kaum eine<br />

Rolle, ob für bestimmte Aufgaben Properties<br />

oder Methoden eingesetzt werden.<br />

An ihren Container können COM-<br />

Controls über Events Botschaften zurücksenden.<br />

Gerade diese Events verschieben<br />

das sonst übliche<br />

Client/Server-Verhältnis in ein PeertoPeer-Verhältnis.<br />

Das Control selber<br />

kann beliebig komplexe Darstellungen<br />

übernehmen. Von einfachen Eingabefeldern<br />

bis zu aufwendigen TabControls<br />

mit integrierten Listen, die je Zeile wieder<br />

Controls enthalten, sind COM-Controls<br />

möglich und üblich. Gerade hier<br />

sollte die Zielsetzung sein, bestehende<br />

Projekte auf Controls zu verteilen und so<br />

auch über Active X verfügbar zu ma-<br />

OMG und Corba<br />

stellenvererbung, nicht jedoch Implementierungsvererbung.<br />

Damit eine Applikation<br />

auf ein Corba-Objekt zugreifen kann,<br />

muß die Interoperabilität zwischen dem<br />

Aufrufer und dem entfernten Objekt gewährleistet<br />

sein. In Corba gibt es zu diesem<br />

Zweck eine eigene Schnittstellenbeschreibungssprache<br />

namens IDL (Interface Definition<br />

Language). IDL enthält ausschließlich<br />

Elemente zur Datenbeschreibung<br />

und keinerlei Anweisungskonstrukte.<br />

Die Syntax ist an C++ angelehnt.<br />

Im Corba-Standard 1.2 fehlt eine Spezifikation,<br />

wie die Kopplung verschiedener<br />

Corba-Implementierungen aussehen soll.<br />

Das hat zu fehlender Interoperabilität zwischen<br />

den Produkten unterschiedlicher<br />

Hersteller geführt. Der Nachfolgestandard<br />

Corba 2.0 legt nun fest, wie Corba-Produkte<br />

auf Basis vorhandener Kommunikationsprotokolle<br />

miteinander zusammenarbeiten<br />

müssen. Einzig die Kooperation auf Basis<br />

von TCP/IP ist verpflichtend, alles andere<br />

optional. Wollen zwei beliebige Broker<br />

über TCP/IP Informationen austauschen,<br />

müssen sie hierfür das standardisierte IIOP<br />

(Internet Inter ORB Protocol) benutzen. ❏<br />

chen. Bei neuen Projekten bietet sich ein<br />

solcher modularer, komponentenbasierender<br />

Ansatz besonders an.<br />

ActiveX-Steuerelemente können auf<br />

HTML-Seiten plaziert und über Skripten-Sprachen<br />

(JavaScript von Netscape<br />

und Visual Basic Script von Microsoft)<br />

verknüpft werden. Für die Bearbeitung<br />

von Skripten sorgen im Internet-Explorer<br />

eigenständige Komponenten, die<br />

Scripten Engines. Der HTML-Viewer<br />

weiß also nicht, in welcher Sprache ein<br />

auszuführendes Script geschrieben ist.<br />

Statt dessen erzeugt er eine Instanz, der<br />

zum Skript gehörenden Scripten-Engine<br />

und veranlaßt sie dazu, mit der Ausführung<br />

des Skriptes zu beginnen.<br />

Die für den Informationsaustausch<br />

zwischen Viewer und Scripten-Engine<br />

notwendigen Schnittstellen definiert<br />

die Spezifikation des ActiveX-Scripting.<br />

Scripten-Engines werden in der<br />

Regel als prozeßinterner Server implementiert,<br />

wodurch jede beliebige Anwendung<br />

als Skripten-Host arbeiten<br />

kann, wenn sie eine Scripten-Engine<br />

lädt und von ihr gesteuert wird.<br />

Beim Einpflanzen von Controls auf<br />

HTML-Seiten können die persistenten<br />

Eigenschaften des Controls bearbeitet<br />

werden. Mögliche persistente Eigenschaften<br />

sind Voreinstellungen des Controls<br />

oder vorgegebene Auswahl-Daten<br />

bis hin zu Multimedia-Daten. Die Per-<br />

66 <strong>monitor</strong> 4/<strong>97</strong>

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!