36
Middleware-Konzepte Kommunikation Dr. Gero Mühl Kommunikations- und Betriebssysteme Fakultät für Elektrotechnik und Informatik Technische Universität Berlin

Dr. Gero Mühl€¦ · Middleware-Konzepte Kommunikation Dr. Gero Mühl Kommunikations- und Betriebssysteme Fakultät für Elektrotechnik und Informatik Technische Universität Berlin

  • Upload
    others

  • View
    8

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Dr. Gero Mühl€¦ · Middleware-Konzepte Kommunikation Dr. Gero Mühl Kommunikations- und Betriebssysteme Fakultät für Elektrotechnik und Informatik Technische Universität Berlin

Middleware-Konzepte

Kommunikation

Dr. Gero Mühl

Kommunikations- und BetriebssystemeFakultät für Elektrotechnik und InformatikTechnische Universität Berlin

Page 2: Dr. Gero Mühl€¦ · Middleware-Konzepte Kommunikation Dr. Gero Mühl Kommunikations- und Betriebssysteme Fakultät für Elektrotechnik und Informatik Technische Universität Berlin

Middleware-Konzepte © Gero Mühl 2

Übersicht

> Nachrichtenaustausch> Zuverlässigkeit> Synchrone vs. asynchrone Kommunikation> Nachrichtenreihenfolge> Transiente vs. persistente Kommunikation

> Externe Datenrepräsentation> ASN.1> Java Object Serialization> XML-basierte Serialisierung

Page 3: Dr. Gero Mühl€¦ · Middleware-Konzepte Kommunikation Dr. Gero Mühl Kommunikations- und Betriebssysteme Fakultät für Elektrotechnik und Informatik Technische Universität Berlin

Nachrichtenaustausch

Page 4: Dr. Gero Mühl€¦ · Middleware-Konzepte Kommunikation Dr. Gero Mühl Kommunikations- und Betriebssysteme Fakultät für Elektrotechnik und Informatik Technische Universität Berlin

Middleware-Konzepte © Gero Mühl 4

Nachrichtenaustausch

> Nachricht

> Programmierung> send(nachricht) Senden einer Nachricht> receive(nachricht) Empfangen einer Nachricht> Callbacks sind eine Alternative zur receive-Anweisung

> Implementierung durch Kommunikationssystem (KS)> Abstrahiert von unterliegenden Schichten und bietet API> Oft für verschiedenste Programmiersprachen vorhanden> Urform: UNIX Sockets

Empfänger Absender Typ Daten

Page 5: Dr. Gero Mühl€¦ · Middleware-Konzepte Kommunikation Dr. Gero Mühl Kommunikations- und Betriebssysteme Fakultät für Elektrotechnik und Informatik Technische Universität Berlin

Middleware-Konzepte © Gero Mühl 5

Zuverlässigkeit

> Nachrichtenverluste (unbeabsichtigte)> (a) unerkannt, (b) gemeldet, (c) automatisch korrigiert> Implementierung von (b) und (c) durch das KS mittels

Sequenznummern, Bestätigungen (negative, positive), Wiederholungen, Timeouts

> Nachrichtenverfälschungen (unbeabsichtigte)> (a) unerkannt, (b) gemeldet, (c) automatisch korrigiert> Implementierung von (b) durch das KS mittels Prüfsummen> Implementierung von (c) durch das KS mittels

fehlerkorrigierender Codes (Redundanz erlaubt verfälschte Nachrichten zu rekonstruieren) oder durch Wiederholungen

Page 6: Dr. Gero Mühl€¦ · Middleware-Konzepte Kommunikation Dr. Gero Mühl Kommunikations- und Betriebssysteme Fakultät für Elektrotechnik und Informatik Technische Universität Berlin

Middleware-Konzepte © Gero Mühl 6

Zuverlässigkeit

> Zur Erkennung mutwilliger Nachrichtenverluste und Nachrichtenverfälschungen sind verschlüsselte Sequenznummern bzw. verschlüsselte Prüfsummen (z.B. verschlüsselte SHA2-Prüfsumme) geeignet

