Vs9.41 9.4 CORBA = Common Object Request Broker Architecture Standard (nicht Produkt!) der OMG – Object Management GroupObject Management.

Slides:



Advertisements
Ähnliche Präsentationen
C Sharp (C#) Martin Saternus Senior Student Partner
Advertisements

Objektorientierte Programmierung
A CORBA Domain Management Service
C ommon O bject R equest B roker A rchitecture
DVG Dateien Dateien. DVG Dateien 2 Die Klasse File Die Klasse File stellt die Verbindung zwischen dem Filesystem des Rechners und dem.
Kritische Betrachtung
PKJ 2005/1 Stefan Dissmann Vorwoche - Klasse public class Studierende { private String name, vorname, studiengang; private int matNr, semester; private.
DI Christian Donner cd (at) donners.com
Objektorientierte Programmierung
Java: Dynamische Datentypen
Indirekte Adressierung
Java: Referenzen und Zeichenketten
FH-Hof Java Packages Richard Göbel. FH-Hof Das Modulkonzept für Java Packages dienen zur Strukturierung größerer Java- Programme Ein Package kann: eigene.
Java: Grundlagen der Objektorientierung
MD 5/02 CORBA Lebensdauer von Objekten, Transaktionen.
MD 4/02 Hello World from CORBA ein erster Überblick.
Abstrakte Klassen.
Ein Beispiel in Java.
Klassenvariable. Da man für jede Kuh bzw. jede Henne auf dem Markt den gleichen Preis für ein Liter Milch, bzw. den gleichen Preis für ein Ei bekommt,
Interface bzw. Schnittstelle anschaulich: Hüllenklasse
Benötigte Applets Startseite: in HTML-Format Applet auf der Startseite Das Applet, das auf der Startseite geladen wird, wird die vier Buttons und die eine.
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 5 Polymorphismus Sommersemester 2003 Lars Bernard.
Vererbung Spezialisierung von Klassen in JAVA möglich durch
PKJ 2005/1 Stefan Dissmann Ausblick Es fehlen noch: Möglichkeiten zum Strukturieren größerer Programme Umgang mit variabler Zahl von Elementen Umgang mit.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
Zusammenfassung Vorwoche
JAVA RMI.
Remote Methode Invocation (RMI)
DVG Kommentare1 Kommentare. DVG Kommentare 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht.
DVG Interfaces. DVG mehrfache Vererbung 4 Mehrfache Vererbung ist die Ableitung einer Klassen von mehreren anderen Klassen. –farbigerPunkt.
DVG Einführung in Java1 Einführung in JAVA.
Abstrakte Klassen, Interface
DVG Klassen und Objekte
DVG Kommentare 1 Kommentare. 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht bis zum Ende der Zeile.
Java in 9 Folien Besser: Online-Buch Go to Java 2.
© 2005 Pohlig - Taulien Datenströme GK Informatik 1 Datenströme.
RelationentheorieObjektorientierte Datenbanken AIFB SS Die Objekt-Definitionssprache ODL (1/24) Alle Elemente des Objektmodells können beschrieben.
RelationentheorieObjektorientierte Datenbanken AIFB SS Das ODMG-Objektmodell vs. relationales Modell (1/9) ODMG-Objektmodell Literal_type Atomic_literal.
Klassen und Schnittstellen Klasse: Definiert Zustandsraum ihrer Instanzen vollständig (Implementierung der Struktur, soweit Voraussetzung für die Methoden-
Common Object Request Broker anhand eines Beispiels Aufgabestellung ( Ein Konto wird von einem Server verwaltet. Der Stand des Kontos wird.
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Was umfaßt die CORBA Core Spezifikation? Welche zusätzlichen Komponenten muß ein ORB Produkt beinhalten? Core: CORBA Objekt Modell CORBA Architektur OMG.
Copyright 2011 Bernd Brügge, Christian Herzog Grundlagen der Programmierung TUM Wintersemester 2011/12 Kapitel 11, Folie 1 2 Dr. Christian Herzog Technische.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Kap. 4 Der Corba-Standard zur verteilten Objektverwaltung
Welchen Problemen ist man bei heterogener, verteilter Programmierung ausgesetzt? Hardware: nicht einheitliche, inkompatible Systeme, verschiedene Leistungsfähigkeit.
Beschreiben Sie das Szenario wenn ein ORB einen Server aktiviert und eine Objektimplementation aufruft. Activate Server impl_is_ready Activate Object (GetID.
Einführung in CORBA Fachseminar Informations- und Kommunikationssysteme SS99 MartinVogt, IIIC, 8. Semester.
7.1.5 Java RMI – Remote Method Invocation
Programmiervorkurs WS 2014/15 Methoden
Voyager Eigenschaften/Vorzüge Universalität: –ROI-Modelle: CORBA, RMI, DCOM –verschiedene Namens-, Verzeichnisdienste Nachrichtentypen: synchron, oneway,
Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine.
Vs Grundzüge der Fernaufruf-Implementierung = tatsächliche Aufrufbeziehungen Netz Fernaufrufdienst Transportdienst Hardware BS aus Bibl. Vertreter.
7.2.4 Klassifikation mobilen Codes Nicht vergessen:  Sowohl das Fernkopieren als auch die Migration von Objekten setzt voraus, daß der Code entweder am.
Persistenz: Objekt-Lebensdauer In RDBMS wird Lebensdauer von Werten durch ihren Typ festgelegt: Instanzen von Relationstypen sind persistent, alle anderen.
RelationentheorieObjektorientierte Datenbanken  AIFB SS C++-ODL (1/6) Erweiterung des deklarativen Teils einer C++-Klasse Datentypen d_String,
Vs Replizierte Objekte Vollständige Replikationsabstraktion ist attraktiv und machbar. 2 Beispiele: Orca(H. Bal, VU Amsterdam, ) = klassenbasierte,
Java-Kurs Übung Besprechung der Hausaufgabe
Vs91 9 Middleware. vs92 Middleware, Verteilte Plattform (auch Verteilungsplattform*) bietet Verteilungsabstraktion für verteilte Anwendungsprogramme,
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Gerhard Gröger Einführung in die Programmierung mit Java 5. Vorlesung WS 2002/2003.
Threads in Java Threads  Sprachumfang von Java Der Java-Standard fordert nur die Unterstützung von Thread-Prioritäten. Es gibt keine Forderung bzgl.:
IT2 – WS 2005/20061Nov 14, 2005 Visibility  public: Sichtbar in allen Paketen  protected: Sichtbar innerhalb des Pakets und in den Unterklassen  (default,
NET Remoting.Net („dotnet“) :von Microsoft eingeführte Plattform für verteilte Anwendungen, virtuelle Maschine für die verteilte Ausführung von.
MD 4/02 CORBA Static/Dynamic Invocation Interface (SII/DII), Interface Repository.
Realisierung verteilter Anwendungen: Teil 3 zBeim vorigen Mal: Sockets, RMI zInhalt heute yCommon Object Request Broker Architecture (CORBA) zLernziele:
Aufbau Integrierter Informationssysteme Verteilte Objektsysteme am Beispiel von CORBA Falk Ritschel, Stefan Springer, Falko Steponat Martin-Luther-Universität.
Vs Java RMI – Remote Method Invocation ( ) (
= Common Object Request Broker Architecture
„Was du ererbt von Deinen Vätern hast, erwirb es, um es zu besitzen.“
Es gibt Klassen, die mit der Entwicklungsumgebung ausgeliefert werden
 Präsentation transkript:

vs CORBA = Common Object Request Broker Architecture Standard (nicht Produkt!) der OMG – Object Management GroupObject Management Group Architektur: objektorientiert/Fernaufrufe + Komponenten IDL:C++ -ähnlich Dienste:sehr reichhaltig Anwendungen:Dienste, insbesondere Einbinden von Altsoftware

vs Objektmodell: Schnittstellen und Objekte Schnittstelle: Menge von Operations-Signaturen, beschrieben mit CORBA IDL Objekt:  irgendwie erzeugtes Exemplar irgendeiner Implementierung in irgendeiner Programmiersprache (nicht notwendig objektorientiert) mit einer bestimmten Schnittstelle = Objekttyp,  identifiziert durch CORBA-Objektverweis (= Fernverweis, s.u.),  fernaufrufbar über diesen Verweis

vs9.43 Vererbung/Erweiterung von Schnittstellen ist möglich ! Nicht Teil des Objektmodells sind Implementierung, „Klassen“ Objekterzeugung Beachte: Das CORBA-Objektmodell ist prinzipiell unabhängig von den Objektmodellen der verwendeten Programmiersprachen – sofern diese überhaupt objektorientiert sind  beschränkte Verteilungsabstraktion !

vs Schnittstellenbeschreibung mit IDL  Entfernte Ähnlichkeit mit C++  Typsystem mit einfachen und zusammengesetzten Typen  Module bilden Namensräume, auch mit Schachtelung  Ein Modul ( module ) kann enthalten: Konstantendefinitionen Typdefinitionen Vereinbarungen von Ausnahmen (exceptions) Vereinbarungen von Schnittstellen (interfaces)

vs9.45 Typsystem: Typ Basistyp Verweistyp (basic type)(reference type) einfachzusammengesetzt Objekttyp Werttyp Objectvaluetype long struct{ fields } char [ size ] string sequence mit Vererbung (auch Mehrfachvererbung)

vs9.46 Konstantendefinitionen ( const )  benennen explizit angegebene Werte,  sind Bestandteile eines Moduls oder einer Schnittstelle Typdefinitionen ( typedef )  benennen explizit angegebene Typen, Ausnahmen ( exception )  werden wie Verbundtypen vereinbart Schnittstellen ( interface ) enhalten Konstanten, Operationen, Attribute

vs9.47 Operationen in Schnittstellen  können Wert liefern (oder auch nicht: void ),  können Ausnahmen melden ( raises ),  kennen 3 Parametermechanismen: in Wertparameter out Ergebnisparameter inout Wert/Ergebnisparameter (bei Objekttypen wird Objektverweis übergeben, bei valuetype wird Objektkopie übergeben!)  können als asynchron vereinbart werden ( oneway ), sofern ohne Ergebnis und Ausnahmen.

vs9.48 Attribute in Schnittstellen ( attribute )  können als schreibgeschützt ( readonly ) vereinbart werden,  sind äquivalent zu getter/setter-Operationen (bzw. nur getter, wenn schreibgeschützt) Semantik des Operationsaufrufs:  synchrone bzw. asynchrone Ausführung, at-most-once  Ausnahmen wie spezifiziert, zzgl. CORBA-Ausnahmen

vs9.49 // file example.idl // IDL example: no module nesting, one module only module example { typedef string Name; exception NameClash {Name clashing;}; exception Overflow {unsigned long capacity;}; interface Phones { // private phone book long lookup(in string s); void enter (in string s, in long n) raises(NameClash, Overflow); void delete(in string s); attribute long capacity; };

vs9.410 Vordefiniert ist module CORBA { interface ORB {.... // Schnittstelle eines Pseudoobjekts mit }; // objektunabhängigen Standardoperationen interface Object {.... // Standardoperationen für Objekte }; }; Qualifizierte Namen:z.B. example::Phones, CORBA::ORB Jede Schnittstelle erbt implizit von CORBA::Object, d.h. jeder Objekttyp ist verträglich mit CORBA::Object

vs Umgang mit Verweisen ist unabhängig von Programmiersprachen und deren Verweisen ! interface Object { // Operationen auf Verweisen Object duplicate(); // liefert Kopie des Objektverweises boolean is_equivalent(in Object other); // bezeichnet other dasselbe Objekt? boolean is_nil(); // bezeichnet der Verweis ein Objekt?... }; Alle diese Operationen werden lokal ausgeführt.

vs9.412 Umwandlung von Verweisen in Zeichenketten (und zurück): interface ORB { string object_to_string(in Object o); Object string_to_object(in string s);... }; Diese Zeichenketten – stringified object references - dienen lediglich als externe Repräsentation für Objektverweise. Sie sehen kryptisch aus, und man kann aus ihnen die identifizie- renden Informationen für das Objekt nicht direkt ablesen.

vs CORBA-Infrastruktur ORB (Object Request Broker): eigentliche Middleware: verteilte Laufzeitunterstützung zwischen Betriebssystem einerseits und Anwendungscode und Vertretercode andererseits, zuständig für Fernaufrufe und lokale Basisdienste ( ORB, Object ) IOR (interoperable object reference): Objektverweis in standardisiertem Format POA (portable object adapter) Verwalter der lokal vorhandenen, fernaufrufbaren Objekte Servant Implementierung eines fernaufrufbaren Objekts (z.B. ein Java-Objekt)

vs9.414 Interface Repository: verwaltet IDL-Schnittstellenbeschreibungen Implementation Repository: verwaltet zugehörige Implementierungen CORBA Services: breite Palette von Standarddiensten wie z.B. Naming Service, Notification Service, Transaction Service,... CORBA Facilities: weitere Spezifikationen, z.B. Data Interchange, Systems Management, …

vs Sprachanbindung (language mapping) definiert die Beziehungen zwischen dem CORBA-Objektmodell und Syntax und Semantik einer bestimmten Programmiersprache  setzt die Typsysteme zueinander in Beziehung,  regelt die Nachbildung nicht verfügbarer Parametermechanismen,  stellt Bibliotheksroutinen für die CORBA-Standarddienste zur Verfügung ( ORB, Object ),  stellt einen Vertreter-Generator – IDL Compiler – zur Verfügung; der Vertreter heißt stub, der Treiber heißt skeleton.

vs9.416 Vertreter-Erzeugung am Beispiel Java: > idl2java example.idl erzeugt für jedes Modul ein Java Package, hier also ein einziges Package example. Das Package umfasst die folgenden Dateien: PhonesOperations.java Schnittstelle entsprechend Phones Phones.java Schnittstelle, die PhonesOperations und org.omg.CORBA.Object zusammenfaßt PhonesStub.java Vertreter-Klasse PhonesStub PhonesHelper.java Hilfsklasse PhonesHelper (s.u.) PhonesPOA.java Treiber-Klasse PhonesPOA (für Vererbung) PhonesPOATie.java Treiber-Klasse PhonesPOATie

vs9.417 Automatische Erzeugung von IDL-Text.idl für bereits vorliegenden Server-Code ist möglich, wenn sich daraus eine Schnittstelle ableiten läßt, z.B. für eine Java-Klasse import java.rmi.*; public class PhonesImpl implements Remote {...} (nach Übersetzung) wie folgt: > rmic –idlPhonesImpl (SUN)oder > java2idl PhonesImpl (VisiBroker u.a.)

vs Programmierbeispiel in Java Schnittstelle ist example.idl (9.4.2  )9.4.2 Anbieter besteht aus eigentlichem Objekt – genannt Servant – und dem Server-Prozess, der als Träger des Objekts fungiert: // servant class import org.omg.CORBA.*; public class PhonesImpl extends PhonesPOA { // skeleton as superclass !... public int lookup(String n) {...}... } Beachte:Klassenname irrelevant, kein interface erforderlich – aber Schnittstelle muss zu example.Phones passen!

vs9.419 // server main program import org.omg.CORBA.*; // has class for CORBA::ORB (& others) import org.omg.PortableServer.*; // has interface for PortableServer::POA (& others) public class Server { public static void main(String[] arg) { PhonesImpl ph = new PhonesImpl(); // Java object..... ORB orb = ORB.init(); // initialize ORB POA poa =... // and POA..... org.omg.CORBA.Object obj = // CORBA object! poa.servant_to_reference(ph);..... // e.g., publish obj via Naming Service orb.run(); // wait for invocations } }... zuzüglich Ausnahmebehandlung

vs9.420 Klient: import org.omg.CORBA.*;..... ORB orb = ORB.init(); // initialize ORB org.omg.CORBA.Object obj =... // get CORBA object, e.g., // through Naming Service Phones p = PhonesHelper.narrow(obj); // get Java object if(p == null)... // type error int number = p.lookup("Robert"); // remote invocation zuzüglich Ausnahmebehandlung

vs Portable Object Adapter (POA) erlaubt Vielzahl unterschiedlicher Strategien zur Gestaltung der Beziehungen zwischen CORBA-Objekt, Servant und Server  Lebensdauer eines CORBA-Objekts und des implementierenden Servants sind unabhängig.  POA unterstützt persistente Objekte, deren Lebensdauer die des POA (d.h. des Server-Prozesss) übertrifft. Objekt wird aktiviert (incarnated) durch Verbindung mit einem Servant, und wird deaktiviert (etherealized) durch Lösen dieser Verbindung.  POA verwaltet seine Objekte in Objekttabelle (active object map), in der die jeweils zugehörigen Servants verzeichnet sind; für deaktivierte Objekte übernimmt ein Default Servant die Aufrufbehandlung.

vs9.422 Ferner: - Strategien sind programmgesteuert wählbar - Standard-Strategie: transiente Objekte - Persistenz wird unterstützt durch Implementation Repository und ORB Daemon, der bei Bedarf Server-Prozess startet - Weitere POA-Exemplare – z.B. mit unterschiedlichen Strategien – können programmgesteuert erzeugt werden - usw. usf.

vs Naming Service = Namensdienst mit hierarchisch strukturiertem Namensraum Context enthält - reguläre Einträge, - subcontexts module CosNaming {... typedef Sequence Name; interface NamingContext { void bind(in Name n, in Object o); void bind_context(in Name n, in NamingContext c); Object resolve(in Name n);... }; }; … zuzüglich Ausnahmen

vs9.424 Benutzung in Java: import org.omg.CosNaming.*; import org.omg.CosNaming.NamingContextPackage.*;..... org.omg.CORBA.Object obj = orb.resolve_initial_references("NameService"); NamingContext root = NamingContextHelper.narrow(obj); org.omg.CORBA.Object x = root.resolve(name);.....

vs Interoperabilität zwischen verschiedenen CORBA-Implementierungen General Inter-ORB Protocol (GIOP) (Transfersyntax + Nachrichtenformate) Internet Inter-ORB Protocol (IIOP)andere (+ Realisierung über TCP/IP) Objektbezugnahme über Interoperable Object Reference (IOR)

vs9.426 Ferner: Environment-Specific Inter-ORB Protocols (ESIOPs) statt GIOP/IIOP, falls auf bereits vorhandener Middleware aufgesetzt werden soll. Beispiel: DCE Common Inter-ORB Protocol (DCE-CIOP) ist ein ESIOP auf Basis des DCE RPC.

vs9.427 Interoperabilität RMI – CORBA durch „RMI over IIOP“ (statt über JRMP – Java Remote Method Protocol) Klient/Anbieter programmiert in Java RMI, Vertreter-Erzeugung mit rmic –iiop ClientServer CORBARMI (Java  IDL !) RMICORBA Einige Programmierunterschiede zu Java RMI: - Java Naming and Directory Interface (JNDI) statt Registry - keine verteilte Speicherbereinigung -...

vs Replikation Für Fehlertoleranz: CORBA-Spezifikation:Fault-Tolerant CORBA (OMG 2000) Implementierung: Eternal System (Moser et al ), basiert auf Totem-Protokoll für zuverlässige Gruppenkommunikation mit vollständig geordneten Rundrufen Replikationsabstraktion! Objektgruppe bleibt vor Klienten verborgen Klient verwendet IOGR genauso wie IOR Verschiedene Replikationstechniken stehen zur Auswahl

vs9.429 Für Effizienz: Keine CORBA-Spezifikation Implementierung: Cascade System (Chockler et al. 2000), realisiert Caching mit unterschiedlichen Konsistenzeigenschaften Replikationsabstraktion – wenngleich etwas eingeschränkt durch die Möglichkeit, die Konsistenz zu wählen

vs JacORB = Open Source Java ORB (Gerald Brose u.a., FU Berlin ) Buch zu CORBA mit Java: Brose, Vogel, Duddy: Java Programming with CORBA. Wiley 2001Wiley 2001