• Keine Ergebnisse gefunden

Zu meiner Person

N/A
N/A
Protected

Academic year: 2022

Aktie "Zu meiner Person"

Copied!
458
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Roland Wism ¨uller

Betriebssysteme / verteilte Systeme rolanda.dwismuellera@duni-siegena.dde Tel.: 0271/740-4050, B ¨uro: H-B 8404

Client/Server-Programmierung

WS 2019/2020

(2)

Client/Server-Programmierung

WS 2019/2020

0 Organisation

(3)

Zu meiner Person

➥ Studium der Informatik an der Techn. Univ. M ¨unchen

dort 1994 promoviert, 2001 habilitiert

➥ Seit Apr. 2004 Prof. f ¨ur Betriebssysteme und verteilte Systeme an der Univ. Siegen

Forschung: Beobachtung, Analyse und Steuerung paralleler und verteilter Systeme; Sichere Komponentensysteme

Mentor f ¨ur die Bachelor–Studieng ¨ange Informatik mit Nebenfach/Vertiefung Mathematik

e-mail: rolanda.dwismuellera@duni-siegena.dde

Tel.: 0271/740-4050

B ¨uro: H-B 8404

(4)

Zur Fachgruppe

Betriebssysteme / verteilte Systeme“

Andreas Hoffmann

andreas.hoffmann@uni-...

0271/740-4047 H-B 8405

El. Pr ¨ufungs- und ¨Ubungssysteme

IT-Sicherheit

Web-Technologien

Mobile Anwendungen

Damian Ludwig

damian.ludwig@uni-...

0271/740-2533 H-B 8402

Capability-Systeme

Compiler

Programmiersprachen

Hawzhin Hozhabr Pour

hawzhin.hozhabrpour@uni-...

0271/740-4038

Machine Learning

Mustererkennung in Fahrzeug- Sensordaten

Anomaliedetektion

(5)

Lehrangebot

Vorlesungen/Praktika

➥ Rechnernetze I, 5 LP (jedes SoSe)

➥ Rechnernetze Praktikum, 5 LP (jedes WiSe)

➥ Rechnernetze II, 5 LP (jedes SoSe)

➥ Betriebssysteme I, 5 LP (jedes WiSe)

➥ Parallelverarbeitung, 5 LP (jedes WiSe)

➥ Verteilte Systeme, 5 LP (jedes SoSe)

➥ Client/Server-Programmierung, 5 LP (nur noch dieses WiSe)

(6)

Lehrangebot ...

Projektgruppen

➥ z.B. Aufnahme und Analyse von Fahrzeug-Sensordaten

➥ z.B. Erkennung ungew ¨ohnlicher Ereignisse in Kfz-Sensordaten

Abschlussarbeiten (Bachelor, Master)

➥ Themengebiete: sichere virtuelle Maschine, Parallelverarbeitung, Mustererkennung in Sensordaten, eAssessment, ...

Seminare

➥ Themengebiete: IT-Sicherheit, Programmiersprachen, Musterer- kennung in Sensordaten, ...

(7)

Zur Vorlesung

Vorlesung mit praktischer ¨Ubung

2+2 SWS, 5 LP

Termine:

Fr., 12:20 - 13:50, H-F 116 (Vorl.) bzw. H-A 4111 ( ¨Ubung)

Mo., 16:00-17:30, H-B 8409/10 (Vorl.) bzw. H-A 4111 ( ¨Ubung)

Information, Folien und Ank ¨undigungen:

http://www.bs.informatik.uni-siegen.de/lehre/

ws1920/csp

Folienskript vollst ¨andig verf ¨ugbar

Folien werden ggf. leicht aktualisiert und i.d.R. sp ¨atestens am Tag vor der Vorlesung bereitgestellt (als PDF)

(8)

Lernziele

➥ Wissen um die Grundlagen, Techniken, Methoden und Werkzeuge der verteilten Programmierung

insbesondere objektorientierte und serviceorientierte Middleware, sowie Komponenten

➥ Praktische Erfahrungen in der Programmierung von Client/Server-Anwendungen

➥ Praktische Erfahrungen im Umgang mit unterschiedlicher Middleware

(9)

Methodik

➥ Vorlesung: Grundlagen

theoretisches Wissen zur verteilten Systemen, Middleware und Komponenten

Code-Beispiele und

”Tutorials“

➥ Ubung: praktische Anwendung¨

Nachvollziehen der Tutorials

eigenst ¨andige Programmierarbeit

praktische Erfahrung, auch: Aufwerfen von Fragen

Realisierung einer kleinen B ¨orsenanwendung

mit RMI, CORBA, EJB und Web Services

zus ¨atzlich kleinere einf ¨uhrende und weiterf ¨uhrende Aufgaben

(10)

Pr ¨ufung

➥ M ¨undliche Pr ¨ufung

Dauer ca. 40 min.

Stoff: Vorlesung und praktische ¨Ubungen!

Pr ¨ufung erstreckt sich auch auf die praktischen Arbeiten

➥ Anmeldeverfahren:

zuerst Anmeldung ¨uber unisono

mindestens eine (besser: einige) Woche(n) im Voraus

Frist f ¨ur Mentorengenehmigungen: 28.11.2019

dann Terminabsprache im Sekretariat bei Fr. Syska

per Email (reginaa.dsyskaa@duni-siegena.dde)

(11)

Anmeldung zur Studienleistung

➥ Voraussetzung f ¨ur die Zulassung zur Pr ¨ufung:

aktive Mitarbeit im Praktikum

d.h., tauglicher Versuch f ¨ur alle (d.h., 4) Hauptaufgaben

➥ Sie m ¨ussen sich in unisono bis 24.01. zur Studienleistung

”Client/Server-Programmierung“ (822030-SL) anmelden!

unabh ¨angig von der Anmeldung zu Vorlesung bzw. ¨Ubung!

machen Sie es gleich jetzt!

(12)

Organisatorisches zum Praktikum

➥ Benutzerordnung und Chipschl ¨usselantrag:

http://www.bs.informatik.uni-siegen.de/lehre/

ws1920/csp

Chipschl ¨usselantrag bitte unterscheiben lassen und direkt bei Hr. Kiel (AR-P 209) abgeben

➥ Praktikumsbeginn: 21.10.

Einf ¨uhrung in die Rechner-Umgebung (Linux)

Ausgabe der Kennungen

Benutzerordnung im WWW beachten!

(13)

Rechnerumgebung im Labor H-A 4111

➥ Linux-PCs, privates IP-Netz, beschr ¨ankter Internet-Zugang