> Das Warten auf Wiederholungen von Nachrichten führt aus Applikationssicht zu erhöhten Nachrichtenlaufzeiten

Page 7: Dr. Gero Mühl€¦ · Middleware-Konzepte Kommunikation Dr. Gero Mühl Kommunikations- und Betriebssysteme Fakultät für Elektrotechnik und Informatik Technische Universität Berlin

Middleware-Konzepte © Gero Mühl 7

Blockierende Operationen?

> Blockieren nach Aufruf von send bis Nachricht …> übernommen vom lokalen KS?> übernommen vom entfernten KS?> übernommen vom Empfänger-Prozess?> bearbeitet vom Empfänger-Prozess?

> Blockieren nach Aufruf von receive …> nur Abtesten ob Nachricht verfügbar (ohne zu blockieren)> nur gewisse Zeit blockieren (Timeout)> blockieren bis Nachricht verfügbar

(meist verwendet, vermeidet Busy Waiting)

Page 8: Dr. Gero Mühl€¦ · Middleware-Konzepte Kommunikation Dr. Gero Mühl Kommunikations- und Betriebssysteme Fakultät für Elektrotechnik und Informatik Technische Universität Berlin

Middleware-Konzepte © Gero Mühl 8

Synchrone Kommunikation

> Sender blockiert bis receive auf Empfängerseite erfolgt ist> Empfänger blockiert bis send auf Senderseite erfolgt ist⇒ Zu einem Zeitpunkt gleichzeitige Blockierung! Rendezvous> Transparente Implementierung durch KS (mittels Bestätigung)> Blockieren gleicht Geschwindigkeitsunterschiede zwischen Sender und

Empfänger aus!

Sender blockiert Nachrichtsend(...)

receive(...)

P1 P2

Empfänger blockiert

send(...)

receive(...)Rendezvous

Page 9: Dr. Gero Mühl€¦ · Middleware-Konzepte Kommunikation Dr. Gero Mühl Kommunikations- und Betriebssysteme Fakultät für Elektrotechnik und Informatik Technische Universität Berlin

Middleware-Konzepte © Gero Mühl 9

Synchrone Kommunikation

> Vorteile synchroner Kommunikation> Sender weiß, dass Empfänger Nachricht erhalten hat> Nur eine Nachricht muss gepuffert werden> Ausgleich unterschiedlicher Geschwindigkeiten von Sender und

Empfänger durch Warten> Nachteile

> Enge Kopplung: Sender und Empfänger müssen gleichzeitig laufen> Sender wird blockiert

> Geringere Parallelität oder komplexes Multi Threading> Deadlock-Gefahr

> Request/Reply-Kommunikation kombiniert das Senden eines Requests mit dem Empfangen des zugehörigen Replies in einer Anweisung

Page 10: Dr. Gero Mühl€¦ · Middleware-Konzepte Kommunikation Dr. Gero Mühl Kommunikations- und Betriebssysteme Fakultät für Elektrotechnik und Informatik Technische Universität Berlin

Middleware-Konzepte © Gero Mühl 10

Asynchrone Kommunikation> Keine Blockierung des Senders> Jeweiliges KS puffert die ausgehenden Nachrichten beim Sender und die

eingehenden Nachrichten beim Empfänger> Sendepuffer ermöglicht vorübergehend schneller zu Senden, als

Nachrichten übertragen werden können> Empfangspuffer ermöglicht vorübergehend schneller zu Empfangen,

als Nachrichten vom Empfänger abgenommen werden können> Achtung: Puffer gleichen die Geschwindigkeitsvarianz von Sender und

Empfänger aus, nicht aber dauerhafte Geschwindigkeitsunterschiede!

P1Message

Message

P2

receive(...)

send(...)receive(...)

send(...)

Page 11: Dr. Gero Mühl€¦ · Middleware-Konzepte Kommunikation Dr. Gero Mühl Kommunikations- und Betriebssysteme Fakultät für Elektrotechnik und Informatik Technische Universität Berlin

Middleware-Konzepte © Gero Mühl 11

Asynchrone Kommunikation

