Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Prof. Dr. Andreas Schmietendorf

Ähnliche Präsentationen


Präsentation zum Thema: "Prof. Dr. Andreas Schmietendorf"—  Präsentation transkript:

1 Prof. Dr. Andreas Schmietendorf
Programmierung von Client/Server-Anwendungen Verwendung allgemeiner Middlewareansätze WS06/07 Prof. Dr. Andreas Schmietendorf

2 RPC – Remote Procedure Call
WS06/07 Prof. Dr. Andreas Schmietendorf

3 Prof. Dr. Andreas Schmietendorf
Überblick zum RPC Entwickler nutzt selbes Paradigma für die Kommunikation auf unterschiedlichen Rechnern wie beim lokalen Prozeduraufruf Entwickler spezifiziert die Eigenschaften der Prozedurschnittstelle und implementiert die Komponenten der Anwendung Der notwendige Programmcode für die Realisierung der zur Kommunikation notwendigen Prozesse wird automatisch generiert. Wichtigste RPC-Implementierungen: SUN Microsystems RPC des DCE (Distributed Computing Enviroment) der OSF WS06/07 Prof. Dr. Andreas Schmietendorf

4 Ablauf der Entwicklung
Spezifikation der über den RPC-Mechanismus aufzurufenden Prozeduren (vgl. C-Header-Dateien) Ausprogrammierung von Client- und Server-Komponenten Client enthält Aufrufe der zuvor spezifizierten Prozeduren Server besteht aus Implementierungen der spezifizierten Prozeduren Programmgenerator (z.B. rpcgen) erzeugt aus der Spezifikation: Client-Stubs Server-Stubs Client, Server sowie die Stub-Komponenten übersetzen und binden Start des Servers und danach des Clients WS06/07 Prof. Dr. Andreas Schmietendorf

5 Ablauf der Kommunikation 1
Aufruf der spezifizierten Prozeduren durch den Client Aktivieren einer gleichnamigen Prozedur des Client-Stubs Läuft auf dem gleichen Rechner ab wie der der Client selbst Client-Stub konvertiert die Eingabeparameter (Marshalling) Plattformunabhängiges Datenformat Versenden der Daten inkl. weiterer Angaben (Kennung) über das Netz Empfang der Nachricht des Client-Stubs vom Server-Stub Umwandlung der Eingabeparameter in das lokale Format (Unmarshalling) Aufruf der entsprechenden Prozedur auf der Serverseite WS06/07 Prof. Dr. Andreas Schmietendorf

6 Ablauf der Kommunikation 2
Ausführen der entsprechenden Prozedur auf der Server-Seite Rückkehr zum Server-Stub Aufgaben des Server-Stub Umwandlung der Ausgabeparameter und Rückgabewert Rücksenden des Ergebnisses an den Client Client-Stub nimmt die Antwort entgegen Umwandlung der Ausgabeparameter und Rückgabewert in das lokale Datenformat Rückkehr zum Aufrufer auf der Client-Seite WS06/07 Prof. Dr. Andreas Schmietendorf

7 Prof. Dr. Andreas Schmietendorf
CORBA WS06/07 Prof. Dr. Andreas Schmietendorf

8 OMG – Object Management Group
700 Unternehmen weltweit Ziel: Steigerung der Produktivität der SW-Entwicklung Definierte Standards für interoperable und unabhängig voneinander entwickelbare Applikationskomponenten Ergebnis der OMG: OMA/CORBA OMA - Object-Management-Architecture (Referenzarchitektur für verteilte heterogene objektorientierte Systeme) CORBA Standard für die Interaktion von Kompoenten in vernetzten heterogenen Systemen Ausnahme: Microsoft plaziert DCOM als konkurrierenden Objektbus. (Distributet Component Object Model) WS06/07 Prof. Dr. Andreas Schmietendorf

9 Prof. Dr. Andreas Schmietendorf
CORBA-Merkmale Kern ist der Object Request Broker (ORB) Möglichkeit der Realisierung mehrstufiger C/S-Architekturen Unabhängigkeit von Implementierungssprache und System Interoperabilität zwischen heterogenen Systemen Verfügbar auf gängigen Betriebssystemen (UNIX, NT, MVS,...) Quasi Standard für ORB-Architekturen (Ausnahme DCOM) Nach Festlegung der Schnittstellendefinition können Aufgaben zu einem Informationssystem verteilt, d.h. strukturiert werden Server-Objekte residieren im Netzwerk, Kommunikation erfolgt über GIOP/IIOP (letzteres im Falle von TCP/IP) Angebot an CORBA-Services und CORBA-Facilities WS06/07 Prof. Dr. Andreas Schmietendorf

