Überblick über Middleware ? Client Middleware Server Middleware = womit Client und Server kommunizieren Java-RMI : CORBA : SOAP : ... Java Java , C++ , ... (alle Sprachen) XML & Java , XML & ... (Internet-)Technologien für E-Business - Prof. Dr. Stefan Böttcher – Folie 1 Heterogene verteilte Anwendungen Vorführung Bezahlung Verkauf Auslieferung Katalog 1 Katalog n Versand (Internet-)Technologien für E-Business - Prof. Dr. Stefan Böttcher – Folie 2 Internet-Technologie für E-Business Prof. Dr. Stefan Böttcher 1 Common Object Request Broker Architecture (CORBA) CORBAAnwendung Anwendungskommunikation BOA/POA Homogene Anwendungsebene C / Java / ... unter Windows / ... Implementierungsdetails verborgen CORBAAnwendung BOA/POA LapTop Client / Server C++ / Fortran / Cobol / ... unter Unix/... Unix-Rechner, Großrechner Server / Client (Internet-)Technologien für E-Business - Prof. Dr. Stefan Böttcher – Folie 3 Verteilte Anwendungen und Dienste in Corba Anwendung Teil 1 (Server/Client) Anwendung Teil 2 (Client/Server) Object Request Broker (ORB) Namensdienst (CosNaming) Transaktionen (OTS) Security (Internet-)Technologien für E-Business - Prof. Dr. Stefan Böttcher – Folie 4 Internet-Technologie für E-Business Prof. Dr. Stefan Böttcher 2 Ziele und Konzepte von CORBA Portabilität - auf andere Plattformen Interoperabilität - Plattformübergreifende Programme Objektorientierung - wie OOP, jedoch verteilt Verteilungstransparenz - entfernte Objekte über ORB Sprachtransparenz - verschiedene Sprachen integrierbar ( C, C++, Cobol, Fortran, Java, ...) Integration von Alt-Code - trennt Interface und Implementierung (Internet-)Technologien für E-Business - Prof. Dr. Stefan Böttcher – Folie 5 Begriffe aus CORBA CORBA-Objekt - besitzt eine Objektreferenz und ist dadurch lokalisierbar vom ORB, besitzt Interface, seine Methoden können aufgerufen werden Request - Aufruf einer Methode für ein Objektes incl. (ggf.) Rückgabe des Ergebnisses Client - ruft Methode für ein Objekt auf Server - Programm, in dem das Objekt lebt, das den Methodenaufruf erhält Objektreferenz - Nummer, die ein Objekt eindeutig identifiziert (Internet-)Technologien für E-Business - Prof. Dr. Stefan Böttcher – Folie 6 Internet-Technologie für E-Business Prof. Dr. Stefan Böttcher 3 Interface Definition Language (IDL) module Bank { interface Konto { readonly attribute float kontostand; float einzahlen(in float betrag); ... } } • beschreibt Dienst / Interface ( Was wird geboten ) • aus IDL werden Skeletons und Stubs für verschiedene Implementierungssprachen und Aufrufsprachen generiert (Internet-)Technologien für E-Business - Prof. Dr. Stefan Böttcher – Folie 7 Grundidee: Aufrufe über Proxies CORBA-Client bzw. RMI-Client CORBA-Server Bzw. RMI- Server Client-Aufruf: ... = Obj1.einzahlen(50); Server-Anwendung: Obj1 float einzahlen(...) {...} Client-Stub: ... .einzahlen(50); Server-Skeleton: ... .einzahlen(50); Object Request Broker (ORB) bzw. RMI-Verbindung (Internet-)Technologien für E-Business - Prof. Dr. Stefan Böttcher – Folie 8 Internet-Technologie für E-Business Prof. Dr. Stefan Böttcher 4 Rückgabewerte über Proxies CORBA-Client CORBA-Server Client-Aufruf: ... = Obj1.einzahlen(50); Server-Anwendung: Obj1 float einzahlen(...) {...} Client-Stub: ... .einzahlen(50); Server-Skeleton: ... .einzahlen(50); Object Request Broker (ORB) (Internet-)Technologien für E-Business - Prof. Dr. Stefan Böttcher – Folie 9 Objektreferenzen • identifizieren Objekt eindeutig • können null sein oder auf nicht-existente Objekte zeigen • sind typisiert • verbergen die Objekt-Lokation • unterstützen spätes Binden • können persistent sein • sind interoperabel (Internet-)Technologien für E-Business - Prof. Dr. Stefan Böttcher – Folie 10 Internet-Technologie für E-Business Prof. Dr. Stefan Böttcher 5 Web-Anbindung von Altanwendungen Web-Aufruf Browser Web-Server (http) HTML-Seite Applet Implementierungsdetails verborgen OA,Stub,... Altanwendung (Cobol, ...) OA,Skeleton,... Object Request Broker (ORB) Client CORBA-Server (Internet-)Technologien für E-Business - Prof. Dr. Stefan Böttcher – Folie 11 Interoperabilität • Jede CORBA-Implementierung unterstützt IIOP ( Internet Inter-ORB Protocol ) , d.h. sie kann IOR ( interoperable Objektreferenzen ) erzeugen (Internet-)Technologien für E-Business - Prof. Dr. Stefan Böttcher – Folie 12 Internet-Technologie für E-Business Prof. Dr. Stefan Böttcher 6 Interface Definition Language (IDL) module Bank { interface Konto { readonly attribute long kontoNummer; readonly attribute float kontostand; float einzahlen(in float betrag); ... } ... } • beschreibt Dienste / Interfaces ( Was wird geboten ) • aus IDL werden Skeletons und Stubs für verschiedene Implementierungssprachen und Aufrufsprachen generiert (Internet-)Technologien für E-Business - Prof. Dr. Stefan Böttcher – Folie 13 Java Binding (Abbildung IDL ⇒ Java) package Bank; // Java public interface Konto {} extends KontoOperations public interface KontoOperations { int kontoNummer (); float kontostand (); float abheben (float betrag); ... } module Bank { IDL interface Konto { readonly attribute long kontoNummer; readonly attribute float kontostand; float einzahlen(in float betrag); ... } ... } (Internet-)Technologien für E-Business - Prof. Dr. Stefan Böttcher – Folie 14 Internet-Technologie für E-Business Prof. Dr. Stefan Böttcher 7 idlj generiert Interfaces und Code Bank.idl interface Konto {...} benutzt BankClient einzahlen(50); BankServer ... > idlj interface Konto class _KontoImplBase interface Konto class _KontoStub class KontoImpl einzahlen(int b){...} Object Request Broker (ORB) CORBA-Client CORBA-Server (Internet-)Technologien für E-Business - Prof. Dr. Stefan Böttcher – Folie 15 Verteilte Dienste laufen lassen 3. 2. BankClient einzahlen(50); BankServer interface Konto interface Konto class _KontoStub class _KontoImplBase class KontoImpl einzahlen(int b){...} Object Request Broker (ORB) Namensdienst ( > tnameserv ) Suchen (resolve) 1. Anmelden (bind) (Internet-)Technologien für E-Business - Prof. Dr. Stefan Böttcher – Folie 16 Internet-Technologie für E-Business Prof. Dr. Stefan Böttcher 8 Abbildung IDL ⇒ Java IDL Java Bezeicher abc , new Modul module M1 { ... } ; Basistypen long , float, string interface I { ... }; Bezeicher abc , _new Paket package M1; int , float , java.lang.String public interface IOperations{ } public interface I extends IOperations, ... public int a() ; public void a(int x) ; zusätzlich public int f1(int x) throws Ex ; public void f2(FloatHolder y) ; readonly attribute long a ; attribute long a ; long f1(in long x) raises (Ex); f2(inout float y) ; Nutzung in Java: FloatHolder h = new FloatHolder(); h . value = 77 ; f2( h ) ; System.out.println( h . value ) ; (Internet-)Technologien für E-Business - Prof. Dr. Stefan Böttcher – Folie 17 Namensauflösung Serverobjekte haben Objektreferenzen (IOR) Wie findet der Client ein Serverobjekt ? • Client sucht Dienste über Namen Namensauflösung (über initial service CosNaming) heute Standard • IOR über Fremdkanal zum Client schicken (Webserver, Mail, ... ) erfordert mehrere Kommunikationswege umständlich • Bind Variante Zugriff über CosNaming wird verborgen ( z.B. Visibroker ) (Internet-)Technologien für E-Business - Prof. Dr. Stefan Böttcher – Folie 18 Internet-Technologie für E-Business Prof. Dr. Stefan Böttcher 9 Namensauflösung mit Namensdienst Namensdienst : initaler Service Client erfährt IOR bei ORB-Initialisierung Namensraum : • hierarchisch (ähnlich Unix-Dateisystem) • jeder Name wird gebunden und gesucht in einem Kontext (~Verzeichnis) • Pfadaufbau zum Namen beginnt beim Root-Kontext Server: Namen binden an (bind) und lösen von (resolve) Diensten ( Dienste (=Objekte) leben unabhängig von ihren Namen weiter ) Client: Über Namen mit Namensdienst Objektreferenz suchen (Internet-)Technologien für E-Business - Prof. Dr. Stefan Böttcher – Folie 19 Dynamisches Einbinden von Code • Interface Repository ( IR ) – speichert interfaces – kann dynamisch neue Interfaces hnzufügen • Dynamic Invocation Interface ( DII ) – erlaubt die Konstruktion von Requests für Interfaces, die zur Compilezeit noch nicht bekannt sind • Dynamic Skeleton Interface ( DSI ) – erlaubt die Behandlung von zur Compilezeit unbekannten Operationen (Internet-)Technologien für E-Business - Prof. Dr. Stefan Böttcher – Folie 20 Internet-Technologie für E-Business Prof. Dr. Stefan Böttcher 10 Überblick: ORB-Schnittstellen Server Client ORB Interface Dynamic Statische Invocation Stubs Interface ORB Interface Dynamic Statische Skeleton Skeletons Interface ORB Kern (Server) ORB Kern (Client) Netzwerk (Internet-)Technologien für E-Business - Prof. Dr. Stefan Böttcher – Folie 21 Internet-Technologie für E-Business Prof. Dr. Stefan Böttcher 11