> Vorteile> Sender und Empfänger müssen nicht gleichzeitig laufen

Losere Kopplung> Höherer Grad an Parallelität möglich> Gefahr von Deadlocks geringer

> Nachteile> Sender weiß nicht, ob oder wann eine Nachricht

angekommen ist> Synchronisation schwieriger> Puffer können überlaufen> Schwierigere Programmierung

Page 12: Dr. Gero Mühl€¦ · Middleware-Konzepte Kommunikation Dr. Gero Mühl Kommunikations- und Betriebssysteme Fakultät für Elektrotechnik und Informatik Technische Universität Berlin

Middleware-Konzepte © Gero Mühl 12

Asynchrone mittels synchroner Kommunikation

> Pufferprozess wird zwischengeschaltet> Speichert empfangene Nachrichten in einem Ringpuffer> Sendet gepufferte Nachrichten an Empfänger> Pufferprozess läuft am sinnvollsten auf dem Rechner des Senders

> Problem> Soll der Pufferprozess in einem receive auf weitere Nachrichten

vom Sender warten oder in einem send auf die Abnahme einer Nachricht vom Empfänger?

P1 P2

Puffer

send(msg) receive(msg)msg msg

ack ack

first(msg)send(msg)

receive(msg)push(msg)

Page 13: Dr. Gero Mühl€¦ · Middleware-Konzepte Kommunikation Dr. Gero Mühl Kommunikations- und Betriebssysteme Fakultät für Elektrotechnik und Informatik Technische Universität Berlin

Middleware-Konzepte © Gero Mühl 13

Nachrichtenreihenfolge

> Kommunikationssystem kann Garantien geben, dass Nachrichten beim Empfänger in einer bestimmten Ordnung (d.h. Reihenfolge) eintreffen> FIFO-Sender Ordnung> Kausale Ordnung (impliziert FIFO-Sender)> Totale Ordnung (ist orthogonal zu den anderen beiden

Ordnungen) kann mit FIFO-Sender- oder auch mit kausaler Ordnung kombiniert werden

Page 14: Dr. Gero Mühl€¦ · Middleware-Konzepte Kommunikation Dr. Gero Mühl Kommunikations- und Betriebssysteme Fakultät für Elektrotechnik und Informatik Technische Universität Berlin

Middleware-Konzepte © Gero Mühl 14

Transiente vs. Persistente Kommunikation

> transient = vergänglich, flüchtigpersistent = anhaltend, dauernd

> Transiente Kommunikation> Kommunikationssystem speichert Nachrichten nicht über die

Lebenszeit von Sender und Empfänger hinaus

> Persistente Kommunikation> Kommunikationssystem speichert Nachrichten über die

Lebenszeit des Senders hinaus, bis sie dem Empfänger zugestellt werden können Queues

Page 15: Dr. Gero Mühl€¦ · Middleware-Konzepte Kommunikation Dr. Gero Mühl Kommunikations- und Betriebssysteme Fakultät für Elektrotechnik und Informatik Technische Universität Berlin

Externe Datenrepräsentation

Page 16: Dr. Gero Mühl€¦ · Middleware-Konzepte Kommunikation Dr. Gero Mühl Kommunikations- und Betriebssysteme Fakultät für Elektrotechnik und Informatik Technische Universität Berlin

Middleware-Konzepte © Gero Mühl 16

Motivation

> Sockets unterstützen per se nur den Transport von Byteströmen bzw. Bytearrays

> Bei der Nutzung von Sockets muss der Programmierer händisch> Die Struktur der Datenströme bzw. Nachrichtentypen festlegen> Die zu versendenden Applikationsdaten in Bytes umwandeln

(aka. Serialisierung, Marshalling)> Die empfangenen Bytes wieder zurück in Applikationsdaten

umwandeln (aka. Deserialisierung, Unmarshalling)> Bei verketteten, im Speicher nicht zusammenhängenden,

Datenstrukturen ist dies nicht trivial („Deep Copy“ vs. „Shallow Copy“)

> Heterogenität macht alles noch deutlich komplexer!

