XML - Lab4Inf

Werbung
Einführung in die
Informatik II
eXtensible Markup Language XML.
Die Lingua Franca des Internets und einige ihrer Anwendungsgebiete
Prof. Dr. Nikolaus Wulff
Information und Dokumente
• Aus Anwendersicht findet Datenaustausch, nicht per
TCP/IP sondern durch Dokumente statt.
• Ein Dokument besteht aus dem eigentlichen Text –
der Information –, der (logischen) Struktur und der
Formatierung.
• Diese werden von den meisten Textverarbeitungssystemen in einem properitäten Dateiformat gespeichert.
Format
Struktur
Dokument
Prof. Dr. Nikolaus Wulff
Inhalt
Informatik II
2
Die MIME-Typen
• Zum Dateiaustausch muss deren Typ bekannt sein.
• Festgelegt wurden im RFC 2045 die MIME-Typen
(Multipurpose Internet Mail Extensions).
• MIME-Typen spezifizieren im HTTP Header die Art
des ausgetauschten Dokumentes und den Schriftsatz:
Content-Type: Haupttyp/Subtyp *(; parameter)
• Beispiele:
Content-Type: application/pdf
Content-Type: text/plain; charset=us-ascii
Content-Type: text/html; charset=UTF-8
Content-Type: text/xml
siehe die Screenshots
Content-Type: image/jpeg
von Wireshark HTTP
Prof. Dr. Nikolaus Wulff
Informatik II
3
Ein einheitliches Datenformat
• Einige Datenformate wie MS-Worddokumente oder
Adobe pdf-Dateien sind quasi Standards geworden.
• Gewünscht wurde eine plattformneutrale, generelle
Auszeichnungssprache die beliebig erweiterbar ist.
1950: Hypertext
1986: Standard Generalized
Markup Language
1989: HTML
1994: Cascading Style Sheets
1998: Extensible Markup
Language
1998: Extensible Style
Language
Prof. Dr. Nikolaus Wulff
Informatik II
Entwicklung der Theorie
SGML als ISO 8879
(zu schwerfällig...)
Entwickelt am CERN
XML 1.0 als Standard
XSL+XSLT zur Verarbeitung von XML Dokumenten
4
Ein XML Beispiel
<bundespraesidenten>
<bundespraesident>
<amtsperiode von="1959" bis="1969"/>
<name>
<vorname>Heinrich</vorname>
<nachname>Lübke</nachname>
</name>
</bundespraesident>
<bundespraesident>
<amtsperiode von="1969" bis="1974"/>
<name>
<titel>Dr. </titel>
<vorname>Gustav</vorname>
<nachname>Heinemann</nachname>
</name>
<bundespraesident>
<!-- viele weitere folgen ... -->
</bundespraesidenten>
Prof. Dr. Nikolaus Wulff
Informatik II
XML sieht aus wie
ein besser lesbares
„sauberes HTML“
5
Strukturierung von XML
• XML Dokumente bilden eine hierarchische Baumstruktur mit genau einer Element-Wurzel.
• In XML können eigene (sprechende) Markup-Tags /
Elemente definiert werden.
• Gross- und Kleinschrift wird unterschieden.
• Alle Elemente (Tags) müssen geschlossen werden.
• Attribute müssen Schlüssel-Wert-Paare enthalten,
diese werden in einfache oder doppelte Anführungszeichen gesetzt.
• Elemente müssen korrekt verschachtelt werden:
<b><i>richtig</i></b>
Prof. Dr. Nikolaus Wulff
<b><i>falsch</b></i>
Informatik II
6
Fehlerfreies XML
• XML ist eine Meta-Sprache, mit ihr werden konkrete
Sprachen wie (X)HTML oder XSL beschrieben.
• XML Dokumente müssen „wohlgeformt“ sein, d.h.
allen XML Regeln genügen.
• „Gültige“ XML Dokumente werden durch eine
Dokumenttyp-Definition (DTD) oder neuerdings
zunehmend durch eine XML-Schema Definition
(XSD) definiert, die festlegen was in dem Dokument
vorkommen darf und was nicht.
• Durch diese Definition ist es möglich Dokumente
eindeutig automatisch mit einem Parser zu validieren.
Prof. Dr. Nikolaus Wulff
Informatik II
7
Beispiel interne DTD
• Das einfachste wohlgeformte und gültige XMLDokument:
<?xml version="1.0" standalone="yes" ?>
<!DOCTYPE beispiel [
<!ELEMENT sayhello (#CDATA)>
]>
<sayhello>
Hello World geht immer...
</sayhello>
• Die DTD ist direkt innerhalb des Dokuments
integriert und beschreibt alle Elemente.
• CDATA steht für beliebige Zeichen, PCDATA
bedeutet die Zeichen werden geparsed...
Prof. Dr. Nikolaus Wulff
Informatik II
8
DTD Beispiel
<!ELEMENT bundespraesidenten (bundespraesident+)>
<!ELEMENT bundespraesident (amtsperiode, name) >
<!ELEMENT name (titel*, vorname, nachname)>
<!ELEMENT titel (#PCDATA)>
<!ELEMENT vorname (#PCDATA)>
<!ELEMENT nachname (#PCDATA)>
<!ELEMENT amtsperiode EMPTY>
<!ATTLIST amtsperiode
von CDATA #REQUIRED
bis CDATA #REQUIRED
>
• Alle Elemente der Bundespräsidenten XML Liste sind
genau spezifiziert.
• Allerdings ist eine DTD wieder in einem eigenständigen zu erlernenden Format geschrieben ...
Prof. Dr. Nikolaus Wulff
Informatik II
9
XML + DTD Beispiel
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE bundespraesidenten SYSTEM "bundespraesidenten.dtd">
<bundespraesidenten>
<bundespraesident>
<amtsperiode von="1959" bis="1969"/>
<name>
<vorname>Heinrich</vorname>
<nachname>Lübke</nachname>
</name>
</bundespraesident>
<bundespraesident>
<amtsperiode von="1969" bis="1974"/>
...
• Deklaration als XML Version 1.0 und Angabe der
externen DTD im Systempfad des Dokumentes...
Prof. Dr. Nikolaus Wulff
Informatik II
10
(X)HTML per DTD
• Eine (nicht vollständige) Definition eines gültigen
HTML Dokuments könnte so aussehen:
<!ELEMENT html (head, body)>
<!ELEMENT hr EMPTY>
<!ELEMENT br EMPTY>
<!ELEMENT p (#PCDATA | p | ul | ol | dl | table | pre | hr |
h1|h2|h3|h4|h5|h6 | blockquote | address | fieldset)*>
<!ELEMENT dl (dt|dd)+>
• Elemente werden innerhalb der Klammern definiert.
• Komma erzwingen eine Reihenfolge, das Zeichen |
eine Auswahl und + und * beschreiben die Kardinalitäten (1:n) (0:n).
Prof. Dr. Nikolaus Wulff
Informatik II
11
XHMTL Beispiel
• Auch XHTML wird per DTD beschreiben
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C/DTD/ XHML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>XHTML Beispiel</title>
</head>
<body>
<h1>XHTML</h1>
XHML als Nachfolger von HTML ist XML konform. <br/>
</body>
</html>
• XHTML ist wohlgeformt und per DTD als gültiges
XML Dokument validierbar.
• Alle Elemente werden klein geschrieben...
Prof. Dr. Nikolaus Wulff
Informatik II
12
XML + XSLT
• Mit Hilfe von XSL bzw. den entsprechenden XSLT
Transformatoren lassen sich XML Dokumente in
andere Formate überführen, z.B. von XML nach
(x)HTML:
XSLT
Prozessor
XML
HTML
DTD
XSL
Prof. Dr. Nikolaus Wulff
Informatik II
13
MV(C) mit XML/XSLT
• Die XML/XSLT Technologie erlaubt eine ganz neue
Form des MV(c) Musters.
• Das XML Dokument dient als Datenbasis (Modell).
• Per XSLT werden entsprechende Views für die unterschiedlichen Zielplattformen generiert z.B. PDF,
XHTML oder WML für wireless Handys.
• Es müssen für ein und dasselbe Dokument nur verschiedene XSL Transformationsvorschriften definiert
werden. Diese sind auch XML Dateien.
• Viele Web-Portale arbeiten mit dieser Technologie.
Prof. Dr. Nikolaus Wulff
Informatik II
14
Beispiel: Die Lab4Inf Web-Site
• Die aktuellen Inhalte (das Modell) der Lab4Inf WebSite sind in XML definiert:
<lab4inf>
<category id='lectures' name='Lectures'>
<mapping name='Informatik I'
url='index.php/lecture.cmd?subject=info_1'/>
<mapping name='Informatik II'
url='index.php/lecture.cmd?subject=info_2'/>
<mapping name='Prog. in C'
url='index.php/lecture.cmd?subject=prog_in_c'/>
<mapping name='Prog. in Java'
url='index.php/lecture.cmd?subject=prog_in_java'/>
• Hieraus wird dann die HTML Web-Seite generiert...
Prof. Dr. Nikolaus Wulff
Informatik II
15
Vom XML zum HTML
• Die XML-Definition wird als Menuliste angezeigt:
Prof. Dr. Nikolaus Wulff
Informatik II
16
Simple API for XML
• XML Dokumente sind als hierarchischer Baum
aufgebaut, der von einem Parser analysiert wird.
• Die am häufigsten eingesetzte Methode hierzu ist die
Simple API for XML (SAX) , die für verschiedene
Programmiersprachen wie Java, C++, PHP etc.
implementiert wurde.
• Ein SAX Parser verwendet eine sogenannte Callback
Schnittstelle, den org.xml.sax.ContentHandler, die
vom Parser gerufen wird bei den Ereignissen:
– start/endDocument
– start/endElement
– characters
Prof. Dr. Nikolaus Wulff
Informatik II
17
SAX mit PHP
function startElement($namespaceURI, $localName, $qName, $attributes) {
switch($qName) {
case ('lab4inf'):
break;
case ('category'):
$id = $attributes['id'];
$name = $attributes['name'];
$this->item = new Category($id,$name);
break;
case ('lecture'):
$id = $attributes['id'];
$name = $attributes['name'];
$this->item = new Lecture($id,$name);
break;
• Auszug aus dem Lab4Inf Configurator in PHP
• Ob PHP oder Java, das Prinzip bleibt das Selbe...
Prof. Dr. Nikolaus Wulff
Informatik II
18
Das Document Object Model
• SAX analysiert das Dokument sequentiell im nur
Lesemodus, im Gegensatz zum Document Object
Model (DOM), das es erlaubt den gesamten DOMBaum im Speicher zu laden und in beliebiger Reihenfolge zu modifizieren.
• Die Wurzel ist das org.w3c.dom.Document, eine
Spezialisierung der org.w3c.dom.Node Schnittstelle.
• Alle Elemente sind daher ebenfalls Knoten des XMLDokumentes und bieten eine Baum-Schnittstelle mit
Methoden wie append/removeChild(Node x).
• Sowohl SAX als auch DOM sind Bestandteil des JDK
ab der Version 1.4.
Prof. Dr. Nikolaus Wulff
Informatik II
19
XPath
• XPath definiert einen Mechanismus, um Teile eines
XML-Dokuments zu anzusprechen.
– XSLT verwendet XPath um gezielt Element- oder
Attributknoten in einem Dokument aufzufinden.
• XPath wird nicht in XML ausgedrückt, sondern
entspricht eher der Navigation innerhalb eines
Dateisystems.
• Beispiel alle Namen der Bundespräsidenten:
– bundespraesidenten/bundespraesident/name
• Bestimmte(r) Bundespräsident(en):
– .../bundespraesident/name[child::vorname='Heinrich']
Prof. Dr. Nikolaus Wulff
Informatik II
20
XSLT
• XSL bietet die Möglichkeit Templates für XML
Dokumente zu entwicken und gezielt aufzurufen.
<xsl:template match='/bundespraesidenten'>
<xsl:apply-templates select='bundespraesident' />
</xsl:template>
<xsl:template match='bundespraesident'>
Name: <xsl:value-of select='name[vorname="Heinrich"]' />
</xsl:template>
• Die match und select Ausdrücke werden mit XPath
formuliert und gelten immer relativ zum aktuellen
Knoten ('/' ist die Dokumentwurzel).
Prof. Dr. Nikolaus Wulff
Informatik II
21
Ein Java XSLT Beispiel
• Eine (XML) Liste von Definitionen soll in eine
HTML Tabelle transformiert werden.
• Zur XSLT Transformation werden zwei EingabeDateien benötigt:
– Die XML Modell Eingabedatei
– Die Datei mit den XSLT Anweisungen
– Optional eine DTD bzw. XSD Schema Datei
• Das Java Paket javax.xml.transform enthält die
wichtigen Klassen für eine XSLT Transformation.
Prof. Dr. Nikolaus Wulff
Informatik II
22
Das XML Dokument
<?xml version='1.0' encoding='ISO-8859-1' ?>
<definitions>
<definition>
<key>Java</key>
<value>Eine Programmiersprache</value>
</definition>
<definition>
<key>HTTP</key>
<value>Ein TCP/IP basiertes Protokoll</value>
</definition>
<definition>
<key>XML</key>
<value>Eine Markup Sprache</value>
</definition>
<definition>
<key>JUnit</key>
<value>Ein Testframework</value>
</definition>
</definitions>
Prof. Dr. Nikolaus Wulff
Informatik II
23
Ein XMLTransformater
import javax.xml.transform.*;
public class XMLTransformer {
// und weitere Pakete...
public void transform(Writer writer, InputStream xml,
InputStream xslt) throws TransformerException {
TransformerFactory factory = TransformerFactory.newInstance();
Result result = new StreamResult(writer);
Source source = new StreamSource(xml);
Source trafo = new StreamSource(xslt);
Transformer trans = factory.newTransformer(trafo);
trans.transform(source, result);
}
}
• Benötigt werden zwei Eingabeströme und ein
Ausgabemedium.
• Einfacher geht es nicht...
Prof. Dr. Nikolaus Wulff
Informatik II
24
Die XSLT Transformation
<?xml version='1.0' encoding='ISO-8859-1' ?>
<xsl:stylesheet version='1.0'
xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>
<xsl:output method='html' />
<xsl:template match='/'>
<html><head><title>XSLT Beispiel</title></head>
<body><h1>Tabellenausgabe</h1>
<table border='0'>
<tr><th>Key</th><th>Value</th></tr>
<xsl:apply-templates select='definitions/definition' />
</table>
</body></html>
</xsl:template>
<xsl:template match='definition'>
<tr><td> <xsl:value-of select='key' /></td>
<td>
<xsl:value-of select='value'/></td></tr>
</xsl:template>
</xsl:stylesheet>
Prof. Dr. Nikolaus Wulff
Informatik II
25
Die HTML Ausgabe
<html>
<head>
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>XSLT Beispiel</title>
</head>
<body>
<h1>Tabellenausgabe</h1>
<table border="0">
<tr>
<th>Key</th><th>Value</th>
</tr>
<tr>
<td>Java</td><td>Eine Programmiersprache</td>
</tr>
<tr>
<td>HTTP</td><td>Ein TCP/IP basiertes Protokoll</td>
</tr>
...
• Aus dem XML Dokument entsteht eine gültige
HTML Datei...
Prof. Dr. Nikolaus Wulff
Informatik II
26
Persistenz per XML
• JAXP (Java XML Processing) definiert eine ganze
Reihe von APIs zum Verarbeiten von XML
Dokumenten mit Hilfe von Java Bibliotheken.
• Java Objekte können ihren internen Status als Bytestream per Serialisierung binär in einer Datei oder mit
Hilfe von JAXB (Java XML Binding) als XML
Dokument abspeichern (bzw. aus dem Dokument als
Objekthierarchie wieder aufgebaut werden).
• Dies ist nicht so performant wie bei der Serialisierung
aber als XML Dokument leicht lesbar und portabel.
• Es gibt inzwischen auch für Datenbanken XML
Extender...
Prof. Dr. Nikolaus Wulff
Informatik II
27
Java = XSD + XSLT + XML
• Mit Hilfe von XSD und der JAXB API lassen sich
Java Klassen generieren (oder aus Java Klassen XSD
Beschreibungen). Das Objektmodell kann dann direkt
aus einem XML Dokument Ein- und Ausgelesen
werden.
XSD
XAXB
Java
XML
Prof. Dr. Nikolaus Wulff
Informatik II
28
XSD für eine Java Klasse
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:complexType name="FuzzyRule">
<xsd:sequence>
<xsd:element name="Description" type="xsd:string" minOccurs="0"
maxOccurs="1" />
<xsd:element name="Input" type="FuzzyVariable" minOccurs="1"
maxOccurs="unbounded" />
<xsd:element name="Output" type="FuzzyVariable" minOccurs="1"
maxOccurs="unbounded" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
<xsd:attribute name="enable" type="xsd:boolean" use="optional" />
</xsd:complexType>
• Der Schema-Auszug definiert die Klasse FuzzyRule
mit den Attributen und deren Kardinalitäten.
Prof. Dr. Nikolaus Wulff
Informatik II
29
Die generierte Java Klasse
// This file was generated by the JavaTM Architecture for XML (JAXB)
public class FuzzyRule {
@XmlElement(name = "Description")
protected String description;
@XmlElement(name = "Input", required = true)
protected List<FuzzyVariable> input;
@XmlElement(name = "Output", required = true)
protected List<FuzzyVariable> output;
@XmlAttribute
protected Boolean enable;
@XmlAttribute(required = true)
protected String name;
• Die Elemente der XSD Beschreibung werden zu
Attributen der Klasse und für den XML-(De)Encoder
mit Java-Annotations als @XmlElement markiert.
Prof. Dr. Nikolaus Wulff
Informatik II
30
Daten der Fuzzy Regelbasis
<?xml version="1.0" encoding="UTF-8"?>
<FuzzyRuleBase name="Beispiel Regeln"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="FuzzyRule.xsd">
<FuzzyRule name ="Rule 1">
<Input partition="velocity" variable="slow" />
<Input partition="distance" variable="small" />
<Input partition="asphalt humidity" variable="dry" />
<Output partition="acceleration" variable="neutral" />
</FuzzyRule>
<FuzzyRule name ="Rule 2">
<Input partition="velocity" variable="normal" />
<Input partition="distance" variable="small" />
<Input partition="asphalt humidity" variable="dry" />
<Output partition="acceleration" variable="light brake" />
</FuzzyRule>
Prof. Dr. Nikolaus Wulff
Informatik II
31
XML Nachrichten
• XML ist mittlerweile das Format, um Nachrichten
auszutauschen.
• „Record Layout Identifier“, Segmente und
ähnliche Konstrukte gehören der Vergangenheit an.
• XML beinhaltet nicht nur die nackte Nachricht,
sondern zugleich mit den Auszeichnungen
(Markup) die nötigen Informationen, um die
Elemente im richtigen Kontext zu verstehen.
• Die Markups können für Sender und Empfänger per
DDL oder XMLSchema einheitlich und verbindlich
festgelegt werden.
Prof. Dr. Nikolaus Wulff
Informatik II
32
HTTP als Middleware
Every DAD needs a MOM
• Während für CORBA oder EJB Architekturen
geeignete Infrastruktur zur Verteilung benötigt
wird, ist für Webanwendungen per HTTP schon
fast alles vorhanden.
• Ein nicht zu unterschätzender Kostenvorteil!
DAD: Distributed Application Development
MOM: Message oriented Middleware
Prof. Dr. Nikolaus Wulff
Informatik II
33
SOAP
• XML ist eine reine Auszeichnungssprache zum
Austausch von Nachrichten.
• XML enthält keine Möglichkeit die
Kommunikation zwischen Sender und Empfänger
zu initiieren oder zu steuern.
• Das Simple Object Access Protokol (SOAP)
schließt diese Lücke.
• SOAP ist ein XML basiertes Nachrichtenformat,
das es gestattet z. B. per HTTP Protokoll Methoden
des Servers aufzurufen und mit entsprechenden
SOAP Nachrichten zu parametrisieren.
Prof. Dr. Nikolaus Wulff
Informatik II
34
Ab geht die Post...
• SOAP funktioniert wie die Post:
– Das Versenden ist unabhängig vom Inhalt nur gesteuert
durch die entsprechenden Angaben von Adressat und
Adressenten.
– Die eigentliche Nachricht wird in den entsprechend
frankierten Briefumschlag gesteckt
• SOAP erfüllt zwei Aufgaben:
– Methodenaufruf per XML basiertem RPC
– Datenaustausch per XML basiertem EDI
Prof. Dr. Nikolaus Wulff
Informatik II
35
SOAP Struktur
<?xml version="1.0"?>
<s:Envelope
xmlns:s="http://www.w3.org/2001/12/soap-envelope">
<s:Header>
</s:Header>
<s:Body>
</s:Body>
</s:Envelope>
• Ein SOAP Nachricht besteht ähnlich wie HTML aus
einem Header und einem Body eingebettet in einen
Umschlag (Envelope).
Prof. Dr. Nikolaus Wulff
Informatik II
36
Beispiel eine SOAP Nachricht
<?xml version="1.0"?>
<s:Envelope xmlns:s="http://www.w3.org/2001/12/soap-envelop
<s:Header>
<m:RequestID xmlns:m="http://www.lecture-db.de/soap">
a3f5c109b
</m:RequestID>
</s:Header>
<s:Body>
<m:DbResponse xmlns:m="http://www.lecture-db.de/soap">
<m:title value="DOM, SAX und SOAP">
<m:Choice value="1">Informatik</m:Choice>
<m:Choice value="2">Datenbanken</m:Choice>
</m:title>
</m:DbResponse>
</s:Body>
</s:Envelope>
Prof. Dr. Nikolaus Wulff
Informatik II
37
Apache SOAP RPC
• Ein Call wird mit Parametern per invoke an eine Server
URL+URI geschickt.
• Der entsprechende Server Aufruf erzeugt einen Response.
• Dieser wird als Rückgabewert der invoke Methode an den
Client zurückgegeben.
Prof. Dr. Nikolaus Wulff
Informatik II
38
Web Services
• Web Services sind nichts weiter als spezielle Web
Anwendungen (i.A. Servlets), die entsprechende
Nachrichten entgegennehmen und verarbeiten.
• In einer mehrschichtigen Architektur bilden die
Web Services lediglich eine dünne Fassade vor
bereits existierende Anwendungen, an die die
Nachrichten - nach einem eventuellen
Transformationsprozess - weiter gereicht werden.
• Web Services bieten eine einfache Integrationsmöglichkeit, mit HTTP als Nachrichtenprotokoll,
ohne weitere aufwendige Middleware installieren
zu müssen.
Prof. Dr. Nikolaus Wulff
Informatik II
39
EAI Herausforderungen für WS
• Um Anwendungsintegration mit Web Services zu
erreichen gilt es zwei generelle Probleme zu lösen:
– Moderne Anwendungen arbeiten objektorientiert,
Altanwendungen arbeiten transaktionsorientiert mit
entsprechenden Copy-Strecken als Structs. Die
SOAP/XML Nachrichten müssen in entsprechende
Formate der Anwendung transformiert werden.
– Altanwendungen sind nicht derart modular aufgebaut,
dass an beliebiger Stelle Methodenaufrufe erfolgen
können. Entsprechende Slots müssen eingebaut werden
werden.
Prof. Dr. Nikolaus Wulff
Informatik II
40
UML und Web Services
• Vernünftiger Weise werden die entsprechenden
Anpassungen und Services in UML modelliert.
• Die entsprechende Web Service Schnittstelle und
die Nachrichten werden mit der Web Service
Description Language (WSDL) deklariert.
• WSDL ist die Schema Definition für WS.
• Es zeigt sich jedoch, das SOAP/XML Nachrichten
nicht adäquat in UML abgebildet werden können.
• Objekte werden meist mit UML modelliert und
deren Status muss dann in ein XML Format transformiert werden.
Prof. Dr. Nikolaus Wulff
Informatik II
41
Service Fassade
• Die eigentlichen SOAP Nachrichten werden hinter
einer Abstraktionsschicht verborgen.
• Clients verwenden eine Proxy Instanz, welche
entsprechende parametrisierte Methoden anbietet
und die Nachrichten vor dem Versandt aufbereitet.
• Serverseitig werden die XML Nachrichten wieder
ausgepackt und in Objekte der jeweiligen
Zielplattform transformiert.
• Es gilt ein Optimum zwischen Nachrichtengröße
und Häufigkeit des Nachrichtenversands zu finden
Prof. Dr. Nikolaus Wulff
Informatik II
42
Ein- und Auspacken...
• Axis ist eine SOAP
Implementierung für
Web Services.
• (De) Marshalling ist bei
Client und Server
symmetrisch aufgebaut
Prof. Dr. Nikolaus Wulff
Informatik II
43
SOAP und Web-Services
• Auch das Simple Object Access Protokol (SOAP),
zum Remote-Aufruf entfernter Dienste bedient sich
des XML Formats als Aufsatz auf HTTP.
• Web-Services sind Dienste die per XML/SOAP
Datenaustausch über TCP/IP aufgerufen werden.
• Meist wird mit XSLT entsprechender „Glue-Code“
generiert, um Methoden (der Java Objekte) per HTTP
Protokoll ansprechen zu können.
• Es erscheint so, als lägen diese Objekte im lokalem
Adressraum der eigenen virtuellen Maschine.
• Lediglich das Laufzeitverhalten ist anders...
Prof. Dr. Nikolaus Wulff
Informatik II
44
Weitere XML Beispiele
• Aktuelle News-Feeds, die per Rich Site Summary
bzw. Really Simple Syndication (RSS) abonniert
werden, sind XML basierte Dienste.
• Viele Build-Skripte, wie z.B. für Ant oder Maven,
basieren auf XML Dokumenten.
• Deployment Deskriptoren für Web-Anwendungen
oder Java Enterprise Applikationen werden in XML
verfasst.
• XML eignet sich, um Betriebssystem unabhängig und
und sprachneutral Nachrichten auszutauschen oder
Dienste verteilt aufzurufen.
Prof. Dr. Nikolaus Wulff
Informatik II
45
Herunterladen