1 26.03.2004 Internet Applikationen – CORBA Copyright ©2003, 2004 Christian Donner. Alle Rechte...

12
26.03.2004 Internet Applikationen – CORBA Copyright ©2003, 2004 Christian Donner. Alle Rechte vorbehalten. 1 Architektur Moderner Internet Applikationen 22.-24.4.2004 TU Wien/Ausseninstitut CORBA als Bindeglied zweier Welten JAVA und .NET DI Christian Donner cd (at) donners.com

Transcript of 1 26.03.2004 Internet Applikationen – CORBA Copyright ©2003, 2004 Christian Donner. Alle Rechte...

Page 1: 1 26.03.2004 Internet Applikationen – CORBA Copyright ©2003, 2004 Christian Donner. Alle Rechte vorbehalten. Architektur Moderner Internet Applikationen.

26.03.2004 Internet Applikationen – CORBACopyright ©2003, 2004 Christian Donner. Alle Rechte vorbehalten.

1

Architektur Moderner

Internet Applikationen

22.-24.4.2004 TU Wien/Ausseninstitut

CORBA als Bindeglied zweier WeltenJAVA und .NET

DI Christian Donnercd (at) donners.com

Page 2: 1 26.03.2004 Internet Applikationen – CORBA Copyright ©2003, 2004 Christian Donner. Alle Rechte vorbehalten. Architektur Moderner Internet Applikationen.

26.03.2004 Internet Applikationen – CORBACopyright ©2003, 2004 Christian Donner. Alle Rechte vorbehalten.

2

CORBA AgendaCORBA Agenda

Einordnung und Bedeutung von CORBA

IDL – Interface Definition Language

Funktionsweise

ORB – Object Request Broker

Ein praktisches Beispiel

Page 3: 1 26.03.2004 Internet Applikationen – CORBA Copyright ©2003, 2004 Christian Donner. Alle Rechte vorbehalten. Architektur Moderner Internet Applikationen.

26.03.2004 Internet Applikationen – CORBACopyright ©2003, 2004 Christian Donner. Alle Rechte vorbehalten.

3

Einordnung von CORBAEinordnung von CORBA

Der CORBA Standard ist unabhängig von Java und .NET und stammt aus der Mitte der 90er Jahre

Trotzdem hat es heute noch Bedeutung als Mechanismus zur Objektkommunikation zwischen verschiedenen Plattformen mit breiter Unterstützung der Hersteller (vgl. IIOP/RMI)

Im Prinzip handelt es sich bei CORBA um eine Weiterentwicklung des Remote Procedure Calls (RPC) für OO Sprachen

OMG – Object Management Group - ist ein Industriekonsortium, das die Standardisierung betreibt. Siehe www.omg.org.

Page 4: 1 26.03.2004 Internet Applikationen – CORBA Copyright ©2003, 2004 Christian Donner. Alle Rechte vorbehalten. Architektur Moderner Internet Applikationen.

26.03.2004 Internet Applikationen – CORBACopyright ©2003, 2004 Christian Donner. Alle Rechte vorbehalten.

4

IDLIDL

Wie kann man sicherstellen, daß ein Methodenaufruf über Sprach- und Maschinengrenzen hinweg verstanden wird?

Man definiert den kleinsten gemeinsamen Nenner und beginnt in der Mitte: IDL (Interface Definition Language)Legt die Methodennamen, Parameter und Typen festSprachunabhängig

Jede Plattform benötigt einen IDL Compiler, der aus der IDL Definition den Stub- und Skeleton Code generiert und die Datentypen konvertiert.

Ein ORB (Object Request Broker) kümmert sich transparent um die Lokalisierung von Objekten und den Transport der Daten.

Stub und Skeleton Code sind mit dem ORB verdrahtet, ohne daß der Programmierer sich um die Implementierung kümmern muß.

Page 5: 1 26.03.2004 Internet Applikationen – CORBA Copyright ©2003, 2004 Christian Donner. Alle Rechte vorbehalten. Architektur Moderner Internet Applikationen.

26.03.2004 Internet Applikationen – CORBACopyright ©2003, 2004 Christian Donner. Alle Rechte vorbehalten.

5

FunktionsweiseFunktionsweise

Der Client erhält letzlich vom ORB einen Objektzeiger, der wie ein lokaler Zeiger behandelt werden kann. CORBA stellt im Hintergrund sicher, daß ein Methodenaufruf an die tatsächliche Instanz weitergeleitet wird.