Page 17: Dr. Gero Mühl€¦ · Middleware-Konzepte Kommunikation Dr. Gero Mühl Kommunikations- und Betriebssysteme Fakultät für Elektrotechnik und Informatik Technische Universität Berlin

Middleware-Konzepte © Gero Mühl 17

Motivation

> Sinnvoll wäre eine Bibliothek mit Routinen> zur Serialisierung und Deserialisierung von

> primitiven Datentypen,> zusammengesetzte Datentypen (z.B. Arrays) und> für verkettete Datenstrukturen (z.B. Listen und Graphen)

> zum Senden und Empfangen ganzer Nachrichten, inklusive der enthaltenen Datenstrukturen falls notwendig auch mit automatischer Fragmentierung beim Sender bzw. Defragmentierung beim Empfänger

> Die Bibliothek müsste für verschiedenste Hardware, Betriebssysteme und Programmiersprachen verfügbar sein, um auch in heterogenen Systemen anwendbar zu sein

⇒ Externe Datenrepräsentationen

Page 18: Dr. Gero Mühl€¦ · Middleware-Konzepte Kommunikation Dr. Gero Mühl Kommunikations- und Betriebssysteme Fakultät für Elektrotechnik und Informatik Technische Universität Berlin

Middleware-Konzepte © Gero Mühl 18

> Verschiedene Hardware-Architekturen speichern die Bytes eines Wortes (hier 32 Bit) in unterschiedlicher Reihenfolge

> Little Endian (z.B. Intel x86) vs. Big Endian (z.B. Motorola G4) am Beispiel des Wertes 0xA0B0C0D0

Heterogenität – Hardware

D0 C0 B0 A0

A0 B0 C0 D0

0 1 2 3Adresse

Little Endian

Big Endian

Page 19: Dr. Gero Mühl€¦ · Middleware-Konzepte Kommunikation Dr. Gero Mühl Kommunikations- und Betriebssysteme Fakultät für Elektrotechnik und Informatik Technische Universität Berlin

Middleware-Konzepte © Gero Mühl 19

Heterogenität – Programmiersprachen

> Verschiedene Programmiersprachen speichern Datentypen unterschiedlich> Z.B. String „ABC“

⇒ Beim Datenaustausch muss passend konvertiert werden

A B C 0 C++

Pascal3 A B C

Adresse

Page 20: Dr. Gero Mühl€¦ · Middleware-Konzepte Kommunikation Dr. Gero Mühl Kommunikations- und Betriebssysteme Fakultät für Elektrotechnik und Informatik Technische Universität Berlin

Middleware-Konzepte © Gero Mühl 20

Transformation zwischen Darstellungen

> Heterogenität der lokalen Repräsentationen⇒ Transformation zwischen verschiedenen Darstellungen

notwendig> Hierbei gehen evtl. Informationen verloren> 2 mögliche Realisierungen (s. nächste 2 Folien)

S2

S1

Page 21: Dr. Gero Mühl€¦ · Middleware-Konzepte Kommunikation Dr. Gero Mühl Kommunikations- und Betriebssysteme Fakultät für Elektrotechnik und Informatik Technische Universität Berlin

Middleware-Konzepte © Gero Mühl 21

1. Möglichkeit: Paarweise Transformation

> Paarweise Transformation zwischen n verschiedenen lokalen Repräsentationen

> Entweder Sender oder Empfänger muss transformieren> „Sender makes it right“ vs. „Receiver makes it right“⇒ eine Transformation pro Kommunikation

⇒ n2 – n verschiedene TransformationenS1

S2

S3

Sn

S1

S2

S3

Sn

Page 22: Dr. Gero Mühl€¦ · Middleware-Konzepte Kommunikation Dr. Gero Mühl Kommunikations- und Betriebssysteme Fakultät für Elektrotechnik und Informatik Technische Universität Berlin

Middleware-Konzepte © Gero Mühl 22

2. Möglichkeit: Kanonische Repräsentation

C

S1

S2

S3

Sn

S1

S2

S3

Sn

> Verwendung einer kanonischen Datenrepräsentation C> Keine Informationen über die Repräsentation des Gegenübers