13 Arbeitsplätze 6 Arbeitsplätze (Intel, 4 Cores, (Intel, 4 Cores mit HT,

http https ftp

Fachgruppennetz (bs.informatik.uni−siegen.de) / Internet

bsgate1.bs.informatik.uni−siegen.de sftp (nur pubkey−Authentifizierung)

(lab.bvs)

Labornetz 1 Gbit/s

File Server Proxy

... ...

bslab01−06,12−18 bslab07−11,19

0000 1111

0000 1111

00 11 0000

1111

(14)

Inhalt der Vorlesung

➥ Grundlagen: Wiederholung

Architekturmodelle

Zeit und Zustand in verteilten Systemen

Middleware

Java RMI

➥ Java Datenbank-Schnittstelle JDBC

CORBA

Architektur, Dienste, IDL, ...

➥ Java Komponenten-Modelle

Einf ¨uhrung

(15)

Inhalt der Vorlesung ...

➥ Servlets und JSP

Web Services

XML, SOAP, WSDL, ...

Axis2

➥ Weitere Client/Server-Technologien

u.a. .NET, DCOM

(16)

Zeitplan der Vorlesung (vorl ¨aufig!)

Datum Montags-Termin Datum Freitags-Termin

07.10. — 11.10. V: Grundlagen, Wdh.

14.10. V: Grundlagen, Wdh. 18.10. V: JDBC, CORBA

21.10. P: RMI 25.10. V: CORBA

28.10. V: CORBA 01.11. —

04.11. P: RMI 08.11. V: CORBA

11.11. P: RMI 15.11. V: Java Beans, EJB

18.11. P: CORBA 22.11. V: EJB

25.11. P: CORBA 29.11. V: EJB

Schwarz: Vorlesung (Mo.: H-B 8409/10, Fr.: H-F 116)

(17)

Zeitplan der Vorlesung (vorl ¨aufig!) ...

Datum Montags-Termin Datum Freitags-Termin 02.12. P: CORBA 06.12. V: Servlets, JSP

09.12. P: CORBA 13.12. V: Web Services

16.12. P: EJB 20.12. P: EJB

06.01. P: EJB 10.01. V: Web Services

13.01. P: EJB 17.01. V: Web Services

20.01. P: Web Services 24.01. V: Weitere Technologien 27.01. P: Web Services 31.01. P: Web Services

Schwarz: Vorlesung (Mo.: H-B 8409/10, Fr.: H-F 116)

(18)

Literatur

Allgemeinere Literatur

➥ Ulrike Hammerschall, Verteilte Systeme und Anwendungen.

Pearson Studium, 2005.

➥ Robert Orfali, Dan Harkey, Client/Server-Programming with Java and Corba. John Wiley & Sons, 1998.

Verteilte Systeme

➥ George Coulouris, Jean Dollimore, Tim Kindberg. Verteilte

Systeme – Konzepte und Design, 3. Auflage. Pearson Studium, 2002.

(19)

Literatur ...

Verteilte Programmierung mit Java

➥ Cay S. Horstmann, Gary Cornell. Core Java 2, Band 2 –

Expertenwissen. Sun Microsystems Press / Addison Wesley, 2008.

➥ Torsten Langner. Verteilte Anwendungen mit Java.

Markt+Technik, 2002.

➥ Jim Farley, William Crawford, David Flanagan. Java Enterprise in a Nutshell, 3rd Edition. O’Reilly, 2005.

CORBA und COM

➥ Johann Hofmann, Fritz Jobst, Roland Schabenberger.

Programmieren mit COM und CORBA, Hanser, 2001.

(20)

Literatur ...

Enterprise JavaBeans

➥ Rima P. Sriganesh, Gerald Brose, Micah Silverman. Mastering Enterprise JavaBeans 3.0. Wiley, 2006.

➥ Bill Burke, Richard Monson-Haefel. Enterprise JavaBeans 3.0, 5th Edition. O’Reilly, 2006.

Servlets

➥ Jason Hunter, William Crawford. Java Servlet Programmierung.

O’Reilly, 2002.

Web Services

➥ Manfred Hein, Henner Zeller. Java Web Services,

(21)

Client/Server-Programmierung

WS 2019/2020

1 Grundlagen: Wiederholung

(22)

1 Grundlagen: Wiederholung ...

Inhalt

➥ Architekturmodelle

➥ Zeit und Zustand in verteilten Systemen

➥ Middleware

➥ Java RMI

(23)

1.1 Architekturmodelle

Client/Server-Modell

➥ Asymmetrisches Modell: Server stellen Dienste bereit, die von (mehreren) Clients genutzt werden k ¨onnen

Server verwalten i.a. Ressourcen (zentralisiert)

Aufruf Ergebnis Client

Client

Server

Rechner Prozeß

Aufruf

Server Ergebnis

Server kann selbst

wieder als Client agieren

(24)

1.1 Architekturmodelle ...

Client/Server-Modell ...

➥ I.A. nebenl ¨aufige Anfragen mehrerer Client-Prozesse an den Server-Prozeß

Client (reply) Zeit (request)

Antwort Anfrage

Start Ende

Server Client

(25)

1.1 Architekturmodelle ...

n-Tier-Architekturen

➥ Verfeinerungen der Client/Server-Architektur

➥ Modelle zur Verteilung einer Anwendung auf die Knoten einer verteilten Systems

➥ Vor allem bei Informationssystemen verwendet

Tier (engl. Schicht / Stufe) kennzeichnet einen unabh ¨angigen Prozeßraum innerhalb einer verteilten Anwendung

Prozeßraum kann, muß aber nicht physischem Rechner entsprechen

mehrere Prozeßr ¨aume auf einem Rechner m ¨oglich

(26)

1.1 Architekturmodelle ...

2-Tier-Architektur

➥ Client- und Server-Tier

➥ Keine eigene Tier f ¨ur die Anwendungslogik

(Verteilung auf Client−

und Server−Tier variiert) Präsentation

Datenhaltung

Anwendungslogik Client−Tier

Server−Tier

➥ Vorteil: einfach, performant

(27)

1.1 Architekturmodelle ...

3-Tier-Architektur

Präsentation

Anwendungslogik Datenhaltung

Client−Tier

Middle−Tier

Server−Tier

➥ Standard-Verteilungsmodell f ¨ur einfache Web-Anwendungen:

Client-Tier: Web-Browser zur Anzeige

Middle-Tier: Web-Server mit Servlets / JSP / ASP

Server-Tier: Datenbank-Server

(28)

1.1 Architekturmodelle ...

Beispiel: typische Internet-Anwendung

Intranet

Internet Web−

Client

Web−

Client

0 1

0000 1111 0000 1111 000000 000000 111111 111111

000000 111111 0000 1111 000000 000000 111111 111111

0000 1111 0000 1111 000000 000000 111111 111111

Anwen−

dungs−

Server Server

Web− Daten−

bank−

Server

Tier 1 Tier 2 Tier 3 Tier 4

(29)

1.1 Architekturmodelle ...

Beispiel: typische Internet-Anwendung

Intranet

Internet Web−

Client

Web−

Client

00 11

0000 1111 0000 00 1111 11

000000 000000 111111 111111

000000 111111 0000 00 1111 11

000000 000000 111111 111111

0000 1111 0000 00 1111 11

000000 000000 111111 111111

Anwen−

dungs−

Server Server

Web− Daten−

bank−

Server

Tier 1 Tier 2 Tier 3 Tier 4

DMZ

00 00 00 00 11 11 11 11

0 0 0 0 1 1 1 1

Firewall Firewall00001111

0000 00 1111 11

000000 000000 111111 111111

Server Web−

(30)

1.2 Zeit und Zustand in verteilten Systemen

Was ist der Unterschied zwischen einem verteilten System und einem Ein-/Mehrprozessorsystem?

➥ Ein- bzw. Mehrprozessorsystem:

nebenl ¨aufige Prozesse: pseudo-parallel durch time sharing bzw. echt parallel

globale Zeit: alle Ereignisse in den Prozessen lassen sich zeitlich eindeutig ordnen

globaler Zustand: zur jeder Zeit kann ein eindeutiger Zustand des Systems angegeben werden

➥ Verteiltes System

echte Parallelit ¨at

(31)

1.2 Zeit und Zustand in verteilten Systemen ...

Globale Zeit

➥ Auf Ein-/Mehrprozessorsystem

jedem Ereignis kann (zumindest theoretisch) ein eindeutiger Zeitstempel derselben lokalen Uhr zugeordnet werden

bei Mehrprozessorsystemen: Synchronisation am gemeinsamen Speicher

➥ In verteilten Systemen:

viele lokale Uhren (eine pro Knoten)

exakte Synchronisation der Uhren (prinzipiell!) nicht m ¨oglich

⇒ Reihenfolge von Ereignissen auf verschiedenen Knoten nicht (immer) eindeutig zu ermitteln

(vgl. spezielle Relativit ¨atstheorie)

(32)

1.2 Zeit und Zustand in verteilten Systemen ...

Eine Auswirkung der Verteiltheit

➥ Szenario: zwei Prozesse beobachten zwei andere Prozesse

Beobachter A

Beobachter B Prozess 1 Prozess 2

z y x

z x y

x y z

➥ Die Beobachter sehen die Ereignisse ggf. in unterschiedlicher Reihenfolge!

➥ Problem z.B., falls die Beobachter replizierte Datenbanken und

(33)

1.2 Zeit und Zustand in verteilten Systemen ...

Globaler Zustand: Ein Beispiel zur Motivation

➥ Szenario: Peer-to-Peer-Anwendung, Prozesse senden sich gegenseitig Auftr ¨age

➥ Frage: wann kann die Anwendung terminieren?

Falsche Antwort: wenn kein Prozeß mehr einen Auftrag bearbeitet

Grund: Auftr ¨age k ¨onnen noch in Nachrichten unterwegs sein!

Auftrag

Prozeß 1 Prozeß 2

idle idle

(34)

1.2 Zeit und Zustand in verteilten Systemen ...

➥ Wie bestimmt sich der Gesamtzustand eines verteilten Prozeß- systems?

naiv: Summe der Zust ¨ande aller Prozesse (falsch!)

➥ Zwei Aspekte m ¨ussen beachtet werden:

Nachrichten, die noch in ¨Ubertragung sind

m ¨ussen mit in den Zustand aufgenommen werden

Fehlen einer globalen Zeit

ein Globalzustand zur Zeit t kann nicht definiert werden!

Zust ¨ande der Prozesse beziehen sich immer auf lokale (und damit unterschiedliche) Zeiten

Frage: Bedingung an die lokalen Zeiten? ⇒ konsistente

(35)

1.3 Middleware

Verteilte Anwendung (VA)

Verteiltes System (VS) Netz

VA−

VS−Knoten Middleware Komponente VA−

VS−Knoten Middleware Komponente KomponenteVA−

VS−Knoten

KomponenteVA−

VS−Knoten Verteilte Anwendung (VA)

Verteiltes System (VS) Netz

➥ VA nutzt VS f ¨ur Kommunikation zwischen ihren Komponenten

➥ VSe bieten i.a. nur einfache Kommunikationsdienste an

direkte Nutzung: Netzwerkprogrammierung

Middleware bietet intelligentere Schnittstellen

verbirgt Details der Netzwerkprogrammierung

(36)

1.3 Middleware ...

➥ Middleware ist Schnittstelle zwischen verteilter Anwendung und verteiltem System

➥ Ziel: Verbergen der Verteilungsaspekte vor der Anwendung

u.a. Zugriffs- und Orts-Transparenz

➥ Middleware kann auch Zusatzdienste f ¨ur Anwendungen bieten

starke Unterschiede bei existierender Middleware

➥ Unterscheidung:

kommunikationsorientierte Middleware

(nur) Abstraktion von der Netzwerkprogrammierung

anwendungsorientierte Middleware

(37)

1.3.1 Kommunikationsorientierte Middleware

➥ Fokus: Bereitstellung einer Kommunikationsinfrastruktur f ¨ur verteilte Anwendungen

➥ Aufgaben:

Kommunikation

Behandlung der Heterogenit ¨at

Fehlerbehandlung

Anwendung

Kommunikationsorientierte Middleware

Betriebssystem / verteiltes System

(38)

1.3.1 Kommunikationsorientierte Middleware ...

Entfernter Prozeduraufruf (RPC, Remote Procedure Call)

➥ Erm ¨oglicht einem Client den Aufruf einer Prozedur in einem entfernten Server-Prozeß

P(a) {...

return b;

} y = P(x); Eingabeparameter

Prozeß Client−

Prozeß Server−

Resultate

➥ Kommunikation nach Anfrage / Antwort-Prinzip

Entfernter Methodenaufruf (RMI, Remote Method Invocation)

➥ Erm ¨oglicht einem Objekt, Methoden eines entfernten Objekts

(39)

1.3.1 Kommunikationsorientierte Middleware ...

Gemeinsame Grundkonzepte entfernter Aufrufe

➥ Client und Server werden durch Schnittstellendefinition entkoppelt

legt Namen der Aufrufe, Parameter und R ¨uckgabewerte fest

➥ Einf ¨uhrung von Client-Stubs und Server-Skeletons als Zugriffsschnittstelle

werden automatisch aus Schnittstellendefinition generiert

IDL-Compiler, Interface Definition Language

sind verantwortlich f ¨ur Marshalling / Unmarshalling sowie f ¨ur die eigentliche Kommunikation

realisieren Zugriffs- und Ortstransparenz

(40)

1.3.1 Kommunikationsorientierte Middleware ...

Funktionsweise der Client- und Server-Stubs (RPC)

Client−Stub Server−Skeleton P(a) {

y=P(x)

P(a) {...

return b;

}

; ;

Client−Prozeß

return b;

}

receive(m1);

client=sender(m1);

Argumente x aus Nach−

richt m1 auspacken y = P(x)

} Argumente a in

Nachricht m1 packen send(Server, m1);

receive(Server, m2) Ergebnis b aus Nach−

richt m2 auspacken

while (true) {

send(client, m2);

richt m2 packen Ergebnis y in Nach−

Server−Prozeß

(41)

1.3.1 Kommunikationsorientierte Middleware ...

Basis von RMI: Das Proxy-Pattern

➥ Client arbeitet mit Stellvertreterobjekt (Proxy) des eigentlichen Serverobjekts

Proxy und Serverobjekt implementieren dieselbe Schnittstelle

Client kennt / nutzt lediglich diese Schnittstelle

Client Proxy Objekt

Schnittstelle

<<interface>>

(42)

1.3.1 Kommunikationsorientierte Middleware ...

Ablauf eines entfernten Methodenaufrufs

Proxy

Skeleton ruft dieselbe

Methode für das Objekt auf Objekt

stelle wie beim Selbe Schnitt−

Objekt Status Methode Schnitt−

stelle Client−BS

Client

Server−BS Server

Skeleton

Server−Rechner Client−Rechner

Client ruft eine

Methode auf

(43)

1.3.1 Kommunikationsorientierte Middleware ...

Erstellung eines Client/Server-Programms

Server

Client Schnittstellen−

beschreibung

Client−

Programm

Compiler

Compiler Client−Stubs

CompilerIDL−

Server−Skel.

Laufzeit−

Bibliothek RPC/RMI Server−

Prozeduren

➥ Gilt prinzipiell f ¨ur alle Realisierungen entfernten Aufrufe

(44)

1.3.2 Anwendungsorientierte Middleware

➥ Setzt auf kommunikationsorientierter Middleware auf

➥ Erweitert diese um:

Laufzeitumgebung

Dienste

Komponentenmodell

Dienste Dienste Laufzeitumgebung

Anwendungs−

komponente Anwendungs−

komponente Anwendungs−

komponente

Komponentenmodell

Kommunikationsinfrastruktur

(45)

1.3.2 Anwendungsorientierte Middleware ...

Laufzeitumgebung

➥ Ressourcenverwaltung

Pooling von Prozessen, Threads, Verbindungen

Steuerung der Nebenl ¨aufigkeit

Verbindungsverwaltung

➥ Verbesserung der Verf ¨ugbarkeit

Replikation, Clustering

➥ Sicherheitsmechanismen

Authentifizierung und Autorisierung

Vertraulichkeit und Integrit ¨at

(46)

1.3.2 Anwendungsorientierte Middleware ...

Dienste

➥ Namensdienst (Verzeichnisdienst)

Zuordnung von Namen zu Referenzen (Adressen)

➥ Sitzungsverwaltung

➥ Transaktionsverwaltung

➥ Persistenzdienst

z.B. objektrelationaler Mapper (OR-Mapper)

Komponentenmodell

➥ Komponentenbegriff, Schnittstellenvertr ¨age, Laufzeitumgebung

(47)

Roland Wism ¨uller

Betriebssysteme / verteilte Systeme rolanda.dwismuellera@duni-siegena.dde Tel.: 0271/740-4050, B ¨uro: H-B 8404

Client/Server-Programmierung

WS 2019/2020

14.10.2019

(48)

1.4 Java RMI

➥ Java RMI ist fester Bestandteil von Java

erlaubt Nutzung entfernter Objekte

➥ Wichtige Elemente von Java RMI (im Paket java.rmi):

entfernte Objektimplementierungen

Client-Schnittstellen (Stubs) zu entfernten Objekten

Namensdienst, um Objekte im Netz ausfindig zu machen

➥ Stub- und Skeleton-Klassen werden automatisch aus Schnittstel- lendefinition (Java Interface) generiert

ab JDK 1.5 dynamisch zur Laufzeit

➥ Namensdienst: RMI Registry

(49)

1.4 Java RMI ...

1.4.1 Hello World mit Java RMI

Client−JVM Server−JVM

class HelloClient {

s = h.sayHello();

Client−Klasse ...

Hello h;

...

...

Server−Klasse

class HelloServer

String sayHello() {

return "Hello World";

} ...

Interface

interface Hello {

String sayHello();

}

implements Hello {

(50)

1.4.1 Hello World mit Java RMI ...

Ablauf der Entwicklung:

1. Entwurf der Schnittstelle f ¨ur das Server-Objekt 2. Implementierung der Server-Klasse

3. Entwicklung der Server-Anwendung zur Aufnahme des Server-Objekts

4. Entwicklung der Client-Anwendung mit Aufrufen des Server-Objekts

5. Ubersetzen und Starten des Systems¨

(51)

1.4.1 Hello World mit Java RMI ...

Entwurf der Schnittstelle f ¨ur das Server-Objekt

➥ Wird als normale Java-Schnittstelle spezifiziert

➥ Muß von java.rmi.Remote abgeleitet werden

kein Erben von Operationen, nur Markierung als Remote-Interface

➥ Jede Methode muß die Ausnahme java.rmi.RemoteException (oder eine Basisklasse davon) ausl ¨osen k ¨onnen

Basisklasse f ¨ur alle m ¨oglicherweise auftretenden Fehler

im Client, bei der ¨Ubertragung, im Server

➥ Keine Einschr ¨ankungen gegen ¨uber lokalen Schnittstellen

aber: semantische Unterschiede (Parameter ¨ubergabe!)

(52)

1.4.1 Hello World mit Java RMI ...

Hello-World Interface

RemoteException zeigt Fehler im entfernten

Objekt bzw. bei Kommu−

nikation an Marker−Schnittstelle ,

enthält keine Methoden, markiert Interface als RMI−Schnittstelle

public interface Hello extends Remote {

String sayHello() throws RemoteException;

import java.rmi.RemoteException;

import java.rmi.Remote;

}

(53)

1.4.1 Hello World mit Java RMI ...

Implementierung der Server-Klasse

➥ Eine Klasse, die remote nutzbar sein soll, muß:

ein festgelegtes Remote-Interface implementieren

i.d.R. von java.rmi.server.UnicastRemoteObject abgeleitet werden

definiert Aufrufsemantik: Punkt-zu-Punkt

einen Konstruktor besitzen, der RemoteException werfen kann

Erzeugung des Objekts muß in try-catch-Block stehen

➥ Methoden brauchen throws RemoteException nicht nochmals anzugeben

ausser sie werfen diese Exception explizit selbst

(54)

1.4.1 Hello World mit Java RMI ...

Hello-World Server (1)

Remote Methode import java.rmi.*;

import java.rmi.server.UnicastRemoteObject;

public class HelloServer extends UnicastRemoteObject implements Hello {

super();

}

return "Hello World!";

public HelloServer() throws RemoteException {

public String sayHello() {

(55)

1.4.1 Hello World mit Java RMI ...

Entwicklung der Server-Anwendung zur Aufnahme des Server-Objekts

➥ Aufgaben:

Erzeugen eines Server-Objekts

Registrieren des Objekts beim Namensdienst

unter einem festgelegten, ¨offentlichen Namen

➥ Typischerweise keine neue Klasse, sondern main-Methode der Server-Klasse

(56)

1.4.1 Hello World mit Java RMI ...

Hello-World Server (2)

Server−Objekts

Erzeugen des Registrieren des Server−Objekts unter dem Namen "Hello−Server"

public static void main(String args[]) { try {

HelloServer obj = new HelloServer();

catch (Exception e) {

System.out.println("Error: " + e.getMessage());

e.printStackTrace();

} }

Naming.rebind("rmi://localhost/Hello−Server", obj);

}

(57)

1.4.1 Hello World mit Java RMI ...

Entwicklung der Client-Anwendung mit Aufrufen des Server-Objekts

➥ Client muß sich zun ¨achst beim Namensdienst ¨uber den Namen eine Referenz auf das Server-Objekt holen

Type cast auf den korrekten Typ erforderlich

➥ Dann: beliebige Methodenaufrufe m ¨oglich

syntaktisch kein Unterschied zu lokalen Aufrufen

➥ Anmerkung: Client kann Remote-Referenzen auch auf anderen Wegen erhalten

z.B. als R ¨uckgabewert einer Remote-Methode

(58)

1.4.1 Hello World mit Java RMI ...

Hello-World Client

Objektreferenz vom Name−Server holen

Aufruf der Methode

des entfernten Objekts public static void main(String args[]) {

public class HelloClient { try {

import java.rmi.*;

(Hello)Naming.lookup("rmi://bspc02/Hello−Server");

String message = obj.sayHello();

System.out.println(message);

}

catch (Exception e) { ...

} }

Hello obj =

(59)

1.4.1 Hello World mit Java RMI ...

Ubersetzen und Starten des Systems¨

➥ Ubersetzen der Java-Quellen¨

Quelldateien: Hello.java, HelloServer.java, HelloClient.java

Aufruf: javac *.java

erzeugt: Hello.class, HelloServer.class, HelloClient.class

➥ Erzeugen des Client-Stubs (Proxy-Objekt)

f ¨ur Clients bis JDK 1.4:

Aufruf: rmic -v1.2 HelloServer

erzeugt HelloServer Stub.class

ab JDK 1.5: Client erzeugt Proxy-Klasse zur Laufzeit

(60)

1.4.1 Hello World mit Java RMI ...

Ubersetzen und Starten des Systems ...¨

Client−Seite Server−Seite

HelloServer.java

HelloClient.class Hello.class Hello.class HelloServer.class

javac javac

HelloClient.java Hello.java

rmic

(61)

1.4.1 Hello World mit Java RMI ...

Ubersetzen und Starten des Systems ...¨

➥ Starten des Namensdienstes

Aufruf: rmiregistry [port]

erlaubt aus Sicherheitsgr ¨unden nur die Registrierung von Objekten auf dem lokalen Host

d.h. RMI-Registry muß auf Server-Rechner laufen

Standard-Port: 1099

➥ Starten des Servers

Aufruf: java HelloServer

➥ Starten des Clients

Aufruf: java HelloClient

(62)

1.4 Java RMI ...

1.4.2 Parameter ¨ubergabe

➥ Ubergabe von Parametern an¨ Remote-Methoden erfolgt

entweder ¨uber call-by-value

f ¨ur Werttypen und serialisierbare Objekte

oder ¨uber call-by-reference

f ¨ur Objekte, die Remote implementieren

➥ Entscheidung wird z.T. erst zur Laufzeit getroffen!

➥ R ¨uckgabe des Ergebnisses folgt selben Regeln wie Parameter-

¨ubergabe

(63)

1.4.2 Parameter ¨ubergabe ...

Ubergabe eines serialisierbaren Objekts¨

param Original

Client−

Objekt param Stub−

Objekt Server−

Objekt

verbindungNetz−

unabhängige Kopie

<<create>>

op(param) Skele−

ton

op(param) param

serialisieren

param

deserialisieren

m()

(64)

1.4.2 Parameter ¨ubergabe ...

Ubergabe eines¨ Remote-Objekts

param Stub Stub−

Objekt param

Client−

Objekt

param Stub

Netz−

verbindung

Server−

Objekt

<<create>>

op(paramStub) Skele−

ton op(param)

toStub(param) paramStub

paramStub serialisieren

paramStub deserialisieren

m()

(65)

Roland Wism ¨uller

Betriebssysteme / verteilte Systeme rolanda.dwismuellera@duni-siegena.dde Tel.: 0271/740-4050, B ¨uro: H-B 8404

Client/Server-Programmierung

WS 2019/2020

18.10.2019

(66)

Client/Server-Programmierung

WS 2019/2020

2 Java Database Connectivity (JDBC)

(67)

2 Java Database Connectivity (JDBC) ...

2.1 ¨Uberblick

➥ Java-API zum portablen Zugriff auf relationale Datenbank- Systeme

➥ Unabh ¨angig von konkreter Datenbank-Implementierung

➥ Funktionen:

Verbindung zur Datenbank herstellen

Ausf ¨uhrung von SQL-Anweisungen

Zugriff auf Abfrage-Ergebnisse

➥ Vergleichbar mit ODBC, aber einfachere Schnittstelle

➥ Anschluß zur Datenbank ¨uber herstellerspezifische Treiber

(68)

2 Java Database Connectivity (JDBC) ...

2.2 Relationale Datenbanken und SQL

➥ Relationale Datenbank = Menge von Tabellen

jede Spalte hat Namen und Datentyp

jede Zeile enth ¨alt i.a. ein Feld, dessen Wert die Zeile eindeutig identifiziert (Prim ¨arschl ¨ussel)

Aufbau festgelegt in Datenbank-Schema

➥ Beispiel:

Primär−

schlüssel AG_ID AG_NAME

2

1 BMW

Siemens ag_name

ID AG_ID DAY VALUE

9 1

3 7

9

9 102.30

99.10 ag_data

(69)

2.2 Relationale Datenbanken und SQL ...

SQL

➥ Standardisierte Abfragesprache f ¨ur relationale Datenbanken

➥ Erlaubt u.a.:

Abfrage von Daten (SELECT)

Erzeugung neuer Tabellen (CREATE TABLE)

Einf ¨ugen von Datens ¨atzen (Zeilen) (INSERT)

L ¨oschen von Datens ¨atzen (DELETE)

Andern von Datens ¨atzen (UPDATE)¨

➥ Auswahl der Datens ¨atze i.d.R. ¨uber deren Inhalt

h ¨aufig ¨uber Prim ¨arschl ¨ussel

(70)

2.2 Relationale Datenbanken und SQL ...

Beispiele f ¨ur SQL-Anfragen

➥ SELECT AG_ID, AG_NAME FROM ag_name

WHERE AG_NAME = ’Siemens’

liefert die Zeile f ¨ur Siemens aus der ag name-Tabelle

➥ SELECT ag_name.AG_NAME, ag_data.VALUE FROM ag_name, ag_data

WHERE VALUE > 90 AND ag_name.AG_ID = ag_data.AG_ID

liefert Name und Kurs aller Aktien mit Kurs ¨uber 90

gibt Information aus zwei Tabellen zur ¨uck

Verbindung der Eintr ¨age ¨uber den Prim ¨arschl ¨ussel (Natural Join)

(71)

2 Java Database Connectivity (JDBC) ...

2.3 Architektur von JDBC

SQL−ServerMS mySQL Oracle

Java Anwendung

JDCB Treiber Manager JDBC/ODBC

Brücke

Treiber für

mySQL Oracle

Treiber für ODBC

Treiber

(72)

2.3 Architektur von JDBC ...

Klassen des JDBC-Kerns

Statement

PreparedStatement

CallableStatement

<<interface>>

<<interface>>

<<interface>>

ResultSet

ResultSetMetaData

<<interface>>

<<interface>>

Connection

<<interface>>

Driver

<<interface>>

DriverManager

DriverPropertyInfo java.sql

(73)

2.3 Architektur von JDBC ...

Klassen des JDBC-Kerns ...

➥ Interface Driver

Schnittstelle, die alle JDBC-Treiber implementieren m ¨ussen

neu geladener Treiber registriert sich bei DriverManager

➥ Klasse DriverManager

verwaltet Driver-Objekte

erzeugt Datenbank-Verbindungen (Connection)

➥ Klasse DriverPropertyInfo

erlaubt Definition spezieller Parameter beim Aufbau der Datenbank-Verbindung

(74)

2.3 Architektur von JDBC ...

Klassen des JDBC-Kerns ...

➥ Interface Connection

repr ¨asentiert Sitzung mit ausgew ¨ahlter Datenbank

erlaubt Erzeugung von Statement-Objekten

verwaltet Informationen zum Zustand der Datenbank

erlaubt Abfrage von Metadaten der Datenbank

(Methode getMetaData(), Resultat: DatabaseMetaData)

z.B. unterst ¨utzte SQL-Versionen, Limitierungen des Datenbank-Systems, ...

➥ Interface Statement

zur Ausf ¨uhrung einer SQL-Anfrage

(75)

2.3 Architektur von JDBC ...

Klassen des JDBC-Kerns ...

➥ Interface PreparedStatement

zur Ausf ¨uhrung einer vorkompilierten SQL-Anfrage

effizienter bei wiederholter Ausf ¨uhrung

➥ Interface CallableStatement

erlaubt Aufruf von Stored Procedures

SQL-Prozeduren, die in Datenbank selbst abgelegt sind

➥ Interface ResultSet

Ergebnis-Relation einer Datenbank-Anfrage

➥ Interface ResultSetMetaData

Metadaten zu den Spalten der Ergebnis-Relation

(76)

2 Java Database Connectivity (JDBC) ...

2.4 Ein Beispiel

import java.sql.*;

import java.lang.*;

public class Beispiel {

public static void main(String[] args) { try {

// Laden des JDBCTreibers

Class.forName("com.mysql.jdbc.Driver");

}

catch (ClassNotFoundException e) {

System.out.println("Treiber nicht ladbar:" + e);

return;

(77)

2.4 Ein Beispiel ...

try {

// Verbindung zur Datenbank

Connection con = DriverManager.getConnection(

"jdbc:mysql://bslabserv01.lab.bvs/cspdb","","");

// Erzeuge SQLAnweisung und f ¨uhre sie aus

Statement stmt = con.createStatement();

ResultSet rs = stmt.executeQuery(

"SELECT AG_ID, AG_NAME FROM ag_name");

// Ausgabe des Ergebnisses

while (rs.next()) {

System.out.println("" + rs.getInt("AG_ID") + ", "

+ rs.getString("AG_NAME"));

(78)

2.4 Ein Beispiel ...

// Alles schließen

rs.close();

stmt.close();

con.close();

}

catch (SQLException e) {

System.out.println("SQL Exception: "

+ e.getMessage());

e.printStackTrace(System.out);

} } }

(79)

2 Java Database Connectivity (JDBC) ...

2.5 Details zu JDBC Laden der Treiber

➥ Vor Verwendung von JDBC m ¨ussen die Treiber geladen werden:

try {

Class.forName("com.mysql.jdbc.Driver");

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

}

catch (ClassNotFoundException e) { ... }

➥ Alternativ: Setzen der jdbc.drivers Property

java -Djdbc.drivers=com.mysql.jdbc.Driver:sun.jdbc.

odbc.JdbcOdbcDriver ...

(80)

2.5 Details zu JDBC ...

Verbindung zur Datenbank herstellen

➥ Verbindung wird durch Connection-Objekt repr ¨asentiert

➥ Mehrere Datenbank-Verbindungen pro Anwendung m ¨oglich

➥ Erzeugung ¨uber

Connection con = DriverManager.getConnection(

"url ", "user ", "password ");

➥ Variante von getConnection() erlaubt Definition von Properties f ¨ur die Datenbank-Verbindung

➥ Wenn Verbindung nicht mehr ben ¨otigt wird:

explizites Schließen mit Methode con.close()

(81)

2.5 Details zu JDBC ...

Ausf ¨uhrung einer SQL-Anweisung

➥ Erzeugung eines Statement-Objekts

Statement stmt = con.createStatement();

➥ Ausf ¨uhrung der SQL-Anweisung

ResultSet rs = stmt.executeQuery("SELECT ...");

➥ Methoden executeUpdate() f ¨ur Anfragen ohne Ergebnis, bzw. execute(), falls unbekannt, ob Ergebnis geliefert wird

execute() liefert true, falls Ergebnis vorhanden

➥ Statement-Objekt repr ¨asentiert eine einzige SQL-Anfrage

ResultSet wird bei erneuter Anfrage ¨uber selbes Statement-Objekt ung ¨ultig

(82)

2.5 Details zu JDBC ...

Zugriff auf die Resultate

➥ Ergebnis einer SQL-Anfrage (SELECT) ist eine Tabelle

➥ Struktur gekapselt in ResultSet-Objekt

➥ Methoden u.a.:

next(): setzt

”Lesezeiger“ auf n ¨achste Zeile

zu Begin steht Zeiger vor der ersten Zeile

Ergebnis false, falls keine Zeile mehr vorhanden

get...(String name) / get...(int nr): liefert Inhalt des Feldes mit Spaltenname name bzw. Spaltennummer nr

mehrere Methoden f ¨ur die verschiedenen Datentypen

getString() liefert immer String-Repr ¨asentation

(83)

2.5 Details zu JDBC ...

SQL-Datentypen und Zugriffsmethoden (Auswahl)

SQL Typ(en) Java Typ Methode

CHAR, VARCHAR String getString()

NUMERIC, DECIMAL java.math.BigDecimal getBigDecimal()

BIT boolean getBoolean()

TINYINT byte getByte()

SMALLINT short getShort()

INTEGER int getInt()

BIGINT long getLong()

REAL float getFloat()

FLOAT, DOUBLE double getDouble()

BINARY, VARBINARY byte[] getBytes()

(84)

2.5 Details zu JDBC ...

Ausf ¨uhrung vorkompilierter SQL-Anfragen

➥ F ¨ur wiederkehrende, ¨ahnliche Aufgaben sind vorkompilierte SQL-Anfragen (PreparedStatement) effizienter

die Anfragen sind auch parametrisierbar

➥ Auch Sicherheitsvorteil gegen SQL Injection

➥ Erzeugung eines PreparedStatement-Objekts

PreparedStatement stmt = con.prepareStatement(

"INSERT INTO Employees (Name, Phone) (?, ?)");

? als Platzhalter f ¨ur Parameter

➥ Ausf ¨uhrung der Anfrage mit konkreten Parametern

stmt.clearParameters();

stmt.setString(1, "Jimmy Dean"); // erster Param.

(85)

2.5 Details zu JDBC ...

Ausf ¨uhrung von Stored Procedures

CREATE OR REPLACE

PROCEDURE sp_interest (id IN INTEGER

bal IN OUT FLOAT) is BEGIN

SELECT balance INTO bal

FROM accounts

WHERE account_id = id;

bal = bal + bal * 0.03;

UPDATE accounts SET balance = bal

WHERE account_id = id;

Datenbanksystem gespeichert) Oracle PL/SQL−Prozedur (Im

CallableStatement stmt

= con.prepareCall(

stmt.registerOutParameter(2,

stmt.setFloat(2, 2343.23);

out.println("New Balance: "

stmt.execute();

stmt.setInt(1, accountID);

Aufruf der Prozedur über JDBC

+ stmt.getFloat(2));

Types.FLOAT);

"{call sp_interest(?,?)}");

(86)

2.5 Details zu JDBC ...

Transaktionen

➥ Verantwortlich f ¨ur Transaktionen: Connection-Objekt

➥ Methoden zur Steuerung von Transaktionen:

setAutoCommit() - automatisches Festschreiben?

Voreinstellung: jede SQL-Anweisung wird als individuelle Transaktion ausgef ¨uhrt

commit() - Festschreiben der Transaktion

rollback() - Abbruch der Transaktion

setTransactionIsolation() - Isolationsebene festlegen

TRANSACTION NONE, sowie die vier Isolations-Ebenen nach ANSI/ISO-SQL99 (☞ VS, 7.4):

read uncommitted, read commited, repeatable read,

(87)

2.5 Details zu JDBC ...

Transaktionen ...

try {

// H ¨ochste Isolationsebene

con.setTransactionIsolation(TRANSACTION_SERIALIZABLE);

// Transaktionen mit mehreren SQLAnweisungen zulassen

con.setAutoCommit(false);

// SQLAnweisungen

stmt.executeUpdate("UPDATE inv SET onhand = 10 WHERE id = 5");

stmt.executeUpdate("INSERT INTO shipping (qty) VALUES (5)");

// Commit aller Aktionen seit letztem Commit/Rollback

con.commit();

}

catch (SQLException e) {

// R ¨uckg ¨angigmachen aller ¨Anderungen

con.rollback();

(88)

2 Java Database Connectivity (JDBC) ...

2.6 Zusammenfassung

➥ JDBC erlaubt portablen Zugriff auf relationale Datenbanken

Abfragen ¨uber SQL

➥ Grunds ¨atzlicher Ablauf:

Laden des Treibers (Class.forName())

Verbindung zur Datenbank herstellen (Connection)

SQL-Anweisung erzeugen (Statement)

SQL-Anweisung ausf ¨uhren, Ergebnis auslesen (ResultSet)

➥ Daneben: Unterst ¨utzung f ¨ur

vorkompilierte SQL-Anweisungen und Stored Procedures

(89)

Client/Server-Programmierung

WS 2019/2020

3 CORBA

(90)

3 CORBA ...

Inhalt

➥ CORBA-Architektur

➥ CORBA-Dienste

➥ Beispielprogramm

➥ CORBA im Detail

IDL und IDL-Java-Mapping

Namensdienst

POA

GIOP, IIOP und IOR

Implementation- und Interface-Repository

(91)

3 CORBA ...

Literatur

➥ CORBA-Spezifikationen der OMG

http://www.omg.org/technology/documents/

corba spec catalog.htm

➥ Farley / Crawford / Flanagan, Kap. 14

➥ Orfali / Harkey, Kap. 1, 4, 7-9, 17-22

➥ Hofmann / Jobst / Schabenberger, Kap. 2.2, 5, 6

➥ Michi Henning, Steve Vinoski: Advanced CORBA Programming with C++. Addison-Wesley, 1999.

(92)

3.1 Einf ¨uhrung

➥ CORBA: Common Object Request Broker Architecture

➥ Ziel: Entwicklung und Integration verteilter objektorientierter Anwendungen in heterogenen Umgebungen

CORBA ist plattform- und sprachunabh ¨angig

➥ Informeller Standard, definiert durch die OMG (Object Management Group)

1989 gegr ¨undet, Ziel: F ¨orderung objektorientierter Techniken

heute ¨uber 800 Mitglieder (gr ¨oßtes IT-Industriekonsortium)

➥ CORBA ist nur eine Spezifikation

verschiedenste Implementierungen, z.B. Orbix, ORBACUS, Java IDL (Teil des JDK), JacORB, ORBit (GNOME!) ...

(93)

3.2 CORBA Architektur

3.2.1 Object Management Architecture (OMA)

➥ Definiert Objekt- und Referenzmodell

➥ Objektmodell

unterst ¨utzt Kapselung, (Mehrfach-)Vererbung, Polymorphie

Objekte bieten Dienste mit definierter Schnittstelle an

Client nutzt Dienste (lokal oder entfernt) ¨uber Schnittstelle, ist vollst ¨andig von Server-Implementierung unabh ¨angig

Objektimplementierung mit beliebiger Programmiersprache

➥ Referenzmodell

Interaktion zw. Objekten und dazu notwendige Komponenten

Herzst ¨uck: Object Request Broker (ORB)

(94)

3.2.1 Object Management Architecture (OMA) ...

Das OMA Referenzmodell

Object Request Broker

. . .

Client Server

LifeCycle Transactions Event

Naming

Application Vertical CORBA Horizontal CORBA Facilities

Objects Facilities

(95)

3.2.1 Object Management Architecture (OMA) ...

Bestandteile des OMA Referenzmodells

Object Request Broker (ORB)

stellt Dienstanfragen an verteilte Objekte zu

realisiert Ortstransparenz f ¨ur die Client-Objekte

➥ CORBA Services (Object Services)

dom ¨anenunabh ¨angige (horizontale) Schnittstellen zu wichtigen Basisdiensten, z.B. Namensdienst

betriebssystem- ¨ahnliche Funktion

Horizontal CORBA Facilities (Common Facilities)

Schnittstellen zu anwendungsorientierten, dom ¨anen ¨uber- greifenden Diensten

(96)

3.2.1 Object Management Architecture (OMA) ...

Bestandteile des OMA Referenzmodells ...

Vertical CORBA Facilities (Domain Interfaces)

Schnittstellen zu anwendungsorientierten Diensten f ¨ur bestimmte Anwendungsdom ¨anen

z.B. Finanzwesen, Medizin, Telekommunikation, ...

Application Objects

anwendungsspezifische Schnittstellen

im Ggs. zu Services und Facilities nicht von der OMG standardisiert

➥ OMG spezifiziert nur die Schnittstellen, nicht die Implemen-

(97)

3.2 CORBA Architektur ...

3.2.2 Common Object Request Broker Architecture (CORBA)

➥ Zentrale Idee: transparente Kommunikation zwischen Client und Server-Objekten ¨uber ORB

ORB bietet Client eine lokale (Proxy-)Schnittstelle

➥ Vorteile beim Einsatz eines ORB:

Zugriffs- und Ortstransparenz

Transparenz der Implementierungssprache

Transparenz der Objektaktivierung

ORB ¨ubernimmt ggf. Aktivierung des Objekts

Transparenz der Kommunikationstechnik

(98)

3.2.2 Common Object Request Broker Arch. ...

Objektreferenzen

➥ Zugriff auf Objekte erfolgt ¨uber Objektreferenzen

➥ Objektreferenzen

identifizieren genau ein Objekt

aber: verschiedene Referenzen f ¨ur ein Objekt m ¨oglich

k ¨onnen null sein, d.h. auf kein Objekt zeigen

k ¨onnen

”h ¨angen“, wenn Objekt nicht mehr existiert

k ¨onnen persistent sein

sind typsicher

unterst ¨utzen sp ¨ates Binden (Polymorphismus)

(99)

3.2.2 Common Object Request Broker Arch. ...

OMG Interface Definition Language (OMG IDL)

➥ OMG IDL erlaubt formale Beschreibung der Objekt-Schnitt- stellen

unabh ¨angig von Implementierung der Objekte (z.B.

Programmiersprache)

Objekte k ¨onnen z.B. durch C++- oder Java-Objekte, aber auch durch eigene Programme oder OO-Datenbanken

implementiert werden

➥ OMG definiert, wie IDL in verschiedene Sprachen abgebildet wird (Language Mapping)

derzeit f ¨ur C, C++, Java, Smalltalk, Ada, Lisp, Phyton, Cobol, PL/1, Ruby

(100)

3.2.2 Common Object Request Broker Arch. ...

Modell des Object Request Brokers

00 11

000000 000000 111111 111111

000000000 000000000 111111111 111111111

00000000 11111111

00000 00000 11111 11111

00000 00000 11111 11111

00000000 11111111

Dynamic Skeleton Interface Skeleton

ORB Interface Dynamic

Invocation Interface Stub

Implementation Repository Interface Repository

Identische Schnittstelle für alle ORB−Implementierungen

Client Object Implementation

ORB−Core

Adapter Object

(101)

Roland Wism ¨uller

Betriebssysteme / verteilte Systeme rolanda.dwismuellera@duni-siegena.dde Tel.: 0271/740-4050, B ¨uro: H-B 8404

Client/Server-Programmierung

WS 2019/2020

25.10.2019

(102)

3.2.2 Common Object Request Broker Arch. ...

Komponenten des ORB

ORB Core

stellt Basisfunktionalit ¨at zur Verf ¨ugung

Objekt-Repr ¨asentation, Kommunikationsmechanismen

ist i.d.R. verteilt implementiert

Stub und Skeleton

f ¨ur entfernten Methodenaufruf

vom IDL-Compiler aus Schnittstellendefinition erzeugt

Dynamic Invocation Interface und Dynamic Skeleton Interface

erlauben dynamische Methodenaufrufe/-implementierungen

(103)

3.2.2 Common Object Request Broker Arch. ...

Komponenten des ORB ...

Object Adapter

stellt Objektimplementierung Dienste des ORB zur Verf ¨ugung

Funktionen u.a.:

Methodenaufrufe ( ¨uber Skeletons)

Abbildung von Referenzen auf Impementierungen

Registrierung von Implementierungen

Generierung und Interpretation von Objektreferenzen

Objektaktivierung und -deaktivierung

unterschiedliche Objektadapter m ¨oglich

ab CORBA 2.2: Portable Object Adapter (POA) als Standard-Schnittstelle zum Objektadapter

(104)

3.2.2 Common Object Request Broker Arch. ...

Komponenten des ORB ...

ORB Interface

Schnittstelle f ¨ur Dienste, die der ORB dem Client und allen Objektimplementierungen zur Verf ¨ugung stellt

Interface Repository

Dienst, der zur Laufzeit persistente Information zu den registrierten Objektschnittstellen zur Verf ¨ugung stellt

Nutzung ggf. durch ORB und / oder Clients

allgemein: jegliche Information zu Objekt-Schnittstellen

Implementation Repository

enth ¨alt Information, die es dem ORB erlaubt, Objekte zu

Referenzen

ÄHNLICHE DOKUMENTE

Der liebevoll eingerichtete Wohnbereich bietet Ihnen eine kuschelige Sitzecke und ein gemütliches Sofa, welches sich schnell für zwei weitere Gäste aufbetten lässt, einen

In subsequent exper- iments on the segment data, the satimage data and the pendigits data from the VCI Machine Learning Repository (Asuncion and Newman, 2007), we

Allgemein: Doppelbett, für Monteure geeignet, Heizung, Nichtraucher, radfreundlich, Reise-/Kinderbett, Teppichboden, wanderfreundlich, Wohn/Schlafraum komb..

Auf der gemütlichen Couchgruppe erholen Sie sich von Ihren Tagesausflügen und können sich bei Bedarf per WLAN oder mit Hilfe einer vorhandenen Prospektmappe über

Ideal für eine kleine Familie oder 2 Ehepaare, 2 Schlafzimmer mit Doppelbetten im Erdgeschoss, großer Wohnraum mit gemütlicher Sitzecke und Essplatz, teilweise mit

Essen &amp; Trinken: Bar, Frühstück möglich, Halbpension, Küche (Allergiker), Küche (Diät), Küche (regionale Produkte), Restaurant im Hause..

INTERNATIONAL MANAGEMENT (IM) The PDW Program includes the teaching and paper development workshop on Friday, and the doctoral, junior faculty, and mid-career faculty consortia

ƒ ƒ A snake falls into the closest A snake falls into the closest local local energy energy