Wie findet der Client ORB ein angefordertes Objekt?IOR Datei (“stringisierte” Objektreferenz enthält Namen und Aufenthaltsort)JNS Directory

Java 1.4 brachte POA – Portable Object Adapter aus CORBA 2.2 Spezifikation

Page 6: 1 26.03.2004 Internet Applikationen – CORBA Copyright ©2003, 2004 Christian Donner. Alle Rechte vorbehalten. Architektur Moderner Internet Applikationen.

26.03.2004 Internet Applikationen – CORBACopyright ©2003, 2004 Christian Donner. Alle Rechte vorbehalten.

6

ORB FunktionsweiseORB Funktionsweise

Page 7: 1 26.03.2004 Internet Applikationen – CORBA Copyright ©2003, 2004 Christian Donner. Alle Rechte vorbehalten. Architektur Moderner Internet Applikationen.

26.03.2004 Internet Applikationen – CORBACopyright ©2003, 2004 Christian Donner. Alle Rechte vorbehalten.

7

Ein Verteiltes SystemEin Verteiltes System

Page 8: 1 26.03.2004 Internet Applikationen – CORBA Copyright ©2003, 2004 Christian Donner. Alle Rechte vorbehalten. Architektur Moderner Internet Applikationen.

26.03.2004 Internet Applikationen – CORBACopyright ©2003, 2004 Christian Donner. Alle Rechte vorbehalten.

8

BeispielBeispiel:: Hello Vienna Hello Vienna

Ein Java Programm ruft ein C# Objekt und übergibt einen String

Das C# Objekt gibt den String auf der Konsole aus

Verwendete SoftwareMiddTec’s MiddCor C# ORB ImplementierungSun Java 2 SDK 1.4 (enthält einen ORB)Visual Studio .Net

Hello.idl:module MiddCorSample{

interface Greetings{

string hello( in string a_strName);

};};

Page 9: 1 26.03.2004 Internet Applikationen – CORBA Copyright ©2003, 2004 Christian Donner. Alle Rechte vorbehalten. Architektur Moderner Internet Applikationen.

26.03.2004 Internet Applikationen – CORBACopyright ©2003, 2004 Christian Donner. Alle Rechte vorbehalten.

9

ServerServer

IdlToCSharp.cmd ruft MiddCorIdl –> hello.cs

HelloSrv.cs:

public class GreetingsImpl: GreetingsPOA {

public override string hello( string a_strName ) {

System.Console.WriteLine("\nFunction 'Hello', Parameter '{0}'\n", a_strName);}

}

Page 10: 1 26.03.2004 Internet Applikationen – CORBA Copyright ©2003, 2004 Christian Donner. Alle Rechte vorbehalten. Architektur Moderner Internet Applikationen.

26.03.2004 Internet Applikationen – CORBACopyright ©2003, 2004 Christian Donner. Alle Rechte vorbehalten.

10

ClientClient

idlj compiler erzeugt Stub code

GreetingsClient.java

public class GreetingsClient{ public static void main(String args[]) throws IOException {

//initialize ORBORB orb = ORB.init(args, null);

// helper method reads IOR String from a fileString ior = ReadIORFile("c:\\hello.ior");

// resolve string object referenceorg.omg.CORBA.Object obj = orb.string_to_object(ior);

// narrow down object typeGreetings proxy = GreetingsHelper.narrow(obj);

//invoke methodsproxy.hello("Vienna");

}}

Page 11: 1 26.03.2004 Internet Applikationen – CORBA Copyright ©2003, 2004 Christian Donner. Alle Rechte vorbehalten. Architektur Moderner Internet Applikationen.

26.03.2004 Internet Applikationen – CORBACopyright ©2003, 2004 Christian Donner. Alle Rechte vorbehalten.

11

AusführenAusführen

start orbd -ORBInitialPort 1050 -ORBInitialHost localhost

HelloSrv.exeDer Server erzeugt die Datei c:\hello.ior und wartet auf Anfragen

java GreetingsClient -ORBInitialPort 1050 -ORBInitialHost localhostDer Client liest die Datei c:\hello.ior Die Objektreferenz wird korrekt aufgelöst, der Sun ORB findet den MiddTec ORB und der Server gibt den String aus

Page 12: 1 26.03.2004 Internet Applikationen – CORBA Copyright ©2003, 2004 Christian Donner. Alle Rechte vorbehalten. Architektur Moderner Internet Applikationen.

26.03.2004 Internet Applikationen – CORBACopyright ©2003, 2004 Christian Donner. Alle Rechte vorbehalten.

12

Vielen Dank für Ihre Aufmerksamkeit!