notwendig> Nur n verschiedene Transformationen für jede der beiden

Richtungen (nach C, von C) notwendig> 2 Transformationen pro Kommunikation notwendig

(jeweils von Si nach C und von C nach Sj) mehr Aufwand

Page 23: Dr. Gero Mühl€¦ · Middleware-Konzepte Kommunikation Dr. Gero Mühl Kommunikations- und Betriebssysteme Fakultät für Elektrotechnik und Informatik Technische Universität Berlin

Middleware-Konzepte © Gero Mühl 23

Bsp.: ISO Standard Abstract Syntax Notation.1 (ASN.1)

ASN.1DownloadSegment-Response ::=SEQUENCE ::= {

loadData OCTET STRING,moreFollows BOOLEAN

}

ModulaTYPE DLseq

RECORDloadDT: ARRAY [1..512]

OF CHAR;more: BOOLEAN;

END

typedef struct{ char *ld_data;

int more;} dlseq;

CEncoding Rules

Abstrakte Syntax

(konkrete) Transfersyntax

KonkreteSyntax (lokal)

KonkreteSyntax (lokal)

ASN.1 Compiler

Page 24: Dr. Gero Mühl€¦ · Middleware-Konzepte Kommunikation Dr. Gero Mühl Kommunikations- und Betriebssysteme Fakultät für Elektrotechnik und Informatik Technische Universität Berlin

Middleware-Konzepte © Gero Mühl 24

ASN.1

> Abstract Syntax> Beschreibt die allgemeine Struktur von Daten

(unabhängig von Programmiersprachen etc.)

> Concrete Syntax> Beschreibt die lokale Darstellung der Daten

(abhängig von Programmiersprache etc.)

> Transfer Syntax> Beschreibt die Darstellung der Daten bei der Übertragung

(z.B. als Tripel <Datentyp, Byteanzahl, Bytes>)

> Encoding Rules (z.B. Basic Encoding Rules (BER))> Beschreiben die Umwandlung von der konkreten in die

Transfer Syntax

Page 25: Dr. Gero Mühl€¦ · Middleware-Konzepte Kommunikation Dr. Gero Mühl Kommunikations- und Betriebssysteme Fakultät für Elektrotechnik und Informatik Technische Universität Berlin

Middleware-Konzepte © Gero Mühl 25

ASN.1 Compiler

> Überprüft die Syntax einer Abstract Syntax Specification> Erzeugt aus der Abstract Syntax die Concrete Syntax

(z.B. für C)> Erzeugt die Routinen für Codierung/Decodierung

(z.B. in C)

Page 26: Dr. Gero Mühl€¦ · Middleware-Konzepte Kommunikation Dr. Gero Mühl Kommunikations- und Betriebssysteme Fakultät für Elektrotechnik und Informatik Technische Universität Berlin

Middleware-Konzepte © Gero Mühl 26

Basic Encoding Rules (BER) for ASN.1

> Daten werden als Folge von Oktetts (= Bytes) kodiert

> TLV-Codierung

Tag Length

Class f Number

Value

0 primitiver Typ1 zusammengesetzte Kodierung

00 UNIVERSAL01 APPLICATION10 kontextspezifisch

11 PRIVATE

2 + 1+ 5 Bits

1 Boolean2 Integer3 Bitstring…

Page 27: Dr. Gero Mühl€¦ · Middleware-Konzepte Kommunikation Dr. Gero Mühl Kommunikations- und Betriebssysteme Fakultät für Elektrotechnik und Informatik Technische Universität Berlin

Middleware-Konzepte © Gero Mühl 27

Basic Encoding Rules

> Beispiel:> Zwei Werte für BOOLEAN

> FALSE = 0000 0000 TRUE ≠ 0000 0000

> Kodierung mit TLV

00 0 00001 0 0000001 0000 0000FALSE

00 0 00001 0 0000001 1010 1000TRUE

T VL

Page 28: Dr. Gero Mühl€¦ · Middleware-Konzepte Kommunikation Dr. Gero Mühl Kommunikations- und Betriebssysteme Fakultät für Elektrotechnik und Informatik Technische Universität Berlin