10 Verteilte Informationssysteme
Was ist ein ORB: Kern des Object Request Broker (ORB) ist der Objectbus Objekte können transparent mit anderen Objekten interagieren Satz von Middleware-Diensten CORBA 2.0 Inter-ORB-Kommunikation (Güte abhängig von der Implementierung!) WS06/07 Prof. Dr. Andreas Schmietendorf

11 Verteilte Informationssysteme
Vorzüge CORBA [nach Orfali 1998]: Statische und dynamische Methodenaufrufe Verknüpfung auf Hochsprachenebene Selbstbeschreibendes System (Meta-Daten zur Laufzeit) Ortstransparenz (ORB-Implementierungen lokal und verteilt) Eingebaute Sicherheit von Transaktionen Polymorphe Nachrichten (vgl. Polymorphie der Objektorientierung) Koexistenz mit existierenden Systemen RPC vs. CORBA RPC - Aufruf einer spezifischen Funktion CORBA - Aufruf einer Methode innerhalb einer konkreten Instanz WS06/07 Prof. Dr. Andreas Schmietendorf

12 Prof. Dr. Andreas Schmietendorf
CORBA-Architektur WS06/07 Prof. Dr. Andreas Schmietendorf

13 Verteilte Informationssysteme
Bestandteile des ORB: Dynamic Invocation - Genormte Schnittstelle zur generischen Requesterzeugung Client IDL Stub - Generierter Code aus dem IDL-Compiler ORB-Interface - Abstrahierte Schnittstelle zum ORB Core (IIOP) Static Skeleton - Generierter Code aus dem IDL-Compiler Dynamic Skeleton - Genormte Schnittstelle zum Request-Empfang Object-Adapter - Trennt die Objectimplementation vom ORB, soll Objekte aktivieren und deaktivieren sowie Request dispatchen ORB-Core - Verteilte Komponenten zwischen Client und Server WS06/07 Prof. Dr. Andreas Schmietendorf

14 Verteilte Informationssysteme
Schritte zur CORBA-Entwicklung/Ausführung: Objektorientierte Modellierung (Identifizierung Server-Klassen) Schnittstellenspezifikation der festgestellten Klassen in IDL File *.idl mittels IDL-Compiler für Zielsprache Übersetzen z.B. Java-Client d.h. IDL-Compiler für Java notwendig z.B. C++ Server d.h. IDL-Compiler für C++ notwendig Stub- (Client) und Skelleton- (Server) Klassen werden generiert Implementierung eines CORBA- und des fachlichen -Servers Implementierung der Client-Anwendung Installation von Client und Server-Anwendungen Start des ORB, des Servers und der Client-Anwendung WS06/07 Prof. Dr. Andreas Schmietendorf

15 Verteilte Informationssysteme
IDL-Compiler: WS06/07 Prof. Dr. Andreas Schmietendorf

