Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

DI Christian Donner cd (at) donners.com

Ähnliche Präsentationen


Präsentation zum Thema: "DI Christian Donner cd (at) donners.com"—  Präsentation transkript:

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

2 CORBA Agenda Einordnung und Bedeutung von CORBA
IDL – Interface Definition Language Funktionsweise ORB – Object Request Broker Ein praktisches Beispiel Internet Applikationen – CORBA Copyright ©2003, 2004 Christian Donner. Alle Rechte vorbehalten.

3 Einordnung 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 Internet Applikationen – CORBA Copyright ©2003, 2004 Christian Donner. Alle Rechte vorbehalten.

4 IDL 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 fest Sprachunabhä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ß. Als Stub Code bezeichnet man den Code, der am Client das Serverobjekt repräsentiert. Als Skeleton bezeichnet man das Programmskelett, das für die Serverimplementierung generiert wird. Internet Applikationen – CORBA Copyright ©2003, 2004 Christian Donner. Alle Rechte vorbehalten.

5 Funktionsweise 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 Up to CORBA 2.1, the only standard object adapter defined by the Object Management Group (OMG) is the Basic Object Adapter (BOA), which provides basic services to allow a variety of CORBA objects to be created. ORB vendors and developers, however, discovered that the BOA is ambiguous and missing some features. This led vendors develop their own proprietary extensions, which resulted in poor portability between different ORB implementations. The new standard object adapter is the Portable Object Adapter (POA), which provides new features that allow developers to construct object implementations that are portable between different ORB products supplied by different vendors. The POA acts as a mediator between the ORB and the server application. The client invokes the request using a reference that refers to the target object. The request is then received by the ORB, which will dispatch the request to the POA that hosts the target object. The POA will then dispatch the request to the servant, which subsequently carries the request and sends the results back to the POA, to the ORB, and finally to the client. Since an application may have multiple POAs, in order for the ORB to dispatch the request to the right POA, it uses an object key, which is an identifier that is part of the request that is kept in the object reference. One part of the object key called the object ID is used by the POA to determine an association (such associations might be stored in a map) between the target object and a servant. Internet Applikationen – CORBA Copyright ©2003, 2004 Christian Donner. Alle Rechte vorbehalten.

6 ORB Funktionsweise 26.03.2004 Internet Applikationen – CORBA
Copyright ©2003, 2004 Christian Donner. Alle Rechte vorbehalten.

7 Ein Verteiltes System 26.03.2004 Internet Applikationen – CORBA
Copyright ©2003, 2004 Christian Donner. Alle Rechte vorbehalten.

8 Beispiel: Hello Vienna
Ein Java Programm ruft ein C# Objekt und übergibt einen String Das C# Objekt gibt den String auf der Konsole aus Verwendete Software MiddTec’s MiddCor C# ORB Implementierung Sun Java 2 SDK 1.4 (enthält einen ORB) Visual Studio .Net Hello.idl: module MiddCorSample { interface Greetings string hello( in string a_strName); }; Internet Applikationen – CORBA Copyright ©2003, 2004 Christian Donner. Alle Rechte vorbehalten.

9 Server 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); } Starten des Servers und POA, Erzeugen einer Objektinstanz zur Beantwortung von Anfragen: class Server { static void Main(string[] args) MiddTec.CORBA.ORB oOrb = MiddTec.CORBA._ORB.init( args, null); // Get the ROOT-POA MiddTec.PortableServer.POA oRootPOA = MiddTec.PortableServer.POAHelper.narrow( oOrb.resolve_initial_references( "RootPOA" )); // Activate POA oRootPOA.the_POAManager.activate(); // Our implementation of the Greetings Interface GreetingsImpl oGreetings = new GreetingsImpl(); // Create CORBA object reference MiddTec.CORBA.Object obj = oRootPOA.servant_to_reference( oGreetings); // Write IOR-File MiddTec.CORBA._ORB.wrIORtoFile( "c:\\hello.ior", obj ); System.Console.WriteLine("Server is running ...\n" ); oOrb.run(); } Internet Applikationen – CORBA Copyright ©2003, 2004 Christian Donner. Alle Rechte vorbehalten.

10 Client idlj compiler erzeugt Stub code GreetingsClient.java
public class GreetingsClient { public static void main(String args[]) throws IOException //initialize ORB ORB orb = ORB.init(args, null); // helper method reads IOR String from a file String ior = ReadIORFile("c:\\hello.ior"); // resolve string object reference org.omg.CORBA.Object obj = orb.string_to_object(ior); // narrow down object type Greetings proxy = GreetingsHelper.narrow(obj); //invoke methods proxy.hello("Vienna"); } Die Methode ReadIORFile ist trivial und nicht aufgelistet. Exception Handling wurde zur besseren Lesbarkeit aus dem Code entfernt. Internet Applikationen – CORBA Copyright ©2003, 2004 Christian Donner. Alle Rechte vorbehalten.

11 Ausführen start orbd -ORBInitialPort 1050 -ORBInitialHost localhost
HelloSrv.exe Der Server erzeugt die Datei c:\hello.ior und wartet auf Anfragen java GreetingsClient -ORBInitialPort ORBInitialHost localhost Der 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 Inhalt von hello.ior: IOR: a c3a d706c652f e67733a312e c a e00d2042a f6f74504f412f2d4d542d2f d706c652e e d706c2f c Internet Applikationen – CORBA Copyright ©2003, 2004 Christian Donner. Alle Rechte vorbehalten.

12 Vielen Dank für Ihre Aufmerksamkeit!
Internet Applikationen – CORBA Copyright ©2003, 2004 Christian Donner. Alle Rechte vorbehalten.


Herunterladen ppt "DI Christian Donner cd (at) donners.com"

Ähnliche Präsentationen


Google-Anzeigen