Middleware-Konzepte © Gero Mühl 28

Basic Encoding Rules

> Beispiel INTEGER (im 2er-Komplement, Big Endian)

00 0 00010 0 0000001 0100 111078

00 0 00010 0 0000010 1111 1110-296 1101 1000

> Beispiel SEQUENCE S ::= SEQUENCE { p1 Typ1, p2 Typ2 }

00 1 10000 x..Länge..x Tag Typ 1 Länge p1 Wert p1

Tag Typ 2 Länge p2 Wert p2

oder

00 1 10000 1 0000000 Tag Typ 1 Länge p1 Wert p1

Tag Typ 2 Länge p2 Wert p2 0000 0000 0000 0000

Page 29: Dr. Gero Mühl€¦ · Middleware-Konzepte Kommunikation Dr. Gero Mühl Kommunikations- und Betriebssysteme Fakultät für Elektrotechnik und Informatik Technische Universität Berlin

Middleware-Konzepte © Gero Mühl 29

Java Object Serialization

> Erlaubt die streambasierte Übertragung von serialisierten Objekten> Z.B. über TCP- oder UDP-Sockets oder als Parameter bei Java RMI

> Zu serialisierende Klassen müssen das Markerinterface java.io.Serializable implementieren (auch alle Klassenfelder)

> Auf Java beschränkt!> Empfänger muss (Zugriff auf) Implementierungen der Klassen haben> Serialisierung benötigt vom Entwickler einer Klasse keinen Klassen-

spezifischen Code> Benutzt die Reflektions-Mechanismen von Java

> Binäres Format> Beinhaltet Meta-Informationen> Kommt auch mit zyklischen Datenstrukturen zurecht

> Jedes Objekt wird einmal geschrieben und ihm wird eine Referenz zugewiesen

> Rückwärtsverweise auf Referenzen für bereits geschriebene Objekte

Page 30: Dr. Gero Mühl€¦ · Middleware-Konzepte Kommunikation Dr. Gero Mühl Kommunikations- und Betriebssysteme Fakultät für Elektrotechnik und Informatik Technische Universität Berlin

Middleware-Konzepte © Gero Mühl 30

Java Object Serialization> Spezielle Darstellungen für null Objekte, neue Objekte,

Klassen, Arrays, Strings und Rückwertsverweise > Es ist wichtig zu wissen, von welcher Klasse ein Objekt ist!

> Stream enthält auch Informationen über alle geschriebenen Klassen, deren Version und deren Superklassen (falls serialisierbar) ⇒ Instanzen der Klasse ObjectStreamClass

> Ermöglicht dem Empfänger auch, die benötigten Klassen zu laden> Ein Reset des Streams löscht die Informationen über bereits

geschriebene Objekte (und Klassen)> Ermöglicht die neuerliche Übertragung von (z.B. geänderten)

Objekten> Ineffizient, da Klasseninformationen auch gelöscht werden

> Objekt-Implementierungen können Serialisierung durch Implementierung spezieller Methoden beeinflussen

Page 31: Dr. Gero Mühl€¦ · Middleware-Konzepte Kommunikation Dr. Gero Mühl Kommunikations- und Betriebssysteme Fakultät für Elektrotechnik und Informatik Technische Universität Berlin

Middleware-Konzepte © Gero Mühl 31

Klonen mittels Serialisierungpublic class ObjectCloner {

public static byte[] toByteArray(Object obj) throws IOException {ByteArrayOutputStream baos =

new ByteArrayOutputStream();ObjectOutputStream oos =

new ObjectOutputStream(baos);oos.writeObject(obj); oos.flush(); baos.flush();return baos.toByteArray();

}

public static Object fromByteArray(byte[] ba) throws IOException, ClassNotFoundException {

ByteArrayInputStream bais = new ByteArrayInputStream(ba);

return new ObjectInputStream(bais).readObject();}

Page 32: Dr. Gero Mühl€¦ · Middleware-Konzepte Kommunikation Dr. Gero Mühl Kommunikations- und Betriebssysteme Fakultät für Elektrotechnik und Informatik Technische Universität Berlin

Middleware-Konzepte © Gero Mühl 32

Klonen mittels Serialisierungpublic static Object clone(Object obj) {

Object clone = null;try {

clone = fromByteArray(toByteArray(obj));} catch (Exception exception) {

exception.printStackTrace();}return clone;

}

public static void main(String[] args) {Date d = new Date();Date d2 = (Date)ObjectCloner.clone(d);System.out.println(d==d2); // false

}}