16 Verteilte Informationssysteme
Sprachanbindung CORBA-IDL (Teilmenge von C++): Spezifikation der potentiellen Schnittstelle als erster Schritt einer CORBA-Entwicklung, „Vertrag“ zwischen Client- und Server-Implementierung CORBA-IDL ist rein deklarativ und enthält keine Implementierungsdetails CORBA-IDL definiert unterschiedliche Objekttypen, indem notwendige Methoden, deren Parameter (inkl. Transportrichtung) beschrieben werden IDL spezifizierte Methoden sind in vielen Sprachen verfügbar (Bsp.: C, C++, Cobol, Java, Smalltalk, Ada IDL stellt betriebssystem- und sprachunabhängige Schnittstellen für alle Dienste/Schnittstellen die auf den CORBA-Bus verfügbar sind zur Verfügung Verteilte Dienste (z.B. Ermittlung der aktiven Objekte im Netzwerk und welche Methoden verfügbar) WS06/07 Prof. Dr. Andreas Schmietendorf

17 Verteilte Informationssysteme
CORBA-IDL im Detail: Einfache Datentypen: long, short, unsigned long, unsigned short, float, double, char, boolean, octet und any (für jeden Wert), Komplexe Datentypen: struct, union, enum, array, string und sequence Ausnahmen/Unterschiede zu C/C++: octet: unsigned char (in C,C++), boolean: unsigned char, long double: twice a double, any: "typedef struct any { TypeCode _type; void *_value; } any;" in C und "class Any { ...; };" in C++. WS06/07 Prof. Dr. Andreas Schmietendorf

18 Verteilte Informationssysteme
Operationen der IDL-Datei: Syntax <op_type_sepc> <identifier> (param1,...); <op_type_sepc> Definition des Returnwertes der Methoden, auch „void“ ist möglich <identifier> Name der Methode param1: in, out, inout <param_type> <identifier> in - Parameter vom Client zum Server out - Parameter vom Server zum Client inout - Parameter vom Client zum Server und zurück param_type - Typ des Parameters identifier - Parmetername string ma_anzeigen(in string pers_ID); WS06/07 Prof. Dr. Andreas Schmietendorf

19 Verteilte Informationssysteme
Attribute der IDL-Datei: Syntax [readonly] attribte <attr_type> <identifier> Attribute werden mit Datentyp und Attributename definiert. Der IDL-Compiler erzeugt daraus entsprechenden set/get-Methoden. Wird das Schlüsselwort readonly angegeben werden nur get-Methoden erzeugt. Bei Attributen können keine Fehler über Exceptions abgefangen werden. Nach Möglichkeit sollte auf die Definition von Attribten verzichtet werden, da so zu viele Instanzen erzeugt werden und die Performance davon verschlechtert wird. WS06/07 Prof. Dr. Andreas Schmietendorf

20 Verteilte Informationssysteme
Beispiel einer einfachen IDL-Datei: module objectbench{ interface customer { // Attribute attribute string name; attribute long key; // Operationen //keine Methode definiert }; interface customer_easy : customer { ... }; interface customer_complex : customer_easy { ... }; interface warehouse { attribute string warehouse_name; // Methode für die Erzeugung einfacher Customer-Objekte customer_easy new_customer_easy(in string name,in long key,in boolean hash); WS06/07 Prof. Dr. Andreas Schmietendorf

21 Verteilte Informationssysteme
Initialisierungsdienst von CORBA: WS06/07 Prof. Dr. Andreas Schmietendorf

22 Verteilte Informationssysteme
Objekt-Referenz (IOR - Interoperable Object References): Information um Objekte durch den ORB zu lokalisieren. Bestandteile einer Objekt-Referenz Repository-ID Hostname (IP-Adresse oder DNS-Name) Portnummer Objekt-key ab Version 2.2 wird der Objekt-key durch POAID und ObjectID Ein CORBA-Client verwendet nur die ersten 3 Bestandteile, so daß die Änderungen ab Version 2.2 keine direkte Auswirkung haben. Praktische Realisierung: OSAgent beim Visibroker (Problem der Anwendung in großen Installationen/Netzwerken) WS06/07 Prof. Dr. Andreas Schmietendorf

23 Verteilte Informationssysteme
Request: Ein Request enthält die folgenden Informationen Zielobjekt (Objekt-Referenz) Operations-Name Parameter Optional - Requestkontext Parameter werden auf Strukturen gemappt, welche wiederum in CORBA-IDL definiert, das GIOP beschreiben. Das abstrakte GIOP kann über jedes verbindungsorientierte Transportprotokoll transportiert werden, wie z.B. im Falle von TCP/IP das IIOP Die Reply enthält die OUT-Parameter bzw. Exceptions WS06/07 Prof. Dr. Andreas Schmietendorf

24 Verteilte Informationssysteme
Synchronisations-Mechanismen (CORBA 2.x): Synchronous, nach einem Methoden-Aufruf ist der Client solange blockiert bis ein Ergebnis bzw. eine Exception zurückgegeben wird. (Standard-Einstellung) Defferred Synchronous, sofern das „Dynamic Invocation Interface genutzt wird kann auch ein verzögertes synchrones Verhalten erzeugt werden. (es besteht keine Möglichkeit der Transaktionssicherung) Asynchronous, nach Aufruf der entfernten Methode wird die Verarbeitung beim Client sofort fortgesetzt. Dafür muß die Operation mit dem Schlüsselwort „oneway“ ausgestattet werden. WS06/07 Prof. Dr. Andreas Schmietendorf

25 Verteilte Informationssysteme
Aufgabenstellung: Auf einem Server sollen zentral Daten gespeichert werden, speziell eine Personal-ID sowie ein dazugehörender Name. Entwicklung einer CORBA-IDL welche entsprechende Methoden für die Kommunikation zwischen Client und Server spezifiziert. Der CORBA-Server sowie die fachliche Server-Anwendung sollen ebenfalls in Java implementiert werden Über einen Java-Applet-Client sollen die Daten eingegeben und abgespeichert werden, bzw. nach Eingabe einer Personal-ID der entsprechende Name ausgegeben werden. Es sind Problembereiche einer CORBA-Kommunikation bei Java-Web-Anwendungen aufzeigen. WS06/07 Prof. Dr. Andreas Schmietendorf

26 Verteilte Informationssysteme
Beispiel einer einfachen CORBA-IDL: module swt { // (C) 1998 Andreas Schmietendorf interface Mitarbeiter { // Attributes attribute string name; attribute string pers_ID; // Operations void ma_erfassen(in string name, in string pers_ID); string ma_anzeigen(in string pers_ID); }; WS06/07 Prof. Dr. Andreas Schmietendorf

27 Verteilte Informationssysteme
Ergebnisse der IDL-Compilierung (Visibroker): Aufruf des IDL-Compilers: idl2java *.idl Generierte Klassen für die Server-Seite: swt._MitarbeiterImplBase.class (Verbund Java und Corba-Objektmodell) swt._example_Mitarbeiter.class (Code-Rahmen fachl. Server-Funktionen) swt.Mitarbeiter.class (Abbildung auf Java-Interface) swt._sk_Mitarbeiter.class (Skeleton/Proxy für Mitarbeiter-Objekt) Generierte Klassen Client-Seite: swt.MitarbeiterHelper.class (Hilfsfunktionen zur Auflösung von Objektref.) swt.MitarbeiterHolder.class (Übergabe/-nahme von in/out-Parametern) swt._st_Mitarbeiter.class (Stub/Proxy für das Mitarbeiter-Objekt) swt._tie_Mitarbeiter.class (Delegation von Operationsaufrufen) WS06/07 Prof. Dr. Andreas Schmietendorf

28 Verteilte Informationssysteme
Schritte zur Implementierung Entwicklung eines CORBA-Servers (MitarbeiterServer.class) Initialisierung des ORB und BOA (Basic Object Adapter) Erzeugen eines Mitarbeiter-Objekt und Export zum ORB Umbenennen_example_Mitarbeiter.class nach MitarbeiterImpl Fachliche Funktion über Ein-/Ausgaben auf Hashtabelle, eventl. Nutzung von Standard SET/GET-Funktionen für Attribute Implementierung eines Applet MitApplet.class, abgeleitet von Applet Grafisches Layout realisieren (Eingabefelder, Buttons, Informationen...) Eingaben verarbeiten (Plausibilitäts-Prüfungen) Ereignisse der Eingabe-Felder bzw. Buttons verarbeiten Verwendung von „remote“ Methoden via CORBA WS06/07 Prof. Dr. Andreas Schmietendorf

29 Verteilte Informationssysteme
Implementierung des CORBA-Servers package swt; // MitarbeiterServer.java: Mitarbeiter-Server Hauptprogramm class MitarbeiterServer { static public void main(String[] args) { try { // Initialize the ORB org.omg.CORBA.ORB orb = org.omg.CORBA.ORB.init(args, null); // Initialize the BOA org.omg.CORBA.BOA boa = orb.BOA_init(); // Create the Mitarbeiter object MitarbeiterImpl mitarbeiter = new MitarbeiterImpl("My Mitarbeiter"); // Export to the ORB the newly created object boa.obj_is_ready(mitarbeiter); // Ready to service requests boa.impl_is_ready(); } catch(org.omg.CORBA.SystemException e) { System.err.println(e); }}} WS06/07 Prof. Dr. Andreas Schmietendorf

30 Verteilte Informationssysteme
Implementierung der fachlichen Server-Funktionen public class MitarbeiterImpl extends swt._MitarbeiterImplBase { /** Variablen bzw. Object-Vereinbarungen */ private Hashtable mittab = new Hashtable(); ... public MitarbeiterImpl(java.lang.String name) { super(name);} /** Construct a transient object. */ /** Erfassen von Name und Personal-ID in einer Hashtabelle */ public void ma_erfassen(java.lang.String name, pers_ID) {mittab.put(pers_ID,name);} /** Auslesen des Namen zu einer Personal-ID aus der Hashtabelle */ public java.lang.String ma_anzeigen(java.lang.String pers_ID) {name= (String) mittab.get(pers_ID);return name;} WS06/07 Prof. Dr. Andreas Schmietendorf

31 Verteilte Informationssysteme
Implementierung der Applet-Anwendung 1 import java.awt.*; ... public class MitApplet extends Applet { TextField textField2 = new TextField(); Button button1 = new Button(); //Das Applet initialisieren public void init(){ System.out.println("Initializing the ORB"); org.omg.CORBA.ORB orb = org.omg.CORBA.ORB.init(this, null); // Binden des Mitarbeiter Object System.out.println("Binding to Mitarbeiter Object"); mitarb = swt.MitarbeiterHelper.bind(orb, "My Mitarbeiter"); try { jbInit(); } catch (Exception e) { e.printStackTrace(); } } WS06/07 Prof. Dr. Andreas Schmietendorf

32 Verteilte Informationssysteme
Implementierung der Applet-Anwendung 2 ... //Initialisierung der Komponente public void jbInit() throws Exception{ button1.setLabel("Mitarbeiter einfügen"); label1.setText("Personal ID"); button1.addActionListener(new MitApplet_button1_actionAdapter(this)); //Event des Mitarbeiter-Einfügen-Button auswerten void button1_actionPerformed(ActionEvent e){ String na = textField2.getText(); String id = textField1.getText(); mitarb.ma_erfassen(na,id);} void button2_actionPerformed(ActionEvent e){ String na = mitarb.ma_anzeigen(id); textField2.setText(na);} WS06/07 Prof. Dr. Andreas Schmietendorf

33 Verteilte Informationssysteme
Implementierung der HTML-Webseite <HTML> <TITLE> HTML-Testseite </TITLE> <BODY> MitApplet erscheint in einem Java-fähigen Browser.<BR> <APPLET CODE = swt.MitApplet.class WIDTH = 400 HEIGHT = 300 HSPACE = 0 VSPACE = 0 ALIGN = Middle > <param name=org.omg.CORBA.ORBClass value=com.visigenic.vbroker.orb.ORB> </APPLET> < /BODY></HTML> WS06/07 Prof. Dr. Andreas Schmietendorf

34 Verteilte Informationssysteme
Test/Ausführung der kompletten Anwendung: Sämliche Java-Quellcodedateien (*.java) müssen in Java-Bytecode (*.class) übersetzt werden. Laufender TCP/IP Protokollstack Grundlage für IIOP Konfiguration des Gatekeeper falls der Test über das Netz erfolgt, andernfalls genügen die Standard-Einstellungen Start eines ORB-Agent (Visibroker Smart Agent) auf einer oder mehrerer Maschinen im Netz (Redundanz) Start des Gatekeepers als Firewall (wenn Java-Applet) Start der Server-Anwendung (MitarbeiterServer.class) Start des Applet MitApplet.class im Browser bzw. Applet-Viewer im Rahmen einer HTML-Datei WS06/07 Prof. Dr. Andreas Schmietendorf

35 Verteilte Informationssysteme
Funktionalität des Gatekeeper (Visibroker): Java Sandbox-Security, Java-Applets dürfen nur mit dem Server kommunizieren, von welchem sie geladen wurde.. Beeinträchtigt die Skalierbarkeit der Anwendung Ermöglicht keine dynamische Lastverteilung Lösung beim Visibroker durch den Einsatz des Gatekeepers Proxy-Objekt für die Entgegennahme von Client-Anforderungen die nicht lokal bedient werden können Beim Start des Gatekeepers wird eine gatekeeper.ior Datei geschrieben, diese muß zwingend im gleichen Verzeichnis stehen wie die HTML-Datei mit dem entsprechenden Applet-Tag Abspeicherung der Einstellungen unter gatekeeper.properties WS06/07 Prof. Dr. Andreas Schmietendorf

36 Verteilte Informationssysteme
Konfigurations-Dialog des Gatekeeper: Einstellungen: IP-Adressen (IN/OUT) Port-Adressen (IN/OUT) HTTP-Unterstützung Callback-Service Location-Services Socket-Security-Layer Verzeichnis für *.ior Logging-Level ... WS06/07 Prof. Dr. Andreas Schmietendorf

37 Verteilte Informationssysteme
Aussehen der Applikationen (Client und Server): WS06/07 Prof. Dr. Andreas Schmietendorf

38 Verteilte Informationssysteme
Problembereiche 1: Konfiguration der Laufzeitumgebung, wobei insbesondere die Angabe- von Path bzw. Classpath-Anweisungen zu beachten sind Test von verteilten Applikationen, zum Test der Server-Komponente wird immer eine Client-Komponente benötigt die alle angebotenen Interfaces abtesten kann Verwendung der jeweils richtigen JDK/VM-Version, nur wenige Browser verfügen überhaupt über CORBA-Komponenten Beachtung der Ladezeiten für die CORBA-Umgebung zum Client beim ersten Aufruf. Inter-ORB-Kommunikation (Namen-Konventionen teilweise unterschiedlich) WS06/07 Prof. Dr. Andreas Schmietendorf

39 Verteilte Informationssysteme
Problembereiche 2: Fehler im Design der IDL können in der Implementierung nicht mehr beseitigt werden Keine Möglichkeiten der QoS-Vereinbarungen im Rahmen der IDL-Definitionen Ungenügende Toolunterstützung für die Modellierung einer CORBA-Anwendung. (Rational Rose kann IDL generieren, diese ist aber nicht direkt verwendbar durch einen IDL-Compiler) Tranparenz der generierten Dateien geht verloren, daraus ergeben sich Probleme bei der Fehlersuche bzw. Debugging Derzeit sind keine Design-Richtlinien für CORBA-Schnittstellen vorhanden, welche z.B. Performance-Aspekte berücksichtigen WS06/07 Prof. Dr. Andreas Schmietendorf

40 Verteilte Informationssysteme
Ausblick CORBA Version 3.0: Message Oriented Middleware (MOM) >> Zielstellung u.a. QoS Erweiterung der derzeitigen Synchronisationsmechanismen Erlaubt Clients nicht-blockierende Anfragen (Prozeß bzw. Thread) Erlaubt Clients- und Servern zu unterschiedlichen Zeiten zu laufen Unterstützung von „Normaden-Clients“ über zeitunabhängige Warteschlagen Warteschlangen zur Message-Aufnahme können persistent oder transient sein Server Portablity Zielstellung portabler Server-Implementierungen Ablösung des BOA durch den POA (Portable Object Adapter) WS06/07 Prof. Dr. Andreas Schmietendorf

41 Verteilte Informationssysteme
Ausblick CORBA Version 3.0: Business Objects Framework (BOF) Java Bindings Pass-by-Value Mobile Agents CORBA/DCOM Interoperability  Erweiterungen haben nur eine geringe industrielle Durchdringung erreicht WS06/07 Prof. Dr. Andreas Schmietendorf

42 Prof. Dr. Andreas Schmietendorf
RMI WS06/07 Prof. Dr. Andreas Schmietendorf

43 Prof. Dr. Andreas Schmietendorf
Ziele von Java RMI Kommunikation mit entfernten Java-Objekten soll so erscheinen als ob diese lokal vorhanden wären (zusätzliche Exceptions) Nahtloses Einbinden von Objekten aus verschiedenen Java-Umgebungen Verteiltes Objektmodell (Java Distributet Object Model DOM) Einfaches Entwerfen verteilter Applikationen Übernehmen der Sicherheitsmechanismen durch das DOM sowie Berücksichtigung der „garbage Collection“ aller Objekte Rückruf vom Server zum Applet ermöglichen WS06/07 Prof. Dr. Andreas Schmietendorf

44 Prof. Dr. Andreas Schmietendorf
RMI Architektur WS06/07 Prof. Dr. Andreas Schmietendorf

45 Stärken/Schwächen von RMI
Hoher Abstraktionsgrad, Transparenz für den Entwickler RMI ist nahtlos in Java integriert RMI relativ einfach zu verwenden (keine Zusatzprodukte) Dynamisches Laden von Stub/Skeletons möglich (dyn. Referenzen) Weniger Overhead gegenüber CORBA (ggf. leicht performanter) Client und Server müssen in Java implementiert werden Keine automatische Aktivierung von Servern möglich Keine Kommunikationssicherheit WS06/07 Prof. Dr. Andreas Schmietendorf


Herunterladen ppt "Prof. Dr. Andreas Schmietendorf"

Ähnliche Präsentationen


Google-Anzeigen