Powerpoint

Werbung
Gliederung: Teil I - Grundlagen
1. Einführung
– Motivation
– Definition,
– Konzepte für Komponenten (klassische, kommerzielle, akademische)
2. Industrielle Komponentensysteme der 1. Generation
1. CORBA
2. (D)COM
3. Enterprise JavaBeans
3. Anpassungsprobleme
– Daten und Funktion
– Interaktion
• Kommunikation
• Synchronisation
• Protokolle
– Lebendigkeit
Dr. Welf Löwe und Markus Noga
1
Aufgaben kommerzieller Systeme
(Corba, (D)COM, EJB)
Daten- und Interface-Beschreibung
Referenz- und Wertesemantik
Kommunikation (Nachrichten und RMI)
Verteilung, Persistenz, Heterogenität
Softwarebus
Dr. Welf Löwe und Markus Noga
2
Gliederung
Literatur, Ziele, Bestandteile
Basis-Mechanismen für
– Kommunikation,
– modulare Austauschbarkeit,
– Adaption
Mechanismen zur Standardisierung von Schnittstellen
(Services, Facilities)
Selbstbeschreibung (Metaobjekte, MOF)
Corba und das Web
Austauschformat XMI
Dr. Welf Löwe und Markus Noga
3
I.2.1.1 Corba Grundlagen
R. Orfali, D. Harkey: Client/Server Programming with Java and Corba.
Wiley&Sons. Leicht zu lesen.
R. Orfali, D. Harkey, J. Edwards: Instant Corba. Addison-Wesly.
Deutsch. Leicht zu lesen, aber einige konzeptionelle
Übersetzungsfehler
CORBA. Communications of the ACM, Oct. 1998. Neueste CorbaEntwicklungen.
Jens-Peter Redlich, CORBA 2.0 / Praktische Einführung für C++ und
Java. Verlag: Addison-Wesley, 1996. ISBN: 3-8273-1060-1, 59.90DM
Corba 2.2 Specification. OMG. http://www.omg.org
Vorträge aus dem Web:
– Von der OMG:
• Java Portability and CORBA Integration, Dr. Richard Soley, CEO, OMG, April,
1999
• Application Server Market Summary. Paul Harmon, Editor, Component
Development Strategies Newsletter
Dr. Welf Löwe und Markus Noga
4
Corba
Common Object Request Broker Architecture
Gründung der OMG (object management group) 1989. Ziel: plug-andplay components everywhere
When the Object Management Group (OMG) was formed in 1989, interoperability
was its founders primary, and almost their sole, objective:
A vision of software components working smoothly together, without regard to
details of any component's location, platform, operating system, programming
language, or network hardware and software.
Jon Siegel
Corba 1.1 1991 (IDL, ORB, BOA)
ODMG-93 (Standard für oo-Datenbanken)
Corba 2.0 1995, heute 2.2
Corba 3.0 1999
Dr. Welf Löwe und Markus Noga
5
Ziel: Standardisierte Dienste für
Anwendungen
Interoperabilität (Interoperability Services)
–
–
–
–
Gemischtsprachlichkeit (Multi Language System)
Architekturunabhängigkeit (Multi Platform)
Dienstgeber-Transparenz
Internetzdienste (Internet/Web Services)
Domänenspezifische, anwendungsorientierte
Spezifikationen (Domain Specifications)
– Für Medizin, Finanzwirtschaft, Maschinenbau, etc.
– Geschichtete Dienste (layered services)
Portabilitätsdienst (Portability Services)
Dr. Welf Löwe und Markus Noga
6
Bestandteile von Corba
Basisdienste (Verdrahtungsstandard)
– Transparente Verteilung (fast), transparente Plattform
• Entfernter Methodenaufruf
• Verallgemeinerter Methodenaufruf durch Dienstvermittlung (Request
Broking (ORB, DII)
• Proxies
– Gemischsprachlichkeit durch einheitliche Schnittstellenbeschreibung
(IDL)
– Transparente (Netz-)Protokolle
– Codevererbung
Object management Architecture OMA
– CorbaServices
– CorbaFeatures (horizontal vs. vertikal)
– Selbstbeschreibung (metaobject facility)
Dr. Welf Löwe und Markus Noga
7
Bestandteile von Corba
Basisdienste
Interoperabilität
IDL, RPC, ORB
Erweiterte
Interoperabilität
DII, Trading
Protokolle
GIOP IIOP
MOF
(reflection)
Facilities
Services
Scriptsprachen
Geschäfts
objecte
(business
objects)
Komponenten
CorbaBeans
Dr. Welf Löwe und Markus Noga
8
Die OMA (object management architecture)
Application Interfaces Domain Interfaces
Common Facilities
Object Request Broker
Object Services
Dr. Welf Löwe und Markus Noga
9
Die OMA (object management architecture)
Object Request Broker (ORB, Corba)
– Management für verteilte Objekte
– Kommunikation zwischen Objekten
General Service Interfaces (Object Services)
– Objekterzeugung, -zugriff, -verschiebung (relocation)
– Generische Laufzeitumgebung für Objekte
Common Facilities (Corba Facilities)
– Standarddienste: Druckdienste, Datenbankzugriff, e-mail etc.
Non-Standard Application Specific Interfaces
– Anbieterspezifische Dienste
– Nicht standardisiert durch die OMG
Vertical Domain Specific Interface
– Kombinieren Object Services und Common Facilities
– Markt- oder Industriespezifische Dienste
Dr. Welf Löwe und Markus Noga
10
ORB
Client
IDL
Dynamic
Invocation Stub
Server/Object Implementation
ORB
Interface
IDL
Dynamic
Skeleton
Skeleton
Object
Adapter
ORB Kern
ORB-abhängig
Standardisiert
Objekttyp-abhängig
Dr. Welf Löwe und Markus Noga
11
ORB Verfeinerte Sicht
Dr. Welf Löwe und Markus Noga
12
Mechanismen für modulare
Austauschbarkeit
IDL (interface definition language), die
Schnittstellenbeschreibungssprache (ISO 14750), schildert
Schnittstellen
– Gemischtsprachlichkeit: Es existieren Sprachanbindungen für etliche
Sprachen, auch alte wie COBOL
– Verteilung: Aus IDL wird Code generiert, der auf dem Netz kommunizieren
hilft (marshalling, demarshalling)
Statischer Methodenaufruf mittels statischen Rümpfen und Skeletten
(stubs and skeletons): Aus IDL generiert man auch Stellvertreterobjekte
(Entwurfsmuster proxy)
Request Broking (request binding) und dynamic invocation interface DII:
Neben normaler Polymorphie kennt Corba das dynamische Suchen
eines Services, das transparente Erwecken eines Dienstes
Interoperable Object Reference (IOR): Objekte und Komponenten
erhalten eindeutige IORs
Dr. Welf Löwe und Markus Noga
13
Interface Definition Language
Typen
Module <identifier> {
<type declarations>
<constant declarations>
<exception declarations>
Objekte
Nicht-Objekte
ReferenzObjekte
// Klassen
interface <identifier> : <inheriting-from> {
<type declarations>
<constant declarations>
<exception declarations>
// Methoden
optype <identifier>(<parameters>) {
...
Any
}
....
Bool
}
}
Enum
Wertobjekte
Basistypen
Konstruktoren
Ints (short,..)
Struct
Reals
Typen
(float..)
Sequence
Char, string,
Union
octet
Array
Dr. Welf Löwe und Markus Noga
14
Ablauf IDL-Codegenerierung
IDL Interface
Server
Implementation
Implementation
Repository
Objektadapter/
BOA
IDLCompiler
Server
Skeleton
Client
Stub
Client
Implementation
Compiler
Server
Client
Dr. Welf Löwe und Markus Noga
15
Der (Basis-)Objektadapter BOA
CORBA::BOA
-
Create
change_implementation
get_id
dispose
set_exception
impl_is_ready
obj_is_ready
deactivate_impl
deactivate_obj
Gaukelt dem Klienten ein ständig
lebendes Objekt vor.
Kapselt
– Aktivierung (Start, Stop),
– Persistenzaspekte
Muss in jedem ORB vorhanden
sein, um einen minimalen Service
zu gewährleisten
Verwaltet das Implementation
Repository (Registry).
Unterstützt auch nicht-oo Code
Aufgerufen von Client (über ORB
Kern) und Server (direkt)
Dr. Welf Löwe und Markus Noga
16
Serverseite
Server / Object Implementation
impl_is_
ready
deactivate_
obj
object_is_
ready
deactivate_
impl
IDL
BOA
Skeleton
ORB Kern
Dr. Welf Löwe und Markus Noga
17
Servermodelle
Gemeinsamer Serverprozess (Shared-Server)
– mehrere Objekte in einem Prozess auf dem Server;
– BOA initialisiert sie als nebenläufige Fäden (threads) mit gemeinsamen
Adressraum (gemeinsames Apartment)
– BOA Funktionen deactivate_impl, impl_is_ready, obj_is_ready abgebildet auf
thread-Funktionen
Separater Serverprozess (Unshared-Server)
– Hier wird für jedes Objekt ein eigener Prozess auf dem Server verwaltet.
Methoden-Prozess (Server-per-Method)
– Jeder Methodenaufruf erzeugt einen neuen Prozess.
Persistenter Server
– Hier startet eine andere Anwendung die Objekte (z.B. Eine Datenbank).
– BOA reicht die Anfragen nur durch.
Dr. Welf Löwe und Markus Noga
18
Objektaktivierung auf dem Server
Server
Objekt1
Objekt2
CORBA::BOA
Impl_is_ready
Create
obj_is_ready
get_id
obj_is_ready
deactivate_obj
deactivate_obj
deactivate_impl
Dr. Welf Löwe und Markus Noga
19
Statische Aufträge (Methodenaufrufe)
Methoden der Teilnehmer sind statisch bekannt.
–
–
–
–
Aufruf durch Stummel und Skelette,
Keine Suche nach Diensten (im Repository),
Keine Suche nach Serviceobjekten,
Schnell
Statische Typprüfung durch Übersetzer möglich
Da der Aufruf an die Skelette durch den Objekt-Adapter geht,
erscheint dem Klienten das Serverobjekt durchgängig
lebendig (Transparentes Leben)
Dr. Welf Löwe und Markus Noga
20
Dynamischer Aufruf (Request Broking)
Dynamischer Aufruf (dynamische Abfrage)
– Komponenten dynamisch ausgetauscht oder nachträglich eingebracht
– Neuübersetzung entfällt
– Beispiel: Plugins für Browser, Zeichenprogramme etc.
Beschreibung der Komponentensemantik zur Suche
– Object Interface
– Informationen
• Metadaten (beschreibende Daten)
• Schnittstellendaten
• Verzeichnisse von Komponenten (interface repository, implementation
repository)
Such-Vermittler - ORB interface
Dr. Welf Löwe und Markus Noga
21
Das Corba-Objekt
CORBA::Object
-
get_implementation
get_interface
is_nil
create_request
is_a
duplicate
release
....
Das Corba Objekt vererbt sich als
Klasse auf alle Corba-Objekte und
Programmelemente.
get_interface liefert eine Referenz
auf den Eintrag im interface
repository.
get_implementation eine Referenz
auf die Implementierung
Dr. Welf Löwe und Markus Noga
22
Der Objektanfragen-Vermittler ORB
CORBA::ORB
-
object_to_string
string_to_object
create_list
create_operation_list
get_default_context
create_environment
BOA_init
list_initial_services
resolve_initial_references
....
Der ORB ist ein Vermittler
(Entwurfsmuster) zwischen Client
und Server.
Er verbirgt die Umgebung vor dem
Klienten.
Er sucht für dynamische Aufrufe
Dienstgeber.
Er kann andere ORBs ansprechen,
insbesondere solche auf dem Web.
Dr. Welf Löwe und Markus Noga
23
ORB-Aktivierung auf dem Klienten
Objekt
CORBA
ORB
ORB_init
Initialisiert den Vermittler
BOA_init
List_initial_services
resolve_initial_references
Initialisiert den Server-BOA
Liefert Strings
Liefert Objektreferenzen
Dr. Welf Löwe und Markus Noga
24
Beispiel IDL
//TestTimeServer.idl
module TestTimeServer{
interface ObjTimeServer{
string getTime();
};
};
Dr. Welf Löwe und Markus Noga
25
Beispiel fortgesetzt: Service Implementierung
//TestTimeServerImpl.java
import CORBA.*;
class ObjTestTimeServerImpl extends
TestTimeServer.ObjTimeServer_Skeleton //generated from IDL
{
//Variables
//Constructor
//Method (Service) Implementation
public String getTime() throws CORBA.SystemException{
return “Time: “+currentTime;
}
};
Dr. Welf Löwe und Markus Noga
26
Server Implementierung
// TimeServer_Server.java
import CORBA.*;
public class TimeServer_Server{
public static void main(String[] argv){
try{
CORBA.ORB orb = CORBA.ORB.init();
…
ObjTestTimeServerImpl obj =
new ObjTestTimeServerImpl(…);
…
System.out.println(orb.object_to_string(obj));
}
catch (CORBA.SystemException e){
System.err.println(e);
}
}
};
Dr. Welf Löwe und Markus Noga
27
Client Implementierung
//TimeServer_Client.java
import CORBA.*;
public class TimeServer_Client{
public static void main(String[] argv){
try{
CORBA.ORB orb= CORBA.ORB.init();
…
CORBA.object obj = orb.string_to_object(argv[0]);
…
TestTimeServer.ObjTimeServer timeServer=
TestTimeServerImpl.ObjTimeServer_var.narrow(obj);
…
System.out.println(timeServer.getTime());
}
catch (CORBA.SystemException e){
System.err.println(e);
}
}
};
Dr. Welf Löwe und Markus Noga
28
Beispielausführung
C:\> java TimeServer_Server
IOR:00000000000122342435 …
C:\> java TimeServer_Client IOR:00000000000122342435 …
Time: 14:35:44
Dr. Welf Löwe und Markus Noga
29
IOR (interoperable object reference)
Verbirgt Objektreferenzen der Programmiersprachen, ist pro
Programmiersprache eindeutig abgebildet (für alle ORBs)
transient (verschwindet mit Server) oder persistent (lebt weiter).
Bestandteile:
– Typnamen (type code), d.h. Indices in das Interface Repository
– Protokoll und Adressinformation (z.B. beim IIOP TCP/IP port #, host name),
auch für verschiedene zugleich unterstützte Protokolle
– Objektschlüssel (object key).
• Opaques Datum, nur vom erzeugenden ORB lesbar (Zeiger)
• Object-Adaptername (für den BOA), Objectname
Type Name
(repository id)
Protokoll u.
Adresse
ObjektSchlüssel
Dr. Welf Löwe und Markus Noga
30
Beispiel: IOR
Client
IDL:My
Obj:1.0
Server
Bobo:
1805
OA4,
obj_999
Obj_999
OA4
Obj_998
Obj_997
Dr. Welf Löwe und Markus Noga
31
I.2.1.2 Corba Dienste (Corba services)
OMG. CORBAservices: Common Object Service
Specifications. http://www.omg.org. Version vom Dez. 98.
Dr. Welf Löwe und Markus Noga
32
Bestandteile von Corba
Basisdienste
Interoperabilität
IDL, RPC, ORB
Erweiterte
Interoperabilität
DII, Trading
Protokolle
GIOP IIOP
MOF
(reflection)
Facilities
Services
Scriptsprachen
Geschäfts
objecte
(business
objects)
Komponenten
CorbaBeans
Dr. Welf Löwe und Markus Noga
33
Überblick Corba Dienste (Services)
16+ standardisierte Dienstschnittstellen (in IDL definiert).
Implementierungsstand je nach Anbieter
http://www.cetus-links.org/oo_object_request_brokers.html
Einteilbar in
– Objektdienste: Dienste zur Verwaltung von Objekten (d.h.
Komponenten im CORBA-Sinn)
– Zusammenarbeitsdienste: Dienste, die Zusammenarbeit von
Objekten betreffen
– Geschäftsprozessdienste: Dienste, die stärker in Richtung
Anwendung definiert sind und vorgefertigte Funktionalitäten für
Geschäftsanwendungen bereitstellen.
Dr. Welf Löwe und Markus Noga
34
Objektdienste
Namen (directory service)
– Das Dateisystem (directory tree) ist i.W. ein Namensdienst.
– Auf beliebige Internet-Objekte ausdehnbar.
Allokation (lifecycle service)
– keine Semantik bei Deallocation
– keine Destruktoren
Eigenschaften für Objekte (property service)
Persistenz
– Objektzustand bleibt über Programmaufrufe erhalten
Serialisierung in Ströme (externalization)
Relationen (relationship service)
– Relationen, Rollen, Kanten sind Objekte
– Standardrelationen reference, containment
– Standardrollen references, referenced; contains, containedIn
Container (collections)
Dr. Welf Löwe und Markus Noga
35
Zusammenarbeitsdienste
Kommunikation
– Rückrufservice (callbacks)
– Ereignisse über entsprechende Kanäle
– Typen von Kanälen
• Schub-Modell (push model):
die Komponenten stopfen Ereignisse in den Ereigniskanal
• Zug-Modell (pull model):
die Komponenten warten am Ereigniskanal und entnehmen selbsttätig
Parallelität
– Sperren (concurreny service)
• Sperren, Sperrenmengen, in Transaktionsmodus oder ohne Transaktionen
– Transaktionen (object transaction service, OTS)
•
Flache und ev. geschachtelte Transaktionen über Objektgraphen.
Dr. Welf Löwe und Markus Noga
36
Geschäftsprozessdienste
Makler (Händler, Trading service)
– Gelbe Seiten
– Lokalisierung von Diensten mittels Dienstbeschreibungen
Abfrage (Query)
– Suchen von Objekten mit Attributen und der OQL, SQL (ODMG-93)
Lizensierung
– License managers, licence service
Sicherheit
– Einsatz von SSL und anderen Basisdiensten.
– Alle ORBs arbeiten zusammen.
Dr. Welf Löwe und Markus Noga
37
Abhängigkeiten zwischen den Diensten
Makler
Transaktionen
Query
Persistenz
Lizenzen
Serialisierung
Sicherheit
Container
Eigenschaften
Allokation
Namen
Sperren
Relationen
Rückruf
Ereignisse
Dr. Welf Löwe und Markus Noga
38
Entwurfsprinzipien
Die Qualität eines Dienstes (schnell, langsam, zuverlässig,..) ist
implementierungsabhängig, aber die Schnittstelle ist genormt.
Dienste sind orthogonal zueinander
– Selbstanspruch des Standards
– KISS (keep it simple, stupid)
Alle Schnittstellen sind auf CORBA::Object definiert
– Prinzipiell können alle Objekttypen übergeben werden.
– IDLs schränken evtl. ein.
– Reflektion - dynamisch kann der Typ eines Objektes abgefragt werden
Verschiedene Sichten auf einen Dienst
Prinzipien für Schnittstellendefinition
– Ausnahmebehandlung wird benutzt.
– Operationen sind explizit, d.h., nicht durch Flags parametrisiert.
– Schnittstellen können mehrfach vererbt werden.
Dr. Welf Löwe und Markus Noga
39
Objektdienste: Namen
Binden eines Namens an ein Objekt in einem Namensraum
(scope, naming context).
– Ein Namensraum ist ein Objekt, das eine Menge von Bindungen enthält.
Sie können sich gegenseitig referenzieren und so Namensgraphen
aufbauen
– Namen sind Pseudoobjekte, um schnell bearbeitet werden zu können
Eigenes Namensschema,
– Verwendet nicht Betriebssystems- oder URL-Konventionen.
– Dadurch Transparenz der Implementierung des Namens.
– Zur Manipulation von Namen existiert eine eigene Bibliothek
(Entwurfsmuster Fabrik).
– Ein Name besteht aus einem Tupel: Id, Type
• Id: eigentlicher Name, das
• Art: Repräsentation (z.B. c_source, object_code, executable, postscript,..).
wird nicht vom Namensdienst, sondern nur von der Anwendung manipuliert.
Ein Dateisystem bildet ein einfachen Namensraum.
Dr. Welf Löwe und Markus Noga
40
Namensdienst
CosNaming::NamingContext
bind(in Name n, in Object obj)
-rebind(in Name n, in Object obj)
-bind_context
-rebind_context
-Object resolve
-unbind(in Name n)
-NamingContext new_context;
-NamingContext bind_new_context(in Name n)
-void destroy
-list
-
Dr. Welf Löwe und Markus Noga
41
IDL Namensdienst
module CosNaming{
typedef string Istring;
exception CannotProceed {
struct NameComponent {
NamingContext cxt;
Istring id;
Name rest_of_name;
Istring kind;
};
};
exception InvalidName {};
typedef sequence <NameComponent> Name;
exception AlreadyBound {};
enum BindingType { nobject, ncontext };
exception NotEmpty {};
struct Binding {
Name binding_name;
interface BindingIterator {
BindingType binding_type;
boolean next_one(out Binding b);
};
boolean next_n(in unsigned long how_many,
typedef sequence <Binding> BindingList;
out BindingList bl);
interface BindingIterator;
void destroy();
interface NamingContext;
};
} NamingContext {
nterface
enum NotFoundReason { missing_node, not_context, not_object };
exception NotFound {
NotFoundReason why;
Name rest_of_name;
};
Dr. Welf Löwe und Markus Noga
42
IDL Namensdienst
};
void bind(in Name n, in Object obj)
raises( NotFound, CannotProceed, InvalidName,
AlreadyBound );
void rebind(in Name n, in Object obj)
raises( NotFound, CannotProceed, InvalidName );
void bind_context(in Name n, in NamingContext nc)
raises( NotFound, CannotProceed, InvalidName,
AlreadyBound );
void rebind_context(in Name n, in NamingContext nc)
raises( NotFound, CannotProceed, InvalidName );
Object resolve(in Name n)
raises( NotFound, CannotProceed, InvalidName );
void unbind(in Name n)
raises( NotFound, CannotProceed, InvalidName );
NamingContext new_context();
NamingContext bind_new_context(in Name n)
raises( NotFound, AlreadyBound, CannotProceed, InvalidName );
void destroy()
raises( NotEmpty );
void list(in unsigned long how_many,
out BindingList bl, out BindingIterator bi );
};
Dr. Welf Löwe und Markus Noga
43
Erzeugen von Namen
Systemabhängiger
Name
Suche/Erzeuge
Namensraum
Erzeuge Name
Namensraum
Corba-Name
Bindung
Objekt
Suche Name
Dr. Welf Löwe und Markus Noga
44
Namensdienst: Beispiel
// Quelle: Redlich
import java.io.*;
import java.awt.*;
import IE.Iona.Orbix2.CORBA.SystemException;
import CosNaming.NamingContext;
import CosNaming.NamingContext.*;
import Calc5.calc.complex;
class MyNaming extends CosNaming {
...
}
public class client extends Frame {
private Calc5.calc.Ref calc;
private TextField inR, inI;
private Button setB, addB, multB, divB, quitB, zeroB;
try {
cxt= NamingContext._narrow( MyNaming.
resolve_initial_references(MyNaming.NameService));
public static void main(String argv[]) {
CosNaming.NamingContext.Ref cxt;
Calc5.calc_factory.Ref cf;
Frame f;
}
cf= Calc5.calc_factory._narrow(
cxt.resolve(MyNaming.mk_name("calcfac")));
f= new client(cf.create_new_calc());
f.pack();
f.show();
}
catch (Exception ex) {
System.out.println("Calc-5/Init:" + ex.toString());
}
Dr. Welf Löwe und Markus Noga
45
Naming
import java.io.*;
import IE.Iona.Orbix2.*;
import IE.Iona.Orbix2.CORBA.*;
import CosNaming.*;
public class MyNaming {
public static final String NameService = "NameService";
public static IE.Iona.Orbix2.CORBA.Object.Ref
resolve_initial_references(String id) {
ORB orb = _CORBA.Orbix;
if (id.compareTo(NameService)!=0)
return NamingContext._nil();
try {
File inputFile = new File("/tmp/coss-naming/root");
FileInputStream fis = new FileInputStream(inputFile);
DataInputStream dis = new DataInputStream(fis);
...
return orb.string_to_object(obj_ref);
} catch (Exception ex) {
System.out.println("CosNaming:Init:" + ex.toString());
}
return NamingContext._nil();
}
}
public static Name mk_name(String str) {
int last, k, i= 0;
...
return name;
}
Dr. Welf Löwe und Markus Noga
46
Objektdienste: Eigenschaftsdienst
Eigenschaften (properties) sind Strings
Dienst verwaltet Listen von Eigenschaften für Objekte
Konzept bekannt als assoziative Arrays, LISP property lists, Java
property classes
Dynamisch erweiterbar
Iteratoren für Eigenschaftswerte
PropertySetDef als verfeinerte Klasse, die den Eigenschaften mehr
semantische Bedeutung zuordnet: readonly, fixed_readonly, …
Schnittstelle: define_property, define_properties,
get_property_value, get_properties, delete_property, ...
Dr. Welf Löwe und Markus Noga
47
Objektdienste: Persistenz
Dienst
– Persistentes (Server) Objekt über IOR kennt einen Persistent Object
Identifier PID,
– Identifiziert serialisierten Zustand eines CORBA-Objektes auf dem
Speichermedium.
– Protokoll zum Abspeichern/Laden auf/von Sekundärspeicher
Operationen connect, disconnect, store, restore, delete
Anbindung von beliebigen Speicherwerkzeugen möglich
– Relationale Datenbanken
– Filesystem
Dr. Welf Löwe und Markus Noga
48
Zusammenarbeitsdienste: Ereignisse
Schnittstellen:
– PushConsumer/PushSupplier: Objekt legt Ereignis ab, Ereignis wird
automatisch ausgeliefert.
– PullSupplier/PullConsumer: Objekt wartet auf Ereignis, Synchrones und
Asynchrones Warten ist möglich.
Ereigniskanal-Objekte als mögliche Zwischeninstanzen
– puffern, vermitteln, replizieren, filtern Ereignisse
– bilden push- und pull model aufeinander ab.
Typisierung mit IDL möglich (Zugriff über separate Schnittstelle)
Vorteile:
– Asynchrones Arbeiten im Web möglich (mit IIOP und dynamischem Aufruf)
– Anbindung beliebiger Systeme: Java (einfach seit 1.2), Altsysteme ...
Nachteile:
– Schnittstelle recht allgemein,
– Unterschied typisierte, nicht typisierte Ereignisse ist ärgerlich
Dr. Welf Löwe und Markus Noga
49
Zusammenarbeitsdienste: Transaktionen
Standard-Datenbanktechnik
– Einfach: begin_ta, rollback, commit (2pc).
– Geschachtelt: begin_subtransaction, rolback_subtransaction,
commit_subtransaction
Beispiele
– Konten als Objekte. Überweisung (Abheben, Einzahlen) als
Transaktion über den Objekten mehrerer Banken.
– Paralleles Erneuern von Webseiten-Geflechten: Wie macht man sie
konsistent?
Noch nicht implementiert!
Dr. Welf Löwe und Markus Noga
50
Geschäftsprozessdienste: Lizenzen
Kommerzielle Komponenten: gekauft, gemietet, geleast, ersteigert
Abstrakte Fabrik für Lizenzmanager,
– die für beliebige Komponenten herstellerabhängige Strategien liefert.
– Beispiele: Einzelplatzlizenzen, übertragbare Lizenzen (floating licenses),
Netzwerklizenzen, Campuslizenzen, etc.
– Flexibel, über die Zeit veränderbar
– Anwendung nicht verändert.
– Feingranular
Granularität der Lizenzen:
– Lizenzen durch ORB-Anfragen bezahlt.
– kleine Komponenten Geld zu verlangen und quasi automatisch zu
bezahlen.
– Kommerzielle, private Nutzung kann automatisch unterschieden werden.
Dr. Welf Löwe und Markus Noga
51
Lizenz-Szenario
Hole Lizenzdienst
Kunde
Hole Lizenz
Liefere Lizenz
Liefere
Lizenzdienst
Cos::
License
Manager
Abstrakte Fabrik
Hersteller
abhängiger
Lizenzdienst
Konkreter Dienst
Lizenzsystem
(auch entfernt)
Herstellerstrategie
Dr. Welf Löwe und Markus Noga
52
Schnittstelle
LicenseServiceManager
– obtain_specific_license_service
SpecificLicenseService
– start_use
– check_use
– end_use
Dr. Welf Löwe und Markus Noga
53
Lizenzprotokoll
Kunde
Licence service
manager
obtain_producer_
specific_license
License
manager
Producer specific
license service
Event
service
Start_use
Initial check_use
check_use
Ask for event
Event notification (license there)
End_use
Dr. Welf Löwe und Markus Noga
54
Geschäftsprozessdienste: Makler
Makler handeln mit
Diensten (services,
service types)
Vermittlermuster
Makler
Exportiere
Funktionalität
Dienst
Importiere
Funktionalität
Interagiere
Kunde
Dr. Welf Löwe und Markus Noga
55
Wann ein Dienst gegen anderen ersetzen
(Konformität)?
gleiche Schnittstelle oder abgeleitete Schnittstelle
alle Sucheigenschaften identisch definiert
– keine Properties vom Corba Dienst Properties
alle Modi der Eigenschaften stärker oder gleich
Mandatory, readonly
Mandatory
readonly
(normal)
Dr. Welf Löwe und Markus Noga
56
Dienstangebote für Makler
Dienstangebot: Paar aus IOR und Eigenschaften
Eigenschaften
– von Maklern genutzt für Anfragen nach Diensten
– Dynamische Eigenschaften (!)
Zum Vergleich spezielle Anfragesprache (standard
constraint language)
– boolesche Ausdrücke über Eigenschaften
– numerische und Stringvergleiche
Findet ein Makler keinen passenden Dienst
– kann er einen Nachbarmakler beauftragen (Entwurfsmuster
Zuständigkeitskette, chain of responsibility).
– Dazu ist ein Graph aus Maklern aufgebaut
– Filtern beim Weitergeben der Dienstsuchanfrage
Dr. Welf Löwe und Markus Noga
57
Dienst-Hüpfen (hopping)
Makler 1
Fluß der
Eigenschaften
der Dienstanfrage
Angebote der Makler
Policies, die die Werte
der Eigenschaften der
Dienstanfrage verändern
Makler 2
Makler 4
Makler 3
Dr. Welf Löwe und Markus Noga
58
Suche nach Diensten
Parametrisierung von Maklern und Links durch sog. policies.
policies beeinflussen verschiedene Phasen von Suche und Weitergabe, z.B.
– max_search_card: Obergrenze für zu suchende Angebote
– max_match_card: Obergrenze für Rückgabe passender Angebote
– max_hop_count: Obergrenze für Suchtiefe über Makler
Mögliche
Angebote
Betrachtete
Angebote
Gefundene
Angebote
Kardinalitäten
für Matchen
Kardinalitäten
für Suche
Angebote
Mögliche
Angebote
Kardinalitäten
für Rückgabe
Dr. Welf Löwe und Markus Noga
59
Schnittstellen Makler
Schnittstellen
–
–
–
–
–
Lookup (Anfragen stellen)
Offer Iterator
Register (zum Export und Zurückziehen von Diensten)
Link (Aufbau des Maklernetzes)
Proxy (Stellvertreter-Objekte, die Makler vertreten)
• Dienst stellvertretend für einen anderen Makler angeboten
• Dient zur Kapselung von Altsystemen.
– Admin (Eigenschaften von Dienste)
Lookup.Query(
in ServiceTypeName,in Constraint, in PolicySeq,
in SpecifiedProps, in howMany,
out OfferSequence, out offerIterator
)
Dr. Welf Löwe und Markus Noga
60
Maklerarten
Lookup
Lookup
Anfragemakler
(query trader)
Lookup
Register
Sozialer Makler
(linked trader)
Link
Register
Lookup
Lookup
Register
Stellvertreter
Makler
(proxy trader)
Proxy
Admin
Selbständiger
Makler
(standalone
trader)
Einfacher Makler
(simple trader)
Admin
Register
Admin
Lookup
Register
Admin
KomplettMakler
(full-service
trader)
Link
Proxy
Dr. Welf Löwe und Markus Noga
61
I.2.2.2. Corba Anwendungsstandards
(Corba facilities)
Dr. Welf Löwe und Markus Noga
62
Literatur
Orfali, Harkey: Client-Server Programming with Java and Corba. Wiley.
Schön zu lesen. Empfehlenswert zur Prüfungsvorbereitung.
Orfali, Harkey: Instant Corba. Addison-Wesley. Nachttisch-Lektüre.
Empfehlenswert zur Prüfungsvorbereitung.
OMG: CORBAfacilities: Common Object Facilities
Specifications.http://www.omg.org/
XMI - The Value of Interchange. Dr. Stephen A. Brodsky, IBM, Vortrag
am 5.2. 1999, OMG XMI Briefing
Overview of XMI. Sridhar Iyengar, Unisys Corporation, 5.2.99, OMG XMI
Briefing,
XML Metadata Interchange (XMI) Proposal to the OMG RFP3: Streambased Model Interchange Format SMIF. OMG, 20.10.98
http://www.omg.org/
Dr. Welf Löwe und Markus Noga
63
Korrigendum
Laut Orfali, Harkey "Instant Corba" gibt es doch wesentlich
mehr Dienste, die schon von ORBs unterstützt werden.
Alle unterstüten C++, Java, IIOP, DII.
Alle unterstützen Ereignisse, Naming, Livecycle,
Transaktionen (!!), Sicherheit.
Der Rest wird lückenhaft unterstützt.
Insbesondere werden damit ORBs zu ernsthaften
Konkurrenten für Transaktionsmonitore (TP-Monitore). Die
verteilte Web-DB kommt in Sicht.
Also: happy ORBing.
Dr. Welf Löwe und Markus Noga
64
2.2. Corba Anwendungsgebiete (facilities)
Spezielle anwendungsspezifische
Komponentenrahmen/schnittstellen zur
Komponentenintegration
Dr. Welf Löwe und Markus Noga
65
2.2.1 Vertikale Anwendungsgebiete
(domain-specific facilities)
Vertikal (anwendungsorientiert)
Electronic
Commerce
Telecom
Manufacturing
Utility
Financial
Transportation
Simulation
Life Sciences
UML
MOF
Data
Warehouse
Business
Objects
Horizontal
(Plattform)
Dr. Welf Löwe und Markus Noga
66
Vertikale Anwendungsgebiete
(domain-specific facilities)
Domain Technology committee DTC ruft domain task forces DTF ins
Leben, um einen Anwendungsbereich zu spezifizieren.
Geschäftsprozessobjekte (business objects)
Finanzwirtschaft (finance/insurance)
–
Currency facility
Elektronischer Handel (electronic commerce)
Produktion (manufacturing)
–
product data management enablers PDM
Medizin (healthcare CorbaMed)
–
–
Lexocon Query Service
Person Identifier Service PIDS
Telekommunikation (telecommunications)
–
–
Audio/visual stream control object
notification service
Transport (transportation)
Manche sind schon implementiert
Dr. Welf Löwe und Markus Noga
67
2.2.2 Horizontale Anwendungsgebiete
(general facilities)
Benutzerschnittstellen
–
–
–
–
Drucken
email
Verbunddokumente: Seit 1996 OpenDoc als VerbunddokumentStandard akzeptiert. Source Code ist von IBM freigegeben worden.
Tot?
Scripting: in Corba 3.0 wird es eine Skriptsprache geben
Informationsmanagement
–
–
–
strukturierter Speicher Bento ist aufgenommen
Metadaten(meta object facility)
Datentransfer: Ein text- und strombasiertes Austauschformat wird
entwickelt (XMI)
Systemmanagment (Instrumentierung, Monitoring)
Dr. Welf Agenten)
Löwe und Markus Noga
Task management (Workflow, Regeln,
68
2.2.2.1 Metaobject Facility MOF
Problem: Wie generiere ich IDL aus einer Java-Anwendung heraus, für
die ich schon ein Datenmodell definiert habe?
Man würde gerne sagen:
for all c in classes do
generate_class_start(c);
for all a in c.attributes do
generate_attribute(a);
done;
generate_class_end(c);
done;
Dazu braucht man aber ein Typsystem, das das Java-Typsystem
beschreibt, also Klassen und Attribute anbietet
Andere ähnliche Probleme:
–
–
–

Wie generiere ich Code zum Datenaustausch zwischen C++ und Java?
Wie tausche ich Daten von OMT und UML-basierten CASE-Werkzeugen aus?
Wie binde ich andere Typsysteme als IDL in Corba ein (UML, ..)?
Wir brauchen also ein Typsystem, das IDL und andere Typsysteme
beschreibt!
Dr. Welf Löwe und Markus Noga 69
2.2.2.1 Metaobject Facility MOF
Die MOF (metaobject facility) ist das Typsystem, das Typsysteme beschreibt
Standardisiert Nov. 97
Dr. Welf Löwe und Markus Noga
70
Metadaten
Meta: (selbst-)beschreibend
Metadaten: beschreibende Daten (auch: sich selbstbeschreibende Daten)
Die Elemente der Metaebene (Metaobjekte) beschreiben die Elemente der Realität
Metamodellierung: Beschreibung der Elemente/Konzepte der Realität mit einem
Datenmodell, dem Metamodell
Metaebene
Konzeptebene
Metadaten
Realität
Daten,
Code,
Information
Dr. Welf Löwe und Markus Noga
71
Reflektion und Selbstmodifikation
Erst bei Verschmelzung des Metamodells mit dem Modell wird Reflektion möglich.
Die Anwendung kann sozusagen ihr eigenes Skelett anschauen und Schlüsse daraus
ziehen.
Manipuliert sie zusätzlich sich selbst und nutzt dabei das mit Reflektion gewonnene Wissen
aus, nennt man dies Selbstmodifikation (intercession).
Metadaten
Metaebene
Konzeptebene
Beschreiben
Daten,
Code,
Information
Realität
Dr. Welf Löwe und Markus Noga
72
Reflektion und Selbstmodifikation
Reflektion:
for all c in self.classes do
generate_class_start(c);
for all a in c.attributes do
generate_attribute(a);
done;
generate_class_end(c);
done;
Selbstmodifikation:
for all c in self.classes do
helpClass = makeClass(c.name+"help");
for all a in c.attributes do
helpClass.addAttribute(copyAttribute(a));
done;
self.addClass(helpClass);
done;
Dr. Welf Löwe und Markus Noga
73
Introspektion
Späht man das Metamodell sowie die Metadaten einer fremden Komponente aus,
um mehr über sie zu erfahren, nennt man dies Ausspähen (Introspektion)..
Die Komponente kann sozusagen das Skelett einer anderen Komponente anschauen
und Schlüsse daraus ziehen.
Typische Anwendung: Eigenschaften herausfinden, die mit Semantik behaftet sind,
Methoden, Attribute, Typen herausfinden.
Sehr wichtig im Web-Komponenten-Supermarkt!
Metadaten
Daten,
Code,
Information
Daten,
Code,
Information
Dr. Welf Löwe und Markus Noga
74
Reflektive Objektschnittstelle
CORBA unterstützt Reflektion und Introspektion schon durch die Pseudoschnittstelle
CORBA::OBJECT.
In Java existieren dazu die Klassen Object, Class, Method, etc.
Weiterhin wird das Interface Repository abgefragt werden (list_initial_references
aus der CORBA::ORB Schnittstelle).
CORBA::Object
 get_implementation
 get_interface
 is_nil
 create_request
 is_a
 duplicate
 release
 ....
 Das Corba Objekt vererbt sich als Klasse


auf alle Corba-Objekte und
Programmelemente.
Get_interface liefert eine Referenz auf den
Eintrag im interface repository.
get_implementation eine Referenz auf die
Implementierung
Dr. Welf Löwe und Markus Noga
75
Die Metaebenen von CORBA(Metahelix)
Die Elemente jeweils einer Ebene beschreiben die Elemente der nächstniederen Ebene.
Ein einfaches Metamodell einer Programmiersprache:
Metaebene
M1
Dinge
Metaobjekte
Modellart
Metamodell
M0
Programmobjekte
Modell
Beispiele
Typen der Abstrakten Syntax (AST mit
Klassen, Methoden, Anweisungen)
Das vollständige Metamodell über Typsystemen und Daten von CORBA:
Metaebene
M3
M2
M1
M0
M-1
Dinge
Metametadaten
Metadaten
Datenobjekte
Reale Objekte
Modellart
Metametamodell
Metamodell
Modell
"Reale Welt"
Reale Welt
Beispiele
MOF Modell
Typsystem (C++, IDL-System)
Typen (C++-Typ, IDL Typ)
Modellierte Systeme, Warenhaus-Datenbanken
Aktenordner, Rechnung, Kunde
Metametamodelle beschreiben beliebige Typsysteme!
Dr. Welf Löwe und Markus Noga
76
Die MOF als UML-Beschreibungsmittel
Auch die UML (unified modelling language) modelliert und kann metamodelliert werden.
Metaebene
M3
MOF Ausdrücke
Modellart
Metametamodell
M2
Metametadaten
Metamodell
M1
Metadaten
Modell
M0
Daten
Beispiele
Beschriebene Dinge (syntaktische
Elemente)
MOF Modell
Klassen, Relationen,
Pakete
UML Metamodell (als
Klassen, Relationen,
Strukturdiagramm), CWMI Zustände, UseCases,
Metamodell(e)
Aktoren
UML Modelle, Warenhaus- Dinge der Welt
Schemata
Modellierte Systeme,
Warenhaus-Datenbanken
Damit können mit Hilfe der MOF beliebige Typsysteme, Modellierungsprachen,
Programmiersprachen, u.ä. beschrieben werden. Mit Hilfe von Introspektion und Reflektion
können die Metadaten der Modelle abgefragt und bearbeitet werden.
Dr. Welf Löwe und Markus Noga
77
Das UML-Metamodell
Dr. Welf Löwe und Markus Noga
78
Die MOF als UML-Metametamodell
Dr. Welf Löwe und Markus Noga
79
Konzepte der MOF
Konzept
Class
Konzept in C++
Class
Constructor
Association inheritance
package Metadaten
exception exception
Abstract class Abstract class
Aggregation,
composition,
containment
RTTI, Java reflection
IDL
Interface
Operation
Äquivalenz von IDL und
C++-Klassen
Modell
exception
Reflexive Schnittstelle
Ein Paket kapselt ein Typsystem
Generische Funktionen, um auf Object zu
arbeiten get_value(Object attribute)
set_value(Object attributevalue)
Dr. Welf Löwe und Markus Noga
80
Beispiel Makler in MOF MODL
Package trader {
class property_type {
attribute string name;
attribute TypcCode value_type;
}
class service_type {
attribute string name;
attribute string interface_type;
}
association has {
role single service_type service;
role set [0..*] of property_type property;
}
association inherits {
role set [0..*] of service_type base;
role set [0..*] of service_type derived;
}
}
Abbildung von MODL (MOF Definition
language) auf IDL:
- attributes in set/get-Funktionen
- associations in Link-Klassen
und Link-Sequence-Klassen
- MODL generiert eine Klasse, die
spezielle Methoden enthält, mit der man
alle Klassen ansprechen kann (Methode
all_of_type)
Dr. Welf Löwe und Markus Noga
81
MOF - Zweck
Beschreibende Daten können also benutzt werden, um
Wissen über unbekannte Daten zu erlangen
in unbekannten Daten zu navigieren (Relationen sind ein
Konzept der MOF)
von unbekannten Daten aus zu generieren (z.B. IDL aus
Programmiersprachen)
Daten ineinander umzuwandeln (die Abbildung ist dann nur
noch eine Funktion im Metametamodell). Daher kann die
MOF benutzt werden, um Werkzeugaustauschformate zu
beschreiben und automatisch Umwandlungsroutinen zu
generieren.
Daten, die mit MOF-basierten Typsystemen beschrieben
sind, können automatisch in einander umgewandelt
werden, weil die Umwandlungsroutinen automatisch
Dr. Welf Löwe und Markus Noga 82
generiert werden können
Aufbau einer konkreten MOF
MOF Modell
MOF Typmanipulationsschnittstelle
MOF TypsystemManipulationsschnittstelle
TypsystemWerkzeug
(MODL)
IDL Generator
Server mit
Schnittstellenimplem.
Dr. Welf Löwe und Markus Noga
83
Die MOF als kleinster gemeinsamer Nenner
MODL
MOF
IDL
UML
IDLSpezifikation
UMLSpezifikation
DatenInstanz
Abfrage/Navigation
Umwandlungsroutinen
DatenInstanz
Dr. Welf Löwe und Markus Noga
84
Bootstrap
Natürlich kann die MOF mit der MOF durch einen Bootstrap
laufen:
–
–
Da die MOF ein Typsystem ist, kann man sie mit sich selbst
beschreiben und eine IDL für die MOF generieren
Damit kann man MOFs mithilfe von CORBA-ORBs verteilt ansprechen
(und an sich fremde Werkzeuge miteinander kommunizieren lassen)
Die MOF Beschreibungen mit XMI verschickt werden...
Dr. Welf Löwe und Markus Noga
85
Zusammenfassung MOF
Die MOF unterstützt beliebige Typsysteme
Neue Typsysteme können addiert werden, alte komponiert
oder erweitert werden
Beziehungen innerhalb und zwischen Typsystemen werden
unterstützt
Interoperabilität zwischen Typsystemen und -repositorien
Automatische Generierung von IDL
Reflektion/Introspektion unterstützt
Anwendung auf Arbeitsflüsse (workflows), Datenbanken,
Groupware, Geschäftsprozesse, data warehouses wird
untersucht
http://www.dstc.edu.au/MOF
Dr. Welf Löwe und Markus Noga
86
2.2.2.2 XMI - Das Austauschformat
XML: eXtensible Markup Language
–
–
–
–
–
–
–
–
enthält DTD-Definition (Document Type Definition, Semantikbeschreibungen
für Etiketen (tags)).
DTDs enthalten Metaobjekte, d.h. spezifizieren Metamodelle für Multimedia
Einige Ausprägungen: HTML, MathML, SpeechML, MusicML, VectorML
Ziel: erweiterbares, einfach strukturiertes Format zum Datenaustausch über
Programm- und Plattformgrenzen hinweg.
Vereinfachtes SGML (stets hierarchisch, einfachere Semantik)
Dedizierter Nachfolger von HTML
Microsoft: geplantes Datenformat für MS Office 2000.
Sun: Java = portable Programme, XML = portable Daten
XMI: Vorgeschlagener Standard für CORBA: UML in XMI, MOF-basiert
–
–
eXtended Markup language Interchange format
XMI = UML + XML + MOF
Dr. Welf Löwe und Markus Noga
87
XMI als Zwischenrepräsentation
Software
Assets
Design
Development
Tools
Database
Schema
XMI
Repositor
y
Reports
6 Brücken von 6 Herstellern
App1
App2
App6
App3
App5
App4
N*N-N = 30 Brücken.
Dr. Welf Löwe und Markus Noga
88
XMI
Zweck
–
–
–
Neutrales, offenes Austauschformat für Metadaten (sprich UML) in
verteilten Umgebungen
Spätere Erweiterung auf data warehouses geplant
Semantische Beschreibung von Diensten (jenseits von
Eigenschaften/Properties) möglich
Vorteile
–
–
–
XMI generiert jeweils eine DTD für ein Typsystem. Die Basierung auf
der MOF sichert zu, dass die DTDs ineinander übersetzt werden
können (Interoperabilität)
Kompatibel mit Web-Standards sowie StandardModellierungssprachen
Unterstützt Übertragung von Differenz-Dokumenten (diffs) sowie
Erweiterungen von Metamodellen
Dr. Welf Löwe und Markus Noga
89
U
s
e
W
3
C
E
x
t
e
n
s
i
b
l
e
M
a
r
k
u
p
Überblick XMI
UML
Instanz
UML
MOF
MetametaModell
Metadata Definitionen
& Management
UML
Metamodell
Analysis & Design
MOF
Instanz
UML
XML Austauschströme (Modelle)
X
M
I
UML 1.1
DTD
XML
Syntax
CWM
Instanz
UML
CWM
DTD
MOF 1.1
DTD
XML DTD (MetaModels)
(spezifisch pro Typsystem)
Dr. Welf Löwe und Markus Noga
90
XMI als Zwischenrepräsentation
MOF
CaseTool
UML
CaseToolDTD
CaseToolSpezifikation
CaseToolSpez.
in XML
Umwandlung durch
XML-Leser/Schreiber
Abfrage/Navigation
durch WebQL,
die XML-QL
UML-DTD
Umwandlung durch
XML-Leser/Schreiber
Darstellung mit
Style Sheets
in Brausern
UMLSpezifikation
(in UML)
UML-Spez.
In XML
(Seite)
Dr. Welf Löwe und Markus Noga
91
Bereits funktionierendes Austauschsczenario
Web
Sphere
Team
Connection
Rose
XMI
DTD
Gen
IBM
VA
Java
XMI
VisualAge
Oracle
Repository
XMI
XMI
Select
XMI
Oracle
Designer
XMI
Unisys
XMI
UREP
XMI
Rational
Rose
MOF
DTDGen
Enterprise
XMI
Select
Enterprise
Aus: S. Brodsky, OMG XMI Briefing,
Dr. Welf Löwe und Markus Noga
Feb 5, 1999
92
XMI Beispiel mit UML DTD
Da für jedes Typsystem eine DTD
generiert wird, kann auch für das MOF
eine DTD generiert werden.
Generiert wird nach speziellen
DTD-Generierungsregeln.
Ausserdem wird XML generiert (mit
XML-Generierungsregeln).
Business
Customer
id : CustId
update()
Dr. Welf Löwe und Markus Noga
93
XMI Beispiel mit UML DTD
<!-- Document Prologue, etc. -->
<Model xmi.id="a1">
<name>Business</name>
<visibility xmi.value="public"/>
<ownedElement>
<Class xmi. id="a7"><name>Customer</name>
<feature>
<Attribute><name>id</name>
<multiplicity><XMI.field>1</ XMI.field>
<XMI.field>1</XMI.field>
</multiplicity>
<type>< DataType href=”|a247"/></type> <!-- Custid -->
</Attribute>
<Operation><name>update</name>
<scope xmi.value="instance"/>
</Operation>
</feature>
</Class>
</ownedElement>
</Model>
Dr. Welf Löwe und Markus Noga
94
XMI Beispiel für Makler-Typsystem mit TraderDTD
<!DOCTYPE Trader SYSTEM "Trader.dtd">
<Trader XMI.Id="Trader_12">
<ServiceType XMI.Id="Service_1">
<BaseType.name> "Savings_Account" </BaseType.name>
<PropertyType XMI.Id="Property_1">
...
</PropertyType>
</ServiceType>
</Trader>
Trader-DTD:
<!ELEMENT Trader ((ServiceType|Inherits)*)>
<!ATTLIST Trader XMI.Id ID #IMPLIED >
<!ELEMENT ServiceType (BaseType.name, ServiceType.interface_type, (PropertyType)*)>
<!ATTLIST ServiceType XMI.Id ID #IMPLIED>
...
Dr. Welf Löwe und Markus Noga
95
XMI : Schnelle Standardisierung
12/97
SMIF (Stream based Model Interchange
Format) RFP der OMG
07/98
Erste Vorschläge XMI, CDIF, UOL
10/98
Verbesserter Vorschlag XMI
11/98
Demos
01/99
OMG akzeptiert
03/99
Erste Implementierungen
Dr. Welf Löwe und Markus Noga
96
XMI Zusammenfassung
XMI wird den Austausch von Daten, Metadaten zwischen verteilten
Werkzeugen revolutionieren
Closed systems ade!
DCOM wird nur noch als Verdrahtungsstandard eine Rolle spielen,
Corba enthält mit MOF und XMI das wesentlich flexiblere und
mächtigere Konzept, was zudem mit dem Web konform geht
MOF und XMI unterstützen beliebige erweiterbare Sprachen, sowohl
Modellierungs- als auch Programmiersprachen
–
–
der Weg ist frei für anwendungsspezifische Sprachen, die trotzdem
interoperabel sind
Entwurf kann mit der Anwendung angepassten Konzepten geschehen, und
trotzdem ist Interoperabilität garantiert.

Fixe Modellierungs- und Programmiersprachen sind tot,
es lebe die Metamodellierung!
Dr. Welf Löwe und Markus Noga
97
2.3 Corba, Web und Java
Neben den Standardisierungsbemühungen der OMG hat sich in den
letzten 5 Jahren Java und HTML/HTTP durchgesetzt.
HTTP dient nur zum Transport von Daten (CGI-Skripten-Schlamassel)
–
–
HTTP kann keine Methoden aufrufen, ausser durch CGI-GatewayFunktionalität (common gateway interface)
hinter der CGI-Schnittstelle steckt ein beliebiges Programm, mit dem von
HTTP aus - anstelle von getypten Parameterübergaben - mittels
Umgebungsvariablen kommuniziert wird (HACK!)
•
–
–
Untypisiert, nur einfache Argumente möglich (z.B. Werden Optionen in
merkwürdige Strings gepackt: arg2=xzy&arg3=kdkdkd),
http-Server sind eigentlich ORBs, Seiten entsprechen Objekten, die vermittelt
werden
Das URI/URL-Namensschema kann voll in Corba integriert werden
IIOP wird ein Standard-Internet-Protokoll.
–
Standard ports, URL-Abbildungen und Standard-Proxies für Firewalls werden
ohne Probleme verfügbar sein
CORBA ist also eine Erweiterung von HTTP von Daten auf Code
Dr. Welf Löwe und Markus Noga
98
Corba und Java
Java ist für Corba ein idealer Partner:
–
Bytecode ist mobil, d.h.
•
•
–
Seit 1999 existiert eine direkte Corba Unterstützung im JDK 1.2
•
–
sorgt als Applet dafür, dass Berechnungen auf den Kunden verschoben werden
können (thin/thick client Problem)
kann zur Migration von Objekten, ORBs und Agenten eingesetzt werden
IDL2Java Abbildung, IDL Übersetzer, Java2IDL Übersetzer, Namensdienst, ORB
Corba stellt für Java eine ergänzende verteilte Infrastruktur zur Verfügung
Java imitiert Funktionalitäten von Corba. Einfache Benutzung, aber javaspezifisch
–
–
–
Basisdienste: Remote Method Invocation RMI, Java Native code Interface JNI
Dienste: Serialisierung, Ereignisse
Anwendungsspezifische Dienste (facilities): Reflektion,
Eigenschaften/Properties von JavaBeans
Ansonsten aber komplementäre Funktionalitäten
–
–
DII: Dynamischer Aufruf mittels ORB ist flexibler als Polymorphie, die DispatchTabelle der Programmiersprache ist sozusagen ihr ORB
Gemischtsprachlichkeit. Corba-Protokolle sind
komplexer, da es nicht nur ooDr. Welf Löwe und Markus Noga 99
Programme bedient
Corba und das Web (Orblets)
ORBs können als Bytecode-Applets verschickt werden,
sofern sie nur in Java geschrieben sind (ORBlet)
Damit ergibt sich eine extrem interessante Kopplung von
HTTP und IIOP:



Herunterladen eines ORBlets mit HTTP
Ansprechen dieses ORBs, um mit dem Server Kontakt aufzunehmen
Server-ORB vermittelt Anfrage
Daher entfällt das CGI-Skripten-Schlamassel:
– HTTP kann nämlich keine Methoden aufrufen, ausser durch CGIGateway-Funktion
– hinter der CGI-Schnittstelle steckt ein beliebiges Programm, die
Kommunikation erfolgt über Umgebungsvariablen (HACK!)
Dr. Welf Löwe und Markus Noga
100
ORBlets
1) Hole Seite
Http server
2) Hole ORBlet
ORB
3) Kommuniziere mit IIOP
ORB
Server
Datenbanken
Lotus Notes
Geschäftsobjekte
Web-Client
Webserver
Dr. Welf Löwe und Markus Noga
101
Verschmelzung von CORBA und HTTP
Beides unkorreliert nebeneinander, CORBA mit IIOP auch
über TCP/IP
 Statt Java-Applets ORBlets einsetzen (mit JDK 1.2 ohne
Probleme möglich)
 CGI-CORBA-Gateway: Hinter CGI wird ein ORB