Page 33: Dr. Gero Mühl€¦ · Middleware-Konzepte Kommunikation Dr. Gero Mühl Kommunikations- und Betriebssysteme Fakultät für Elektrotechnik und Informatik Technische Universität Berlin

Middleware-Konzepte © Gero Mühl 33

Gleichheitstests mittels Serialisierungpublic class ObjectComparer {

public static boolean equals(Object obj1, Object obj2) {boolean b = false;try {

byte[] ba1 = ObjectCloner.toByteArray(obj1);byte[] ba2 = ObjectCloner.toByteArray(obj2);return Arrays.equals(ba1,ba2);

} catch (Exception exeption) { // ignored }return b;

}

public static void main(String[] args) {Date d = new Date();Date d2 = (Date)ObjectCloner.clone(d);System.out.println(ObjectComparer.equals(d,d2)); // true

}}

Page 34: Dr. Gero Mühl€¦ · Middleware-Konzepte Kommunikation Dr. Gero Mühl Kommunikations- und Betriebssysteme Fakultät für Elektrotechnik und Informatik Technische Universität Berlin

Middleware-Konzepte © Gero Mühl 34

XML-basierte Serialisierung

> eXtensible Markup Language (XML)> XML-Dokumente

> Sind hierarchisch strukturiert> Enthalten Informationen über die eigene Struktur > Basieren auf Klartext

> „Menschen-lesbar“> Wiederherstellung archivierter Dokumente leichter> Größere Länge als binäre Formate

> XML-Parser und andere XML-Tools können genutzt werden

Page 35: Dr. Gero Mühl€¦ · Middleware-Konzepte Kommunikation Dr. Gero Mühl Kommunikations- und Betriebssysteme Fakultät für Elektrotechnik und Informatik Technische Universität Berlin

Middleware-Konzepte © Gero Mühl 35

XML-basierte Serialisierung<?xml version='1.0' encoding='UTF-8'?>

<!DOCTYPE koml SYSTEM "http://koala.ilog.fr/XML/koml12.dtd"><koml version='1.2'>

<classes><class name='java.net.URL'>

<field name='port' type='int'/><field name='file' type='java.lang.String'/><field name='host' type='java.lang.String'/><field name='protocol' type='java.lang.String'/>

</class></classes><object class='java.net.URL' id='i2'>

<value type='int' name='port'>80</value><value type='java.lang.String‘ name='file'>/koala/XML/</value><value type='java.lang.String‘ name='host'>www.inria.fr</value><value type='java.lang.String' name='protocol'>http</value>

</object></koml>

Page 36: Dr. Gero Mühl€¦ · Middleware-Konzepte Kommunikation Dr. Gero Mühl Kommunikations- und Betriebssysteme Fakultät für Elektrotechnik und Informatik Technische Universität Berlin

Middleware-Konzepte © Gero Mühl 36

Literatur1. Sun Microsystems, Inc. Java Object Serialization Specification 1.5.0, 2004.

http://java.sun.com/j2se/1.5.0/docs/guide/serialization/spec/serial-title.html.2. O. Dubuisson. ASN.1 Communication between Heterogeneous Systems. Morgan

Kaufmann Publishers, 2000. translated from French by Philippe Fouquart.http://asn1.elibel.tm.fr/en/book/http://www.oss.com/asn1/booksintro.html

3. M. Campione, K. Walrath, and A. Huml. The Java Tutorial. The Java Series. Addison-Wesley, 3rd edition, 2001. http://java.sun.com/docs/books/tutorial/