DevTrain Startseite Advanced Developers Conference vom 14.-15. Februar 2011  
  
  
SUCHEN:  
ARTIKEL ONLINE: 525   

Kategorien
.NET
Datenbanken
Web
XML

Allgemein
Camp
Foren
Events
Persönliche Einstellungen
Registrieren
Prämien Shop
Kontakt
Impressum
Über DevTrain

Autoren


   Autor: Hannes Preishuber Artikel Drucken
        
XML Datentransfer

Wie der Leser (auch aus Devtrain) weis, ist XML ein Meta Daten Format. Erst mit der Festlegung von Regeln ( auch Schemas oder DTDs genannt) wird daraus ein Datenformat oder auch einen Schemasprache. Nun müssen diese Daten transportiert werden. Allgemein herrscht der Irrtum vor, das dies meist als "XML Datei" geschieht. Grundsätzlich ist es XML egal wie es seinen Weg findet.

Meist wird aber irgendein Protokoll des Internets verwendet und hier vor allem SMTP (MAIL), FTP ( File Transfer) und HTTP (Filtransfer). Der Ideale Fall ist es aber, wenn die Daten nicht als File sondern als serialisierter Stream fliessen. Für das empfangen von Daten steht das normale HTTP Protokoll offen. So kann in ein DOM Objekt über eine URL ein XML Stream geladen werden. Der Sender ist dabei ein Programm, das die Daten "on the fly" erzeugt. So könnte z.B. der SQL Server direkt per URL angesprochen werden.

Dim xml As New MSXML2.DOMDocument
 xml.async=true
 xml.load "http://www.fernerserver.de/sql/abfrage.asp?query"

 Es steht zwar im Code, aber achten Sie immer darauf, das Sie DOM asynchron nutzen, da ansonsten die Anwendung weitermacht ohne die Daten zu haben!

Die offene Frage ist jetzt, wie bringe ich die Daten zurück an den "fernenserver"?

Dafür gib es in der MSXML.DLL ein Objekt Namens XMLHTTP. Damit lassen sich quasi XML Daten per Stream und Post  zum Server laden. Am Server muss allerdings jemand diese Daten in Empfang nehmen und etwas damit tun. Wir nennen das hier Listener. Der Listener lauscht auf Port 80 und wird normalerweise als Erweiterung des Webserver implementiert. Dies könnten bei MS eine ISAPI DLL sein oder auch eine ASP Seite. Selbst mit Pearl und Linux lässt sich ein Listener bauen.

Der Sender kann mit jeder Programmierpsrache gebaut werden. Wir nehmen eine ASP Seite.
Dim http As New MSXML.XMLHTTPRequest
 http.open "POST", "http://www.fernerserver.de/sql/listener.asp", False
 http.send xml

 Auf der Empfänger Seite lauert unser Listener

<%
' Get XML data from client
dim xmlReq
set xmlReq = server.createobject("Microsoft.XMLDOM")
xmlReq.load request

%>

In unserem Beispiel wird der Stream in ein DOM geladen. Sie könnten aber genauso per SAX direkt parsen und in eine DB schreiben. Wenn Sie Ihrem Sender auch eine Antwort senden wollen, können Sie dies per ContentType tun. Am ende schreiben Sie einfach den Inhalt des DOMs in den Response Stream.

set xmlResp = server.createobject("Microsoft.XMLDOM")
xmlResp.loadXML "<result>" & time() & "</result>"
response.ContentType = "text/xml"
xmlResp.Save response

Wir sind hier schon ganz nahe an einer Plattformübergreifenden Kommunikation. Mit SOAP gibt es ein Protokoll, das es erlaubt, Komponeten genau auf diese Art aber standardisiert über das Web zu nutzen.


DevTrain Camp - Schneller zum .NET 3.5 Developer
 
Verwandte Artikel      Verlinkte Dokumente
    Keine verknüpften Dokumente
    Keine Links vorhanden

  Erfasst am: 18.04.2001
  Gültig bis: 18.05.2001
11 Ratings
Bewertung: 78,2%
schlecht    sehr gut  

 
© Copyright 2007 ppedv AG