angeschlossen, der allerdings dann nur über CGI
angesprochen werden kann
 HTTP-IIOP-Gateway. Hierbei muss ein CORBA HTTPDienstanbieter die HTTP Anfragen bearbeiten. Damit
könnten die HTTP-Dienstanbieter sukzessive ersetzt
werden, um echte Interoperabilität zu erhalten

Dr. Welf Löwe und Markus Noga
102
ORBs
http://www.omg.org, Universität Wien (Wolfgang Lugmayer)
Java-basiert
–
–
–
–
–
–
IBM SOMObjects
SUN NEO, Joe: eigenes Protokoll sowie IIOP. Der Java Transaction Service
JTS ist der JOE Corba Object Transaction Service OTS.
IONA Orbixweb: In Java entwickelt, d.h. ORBlets möglich, C++, JavaAnwendungen
Visibroker (in Netscape integriert), ebenfalls IIOP basiert. Umgebung
Caffeine auf Visibroker ermöglicht es, aus Java IDL zu generieren. Damit
werden IDL Spezifikationen überflüssig.
Voyaer (ObjectSpace) (mit Mobilen Agenten)
Frei: JacORB, ILU, Jorba, DynaORB,
C-basiert
–
–
–
ACE ORB TAO, Universität Washington (Trader!9
Linux ORBIT (gnome)
Linux MICO (kde)
Python-basiert
–
fnorb
Dr. Welf Löwe und Markus Noga
103
Produkte
Jumping Beans: migrierende Beans auf der Basis von
mobilem Corba, Fehlertoleranz
Applixware
WebIntelligence (Business Objects America): OLAP
Transaktionsverarbeitung auf Webobjekten
Dr. Welf Löwe und Markus Noga
104
Corba OpenDoc
1996 wurde OpenDoc als Standard für zusammengesetzte
Dokumente angenommen
OpenDoc-Seiten sind Container von Corba-Komponenten
(shippable places)
–
–
–
Gegenüber html-Seiten bietet eine OpenDoc-Seite sie den Vorteil,
beliebig strukturiert zu sein, sowie aktive Komponenten zu enthalten
..in strukturierten Dateien ablegbar zu sein, auch verteilt
Verweise, Drag-and-drop von aktiven Seitenteilen möglich
Aus Corba-Sicht sind die Dokumente nur Objekte, die für
ihre Teile Bearbeitungsobjekte kennen
Fragen:
–
–
Integration mit HTML/XML/XMI?
Integration mit JavaBeans?
Dr. Welf Löwe und Markus Noga
105
Visionen für ein neues Komponenten-Web
Brauser ist ein Komponentendokument ist eine (OpenDoc-)Seite ist ein
shippable place
–
Brauser
•
•
–
Dokumente
•
•
–
–
–
Volle Verschiebbarkeit von Brauserfunktionalitäten: Schieben von URLs als aktive
Objekte in den Brauser und die Dokumente hinein, z.B. Als toolbars
Erweiterbarkeit durch neue Komponenten
beliebige Formen von aktiven Dokumententeilen
Volle visuelle Verschiebbarkeit von aktiven Seitenteilen, in-place editing aller Teile
Laden von Seiten entspricht dem drag-and-drop von Komponenten in
Komponenten
Einkaufen als Drag-and-drop in Container hinein
Der Desktop wird zum Brauser (als Container von aktiven verteilten Objekten)
Gamelons (www.gamelon.com) sind Containersysteme für
Komponenten (verschieben, speichern, verteilen)
Dr. Welf Löwe und Markus Noga
106
Shippable Places
Ein shippable place ist ein visuelles Ensemble von
Komponenten, der über das Netz verschickt werden kann.
(visible bean, Bohne, jar, EJB, ActiveX)
– eine Miniwelt (personalisiert als Desktop,
HTML-Seiten wearable, Autoeinstellung)
–HTMLpersistent, kommunizierend mit ORBs
HTTP
Applets
IIOP
CGI
ORB-HTTP
Server
ORB
Shippable
Places
Datenbanken
Lotus Notes
Geschäftsobjekte
Dr. Welf Löwe und Markus Noga
107
2.4 Corba 3.0 - 1999
–
–
–
–
–
–
–
–

Basisdienste:
POA, die 2. Generation von BOAs
SFA, Server Framework Adapter
Mehrfachschnittstellen (multiple interfaces) und
zusammengesetzte (komponierte) Objekte
Wertobjekte
Versionen
Services:
Message Service MOM. Objekte als asynchrone
gepufferte Botschaften
Corba Beans-Komponenten
Skriptsprache
Facilities: Zusammengesetzte Dokumente, Mobile
Agenten, BOF (business object facility)
Dr. Welf Löwe und Markus Noga
108
POA Portable Object Adapter
Der POA ist eine Weiterentwicklung der BOA Schnittstelle,
die Erfahrungen der letzten Jahre sind eingebaut. Flexibler
Geschachtelte POAs möglich, dadurch geschachtelte
Namensräume
ORB kann hinter POA ausgetauscht werden, war mit BOA
nicht möglich
Policies für Objektverwaltung: Anmeldung von
benutzergeschriebenen Instanzenmanagern möglich zur
Verwaltung von Objektinstanzen
Liste von Instanzmanagern
Liste von aktiven Dienst-Objekten
Dr. Welf Löwe und Markus Noga
109
SFA Server Framework Adapter
.. sind sprachspezifische Adapterschnittstellen für den POA.
.. vereinfachen die Benutzung eines POA
.. benutzen Spracheigenschaften wie Vererbung, um die
Anbindung an Corba so einfach wie möglich zu gestalten
Dr. Welf Löwe und Markus Noga
110
Objekt-Komposition
durch mehrere Schnittstellen pro Objekt
–
–
Mehrfachvererbung auf Schnittstellen (statisches Konzept)
Entwurfsmuster Fassade: Aggregation und Delegation können verwendet
werden, um Funktionen der Schnittstelle auf andere Objekte abzuwälzen.
Damit ist eine Schnittstelle nur eine Fassadenklassen. Konzept auch in
Request
DCOM/ActiveX realisiert
Dog
Cat
Mouse
Animal
Create
Dr. Welf Löwe und Markus Noga
111
MOM - Message Oriented Middleware
Jedes Objekt im Web soll eine Mailbox bekommen
–
–
–
–
–
Pufferung aller Nachrichten (auch strukturierte Dateien)
Nachrichten können selbst Objekte sein (Objektmigration)
Laptops, Palmtops werden unterstützt
Callback-Objekte können mit Nachrichten mitgegeben werden. Diese
werden vom Empfänger der Nachricht aufgerufen
MOA: Message Object Adapter spielt eine Rolle ähnlich zum BOA und
POA, die Vermittlung zwischen Netz und Dienstgeber
Dr. Welf Löwe und Markus Noga
112
Corbabohnen (Corba Beans)
Mehrfachschnittstellen (multiple interfaces)
Wertobjekte
Introspektion
Direkte AbbildungBOF
aufBusiness
Java Beans
Object Facility
 Geschäftsbasisobjekte (analog zu Enterprise JavaBeans) bauen auf mehreren Diensten auf (Persistenz,
Transaktionen, Ereignisse, Lizensierung)
 anwendungsspezifische alsabgeleitete Objekte
 Komponentendefinitionssprache als Erweiterung von IDL.
 Anreicherung von semantischen Eigenschaften wie Verhalten, Aussichten, Regeln, Triggern, Restriktionen
 Geschäftsobjekt-Dienst: Container, Qualitätsmerkmale (Quality of Service), Query
 Semantische Nachrichten: selbstbeschreibende Nchrichten
Dr. Welf Löwe und Markus Noga
113
2. 5. Was haben wir gelernt?
Was zeichnet Corba als Komponentensysteme aus?
Wie erfüllt Corba unsere Kriterien aus der Einleitung?
Dr. Welf Löwe und Markus Noga
114
Ziele erfüllt?
 Erhöhung Wiederverwendung
 Produktqualität
 Qualitätsverbesserung
 Effektivität durch Konzentration auf
 ja
 ja
 ?
 ja, wegen mehr Transparenz
Optimierungen
 Verlässlichkeit
 Verlängerung Lebensdauer
 Flexibilisierung
 Verbesserungen am Softwareprozess
 Produktivität
 Schneller Prototypenbau
 Simulation von Architekturen
 Dokumentation
 Klare Systemstrukturen
 ? (Sicherheit)
 ja
 ja
 jein
 ? nein
 nein
 ja
 ja
 ja
Dr. Welf Löwe und Markus Noga
115
Desiderata für flexible Systemkomposition
 Modularer Austausch von Komponenten

Geheimnisprinzig (information hiding): explizite Spezifikation von Schnittstellen (Kontakt- oder Austauschpunkte)
 Adaption von Komponenten
 Interne Adaption von Komponenten an ihren Wiederverwendungskontext

Offene Implementierung, Austausch von nicht-funktionalen Aspekten
 Externe Adaption: Generierung von Klebecode für Zusammenarbeit

Kommunikation, Synchronisation, Verteilung
 Aspekttrennung (Aspektkomposition)
 klarere Spezifikationen und trotzdem effiziente Implementierungen
 Transparenz
 Verteilung, Service-Identität, Programmiersprache, Persistenz
 Migration (Mobilität)
Dr. Welf Löwe und Markus Noga
116
Corbas Mechanismen zur Modularisierung

Schnittstellen für Gemischtsprachlichkeit




IDL wird zur Spezifikation von Schnittstellen benutzt
..und die MOF zur Spezifikation von Typsystemen incl. IDL
Schnittstellen werden im Interface Repository gespeichert und
nachgeschlagen
Standardisierung von Schnittstellen für


DII, Dienste, Anwendungsdienste
wesentliches Merkmal eines Komponentensystems
Technische vs. Anwendungsspezifische vs
Fachkomponenten: Corba bietet zwar
– Standards für technische und anwendungsspezifische Komponenten
– .. aber an Fachkomponenten-Standards muss noch viel gefeilt werden
(vertical facilities) (that´s where the money is)
Dr. Welf Löwe und Markus Noga
117
Corbas Mechanismen zur Adaptierbarkeit
IDL Generatoren werden zur Erzeugung von Kleister-Code
eingesetzt
 Object Adapter kapseln Objekte auf Dienstgeberseite


Schnittstellen BOA, POA
Objektidentität (IOR) verbirgt Implementierungsdetails der
Objekte
 Metadaten:MOF und die XMI werden eingesetzt, um
automatisch Stromformate von Werkzeugen ineinander
umzusetzen
 GIOP General Inter ORB Protocol spezifiziert einen
Rahmenprotokoll, dass die ORBs verstehen
 keine interne Adaptierbarkeit

Dr. Welf Löwe und Markus Noga
118
Mechanismen zur Aspekttrennung

Mehrere Schnittstellen pro Objekt



Mehrfachvererbung auf Schnittstellen (statisch, mit CodeWiederverwendung)
Dynamisch ab 3.0 durch Komposition, Aggregation mit Entwurfsmuster
Fassade
keine statische Aspekttrennung
Dr. Welf Löwe und Markus Noga
119
Mechanismen zur Transparenz
OMA 3-Schichtenarchitektur (3-tier architecture) mit
statischem Aufruf und dynamischem Aufruf
 Marshalling durch IDL
 IOR
 Lebendigkeit oder Nichtlebendigkeit wird verborgen durch
Objekt-Adapter
 Persistenz
 Bei MOF-basierten Typsystemen Konvertierbarkeit garantiert
 Migration durch Java und mobile Agenten

Dr. Welf Löwe und Markus Noga
120
Fazit
Die Corba-Schnittstellen sind sehr flexibel, funktionieren und können in
der Praxis eingesetzt werden
.. aber auch komplex und umfangreich, vielleicht zu flexibel für die
Praxis
Corba hat den Vorteil, ein offener Standard zu sein, DCOM kommt da
erst so langsam nach. Gegenüber DCOM wird wesentlich schon über
den Verdrahtungsstandard hinaus normiert (facilites, services)
XMI könnte ein grosser Knüller werden, ebenso OpenDoc
Freie ORBs in Linux könnten Corba schieben
Java für neue Software, Corba für gemischte Alt-Neu-Systeme
Wann kommt das Komponenten-Web? Gibt es ein Leben nach HTML?
Wann kommt Elektronischer Handel, und auf welcher Basis?
Wann können alle Corba 3.0?
Dr. Welf Löwe und Markus Noga
121
Herunterladen